19.3 Nand Flash驱动
如图 19.5 所示,Linux 内核在 MTD的下层实现通用的 NAND 驱动(主要通过 drivers/mtd/nand/
nand_base.c 文件实现),因此芯片级的 NAND 驱动不再实现mtd_info 中的 read()、write()、read_oob()、write_oob()等成员函数,而主体转移到 nand_chip 数据结构。

MTD 使用 nand_chip 数据结构表示一个 NAND Flash 芯片,这个结构体中包含了关于 NAND Flash 的地址信息、读写方法、ECC 模式、硬件控制等一系列底层机制,其定义如代码清单 19.10所示。
代码清单 19.10 nand_chip 结构体
include/linux/mtd/nand.h
struct nand_chip {
void __iomem *IO_ADDR_R;
void __iomem *IO_ADDR_W;
uint8_t (*read_byte)(struct mtd_info *mtd);
u16 (*read_word)(struct mtd_info *mtd);
void (*write_buf)(struct mtd_info *mtd, const uint8_t *buf, int len);
void (*read_buf)(struct mtd_info *mtd, uint8_t *buf, int len);
int (*verify_buf)(struct mtd_info *mtd, const uint8_t *buf, int len);
vo

最低0.47元/天 解锁文章
1906

被折叠的 条评论
为什么被折叠?



