linux-mtd 子系统 原始io MTD 工具
MTD核心 又库例程和数据结构组成
映射MAP驱动程序
nor芯片驱动程序
NAND芯片驱动程序
用户模块
用户空间 文件IO
内核空间
VFS 层
mtdblock
NANd芯片驱动程序 核心
MTD 层
NOR芯片驱动程序
硬件
NAND NOR
DRAM存储体-----嵌入式控制器-------引导装入程序(分区0)(bootloader) flash start
内核区(分区1) my kernel_start
文件系统(分区2) my file start flasn end
创建闪存映射,然后开始驱动程序初始化
nand 芯片驱动程序
CPU核心--------nand控制器(内部RAM)-------nand闪存
nand 芯片不是通过数据和地址线与CPU相连,而是通过NAND控制器与处理器相连。要从NAND闪存读取数据,CPU向NAND控制器发出一个读命令。控制器从请求的闪存位置将数据发送到内部RAM存储器,也是控制器一部分。数据传输以闪存芯片页大小为单位传输。一般情况下,闪存芯片越密集,页越大,当发送操作完成后,CPU从内部RAM读出NAND内容。除了控制器从内部RAM向闪存发送数据外,NAND闪存的写操作类似
寻址方式与众不同。NAND存储器使用特殊的驱动程序。MTD提供了这样的驱动程序,用于管理Nand存储数据。如果内核已经支持的芯片,只需启动一个NAND闪存驱动程序。编写NAND闪存控制器,需要Nand 闪存控制器芯片和nand闪存芯片。
nand闪存芯片不支持协议(CFI common flash interface )自动配置,手动配置
drivers/mtd/nand/nand_ids.c nand _flash_ids []表的入口添加定义,让MTD了解nand芯片的属性。