嵌入式系统的flash存储器
来源: 互联网 发布时间:2016-06-04
本文导语: 从各个方面了解下,包括驱动,结构,格式化等吧。大家都说下吧。 | 基于 mtd 的 flash 分区是虚拟的, 分区信息存储在 uboot 或者 kernel 中 。 在系统 启动后 可以执行 cat /proc/mtd ...
从各个方面了解下,包括驱动,结构,格式化等吧。大家都说下吧。
|
基于 mtd 的 flash 分区是虚拟的,
分区信息存储在 uboot 或者 kernel 中 。
在系统 启动后 可以执行
cat /proc/mtd 来查看分区信息。
分区信息存储在 uboot 或者 kernel 中 。
在系统 启动后 可以执行
cat /proc/mtd 来查看分区信息。
|
flash 的格式化等需要使用 mtd-util 工具包。
|
env = getenv("mtdparts");
if( !env )
setenv("mtdparts","mtdparts=NAND:1m@0(u-boot),4m(kernel-1),4m(kernel-2),128m(rootfs-1),128m(rootfs-2),8m(cfg),-(data)");
在 u-boot中flash的分区信息就存储在 mtdparts 环境变量中。
通常情况下我们并不需要在 uboot 中对flash 进行分区,只有当 flash中需要支持文件系统时,才需要在uboot中对 mtd 进行分区。
uboot 中通常都 是直接对flash 地址进行操作。
if( !env )
setenv("mtdparts","mtdparts=NAND:1m@0(u-boot),4m(kernel-1),4m(kernel-2),128m(rootfs-1),128m(rootfs-2),8m(cfg),-(data)");
在 u-boot中flash的分区信息就存储在 mtdparts 环境变量中。
通常情况下我们并不需要在 uboot 中对flash 进行分区,只有当 flash中需要支持文件系统时,才需要在uboot中对 mtd 进行分区。
uboot 中通常都 是直接对flash 地址进行操作。
|
|
你想知道片内的flash还是片外的啊,片内的是norflash,片外的是nandflash,两者各有区别,也各有用途,在嵌入式领域必不可少。
|
nor flash的读的速度比nand flash更快,但nand flash的写入速度更快
另外好像它们的写入次数也是不一样的,而且一个读写时的数据块的基本大小单位是
不同的。
另外好像它们的写入次数也是不一样的,而且一个读写时的数据块的基本大小单位是
不同的。
|
比如 uboot 支持 jffs 文件系统。
你可以看到 common 目录中的 cmd_jffs2.c 文件中对分区的处理。
你可以看到 common 目录中的 cmd_jffs2.c 文件中对分区的处理。