u-boot中是没有什么分区表(一般磁盘会在最前面哪里有一个分区表和引导加载程序)这样的东西的,所谓的分区我们构架好之后,是在代码里写死的,在include/configs/mx6ul_14x14_evk.h(xxx.h)中,可以像下面那样添加
#define MTDIDS_DEFAULT "nand0=gpmi-nand"
#define MTDPARTS_DEFAULT "mtdparts=gpmi-nand:4m(u-boot),2m(u-boot-env),4m(logo),10m(kernel),2m(dtb),-(rootfs)"
这里就分好了四个分区,uboot启动如下打印显示:
Creating 6 MTD partitions on "gpmi-nand":
0x000000000000-0x000000400000 : "u-boot"
0x000000400000-0x000000600000 : "u-boot-env"
0x000000600000-0x000000a00000 : "logo"
0x000000a00000-0x000001400000 : "kernel"
0x000001400000-0x000001600000 : "dtb"
0x000001600000-0x000010000000 : "rootfs"
同时修改分区个数ubi.id=7:
"root=ubi0:rootfs rootfstype=ubifs ubi.mtd=7 ${mtdparts} rootwait rw
2018年07月03日
在IMX6UL平台上添加分区遇到了很多问题,现分析如下:
1.MTDPARTS_DEFAULT 此宏的分区个数要与ubi.id对应,注意mtd设备的分区号是从0开始的,所以这里的ubi.mtd = 5。
#define MTDPARTS_DEFAULT "mtdparts=gpmi-nand:4m(u-boot),2m(u-boot-env),4m(logo),10m(kernel),2m(dtb),-(rootfs)"
2.还因为SD卡烧写镜像的分区不对,需要重新用以下命令重新指定分区
sudo dd if=/dev/zero of=/dev/sdc bs=512 seek=1536 count=16
sudo dd if=u-boot.imx of=/dev/sdc bs=512 seek=2 conv=fsync
指定分区之后修改环境变量让其烧写启动,将autodownload_sd 默认的 0改为1
Environment size: 2585/2097148 bytes
TQIMX6UL => sete
setenv setexpr
TQIMX6UL => setenv autodownload_sd 1
TQIMX6UL => save
save - save file to a filesystem