Linux移植添加norflash MTD分区
开发板上只有Nor Flash,所以为了实现层次文件系统,需要为Linux2.6.20增加Nor Flash MTD驱动支持。其实工作量并不大,因为已经有现成的程序可供参考。
MTD的驱动程序都集中在drivers/mtd里面。我们需要做的,仅仅是在drivers/mtd/maps下增加自己的分区表。因为有参考的代码,所以比较容易。
(1)构建配置选项
首先,根据edb7312.c构建自己的mtd分区表驱动(根据cfi_flagadm.c这个文件也可以奥,看情况吧!)。
|
$cd drivers/mtd/maps/ |
然后,修改drivers/mtd/maps/Kconfig,增加自己的配置选项。
|
//拷贝过EDB7312稍作修改即可 |
最后,修改Makefile,增加编译项目。
obj-$(CONFIG_MTD_EDB7312) += edb7312.o
obj-$(CONFIG_MTD_AT91RM9200) += at91rm9200.o
这样,自己建立的MTD分区表驱动就可以编译进内核了。
(2)修改分区表信息
因为第一步的工作中,at91rm9200.c实际上还是edb7312.c的内容,所以需要根据自己的开发板nor flash的配置做一下修改。
|
|
|
#include <linux/module.h> //mymtd为master mtd_info它不被添加到数组mtd_table[]中,它只用于初始化 //每一个分区的mtd_info。而后将每一个分区对应的mtd_info添加到数组mtd_table[] //供上层调用。MTD原始设备驱动层的主要工作就是向 mtd_table[]中添加mtd_info。 |
(3)配置内核
增加MTD,和相应的文件系统的支持。
Devices Drivers --->
Memory Technology Devices (MTD) --->
<*> Memory Technology Device(MTD) support
<*> MTD partitioning support
<*> Direct char device access to MTD devices
<*> Caching block device access to MTD devices
RAM/ROM/Flash chip drivers --->
<*> Detect flash chips by Common Flash Interface(CFI) probe
<*> Support for Intel/Sharp flash chips
Mapping drivers for chip access --->
<*> CFI Flash device mapped on AT91RM9200
File Systems --->
Miscellaneous filesystems --->
这里选择cramfs或者Jffs2的支持。
(4)编译,然后加载
make Image编译,然后制作成uImage。
这是JFFS2作为根文件系统的信息:
|
TOPDIR=$($(which pwd)) |
可以看到MTD分区信息。进入shell界面,然后查看/proc/mtd,如下:
|
AT91RM9200-NOR:0x00800000 at 0x10000000 |
可以看到加载是正确的。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)