系列文章目录
Linux驱动学习(4) MTD字符驱动和块驱动1
Linux驱动学习(4) MTD字符驱动和块驱动2
Linux驱动学习(4) MTD字符驱动和块驱动3
文章目录
目录
系列文章目录
文章目录
前言
一、mtd字符设备是什么?
二、mtd字符驱动运行流程
1.初始化流程
2.mtd字符设备读写数据流程
总结
前言
前面介绍了mtd子系统的框架,接下来介绍mtd字符设备驱动
一、mtd字符设备是什么?
mtd字符设备和常规字符设备一样,都是在字符设备模块载入后,自动创建了/dev/mtdchar设备文件、主次设备号、以及设备操作方法,通过open/write/read/close等方法操作此设备文件就等于操作flash/磁盘分区,常用于分区升级。
二、mtd字符驱动运行流程
1.初始化流程
①,设备号和设备文件的创建
字符设备主要通过两个模块的初始化完成mtdchar字符设备设备号的创建和设备文件的创建,mtd字符设备模块仅仅创建设备号,实际的flash驱动完成设备文件的创建,设备文件根据分区的个数来创建/dev/mtd到/dev/mtd9,分区的信息从平台设备从获取,这个平台设备可以是设备树,也可以是代码中注册平台设备模块实现。
②,mtd_info和nand_chip结构体的初始化
两个函数的初始化,默认函数是在nand_scan_ident和nand_scan_tail完成,其他的需要定制化的在flash驱动中完成。
③,mtd分区表
分区信息主要是通过设备树或者平台设备模块保存。
2.mtd字符设备读写数据流程
从这个时序可以看出,mtd写数据,最终是通过具体flash驱动的硬件控制函数实现的。
总结
mtd字符设备驱动主要要了解mtd_info和nand_chip的函数指针赋值流程,不同结构体之间的联系。