什么是NOR Flash 文件系统 NOR flash 文件系统就是以nor flash为存储介质的文件系统,常用的是JFFS2格式,具有永久存储,动态更新的特点。 什么是ramdisk 文件系统 ramdisk文件系统是基于内存的文件系统,存储介质是内存,其特点是 one-shot,就是一次运行,系统重启文件就会丢失,但是访问速度快。
两种文件系统在嵌入式环境中都有广泛的应用,本文着重介绍Nor Flash文件系统在Linux中的支持和应用步骤。 1)??首先,必须配置Linux内核包含MTD组件,包含MTD使Linux能识别flash分区(partition),那么为什么需要进行flash分区呢?原因是因为 flash除了作为根文件系统外,常常还用做启动设备(boot device),还需要保存boot loader,启动参数和Linux 内核映像,如下图所示。 这些分区不属与根文件系统的一部分,所以一般不会被文件误操作破坏。 如果需要在linux下升级对应分区的image,可以使用设备文件进行操作,下面有 更详细的描述。 [img][/img] 配置好MTD后,需要配置好系统的flash 分区,就是每个分区的大小,具体修改文件在drivers/mtd/maps下。 static struct mtd_partition flash_partitions_64m[] = { ? ? ? ? { ? ? ? ? ? ? ? ? .name =? ?"fs", ? ? ? ? ? ? ? ? .offset = 0x0, ? ? ? ? ? ? ? ? .size =? ?0x01f00000, ? ? ? ? }, ? ? ? ? { ? ? ? ? ? ? ? ? .name =? ?"kernel", ? ? ? ? ? ? ? ? .offset = 0x01f00000, ? ? ? ? ? ? ? ? .size =? ?0x00200000, ? ? ? ? { ? ? ? ? ? ? ? ? .name =? ?"uboot", ? ? ? ? ? ? ? ? .offset = 0x03f00000, ? ? ? ? ? ? ? ? .size =? ? 0x00100000 ? ? ? ? } }; 2) make??生成内核映像 3) 生成rootfs映像,基于JFFS2文件格式,具体步骤在后续章节中会详细介绍其步骤。 4) 在Uboot启动参数中指定根文件系统对应的flash分区,根据步骤1)我们共有三个flash分区,mtdblock0~mtdblock2. mtdblock0是根文件系统。 console=/dev/ttyS0,115200n8 root=/dev/mtdblock2 5) 下载并启动内核,cat /proc/mtd能看到相应分区。 6) 创建一个文件,掉电重启后会发现该文件依然存在,这是和ramdisk不同的。 |
生成cramfs image
mkfs.cramfs
mount -t cramfs -o loop cramfs.img /mnt
copy files to /mnt
umount
programming cramfs image to NOR flash
两种常用方式:网络下载和离线编程器,根据前一贴中的分区表起始地址分别烧入对应的image。地址一定要对,不然uboot找不到内核或内核找不到根文件系统。
挂载cramfs
如何生成JFFS2 文件系统
mkfs.jffs2 -d Directory -o jffs2.img
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|