Flash设备驱动
Flash 设备驱动
一.MTD
Linux系统中,用了MTD系统来建立flash对linux的接口。
MTD---memory technology device,内存技术设备。
MTD可以分为四个层:
1, 硬件驱动层:最底层,负责flash硬件设备的读、写、擦除。
Nor flash 芯片驱动位于/driver/mtd/chips/下
Nand flash驱动程序位于/driver/mtd/nand/下
2, MTD原始设备层:主要指mtdcore.c 。包含了通用代码和flash的分区情况。这里定义了分区情况mtd_table[].
3. MTD设备层: 指mtdchar.c 和 mtdblock.c 。MTD可以被定义成字符设备或块设
MTD字符设备,通过注册一系列file_opereation函数(lseek,open, close , read , write , ioctl ), 可实现对MTD设备的读写和控制。
MTD块设备,定义了块设备结构,mtdblk_dev。并声明了一个mtdblk_dev 类型的指针
数组mtdblks。
4.设备节点。 /dev/mtd0 等。
MTD字符设备主设备号:90
MTD块设备主设备号:31
常用代码:
mtd.h
struct mtd_info 描述MTD原始设备的数据结构。---------
mtdparts.c
struct mtd_part 描述分区
add_mtd_partition()
del_mtd_partition
partition.h
struct mtd_partition 分区内容 --------------------------
mtdcore.c
struct mtd_table[] 分区表。
add_mtd_device()
del_mtd_device()
mtdchar.c
mtdblock.c
二.NOR flash 驱动
map_info
do_map_probe()
三. Nandflash 驱动
drivers/mtd/nand/nand_base.c
struct nand_chip