uboot移植(十一)给 NAND 添加分区

时间:2024-04-06 20:40:28
这里的分区只是为了操作的方便。 假设有个分区 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 kerne
nand read 20000000 kernel
擦除操作
写操作
l
读操作
smdkv210.h 中,已经有 NAND 分区的例子,我们直接修改

uboot移植(十一)给 NAND 添加分区

256K u-boot
128K
params,即环境变量
3M 给内核
剩余的全部给根文件系统
这里指定了环境变量在
NAND 的分区所在的地址空间,在 smdkv210.h 中定义了其所在的地址和大小
uboot移植(十一)给 NAND 添加分区

两者需一致。
效果如下:
uboot移植(十一)给 NAND 添加分区

执行 mtdparts 查看分区信息,提示非法的 mtd 设备,这是由于之前将 u-boot 中默认的分区信息写入
NAND 的环境变量, 所以读取失败,我们执行 mtdparts default ,重新初始化分析信息,然后再次
执行
mtdparts 就可以正常读取了。
uboot移植(十一)给 NAND 添加分区

注意:这里执行了 mtdparts default 初始化分析信息,还必须执行 saveenv 将其保持到 NAND,然后
重启再次查看分区信息,一切正常

uboot移植(十一)给 NAND 添加分区

现在可以使用分区操作 nand
uboot移植(十一)给 NAND 添加分区