概述:
对于我们写驱动的来说,nand Flash、norFlash 等常见设备的驱动内核已经帮我们是实现好了,我们只需要在板级文件或平台文件中对分区表信
息进行修改(如arch/arm/match-s3c24xx/mach-jive.c)。
针对不同的CPU,根据nand控制器时序要求,微改一下最底层操作硬件的函数如(drivers/mtd/nand/s3c2410.c中的一些初始化函数)
层次:
![](//img-blog.csdn.net/20170220153352466?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDI0MzMwNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
norFlash驱动:
在mtd基础上又做了一层抽象,对于我们写驱动的,不用过分关心mtd的细节,只要定义一个map_info,再调用do_map_probe()即可。
重要的结构体:
![](//img-blog.csdn.net/20170220160938954?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDI0MzMwNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
实例:
内核源码drivers/mtd/maps/physmap.c
![](//img-blog.csdn.net/20170220161515300?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDI0MzMwNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
nandFlash驱动:
在mtd基础上又做了一层抽象,对于我们写驱动的,不用过分关心mtd的细节,只要定义一个nand_chip,
初始化其中的操作方法(当然,这些操作方法不赋值也是可以的将会使用默认的nand_base.c中的相应方法)。
将这个nand_chip作为mtd_info的私有数据域,最后调用nand_scan().
重要的结构体:
![](//img-blog.csdn.net/20170220163610831?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDI0MzMwNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
实例:
`内核源码 drivers/mtd/nand/s3c2410.c
![](//img-blog.csdn.net/20170220170711730?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDI0MzMwNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)