这里的分区只是为了操作的方便。假设有个分区 kernel,其地址区间为 0x20000~0x320000,其大小为 0x300000
在没有分区的情况下,对这块区间的操作如下:
nand erase 20000 300000 擦除操作
nand write 20000000 20000 300000 写操作
nand read 20000000 20000 300000 读操作
而有了分区的情况下,操作将变得非常简单,如下(其中 kernel 为分区名)
nand erase.part kernel 擦除操作
nand write 20000000 kernel 写操作
nand read 20000000 kernel 读操作
在 tiny210.h 中,已经有 NAND 分区的例子,我们直接修改:
256K 给 u-boot
128K 给 params,即环境变量
3M 给内核
剩余的全部给根文件系统
这里指定了环境变量在 NAND 的分区所在的地址空间,在 tiny210.h 中定义了其所在的地址和大小
下载到sd卡中:
执行 mtdparts 查看分区信息,提示非法的 mtd 设备,这是由于之前将 u-boot 中默认的分区信息写入了 NAND 的环境变量, 说以读取失败,我们执行 mtdparts default ,重新初始化分析信息,然后再次执行 mtdparts 就可以正常读取了
注意:这里执行了 mtdparts default 初始化分析信息,还必须执行 saveenv 将其保持到 NAND,然后重启再次查看分区信息,一切正常 :
现在可以使用分区操作 nand 了:
时间: 2024-10-09 22:29:10