Petalinux使用QSPI FLASH引导启动
目录
1. 预分配Flash空间
1.1 大小估计
1.2 其他注意事项
2. 配置Flash分区
3. 配置各主要文件在Flash中的地址范围
4. 配置boot.scr的偏移
5. 修改U-Boot环境变量在Flash的偏移量
6. 配置设备树中的Flash
7. 开启对EXT4分区管理的支持(根据需要)
8. 编译u-boot
9. 编译全部文件
10. 打包BOOT.BIN
11. 修改boot.scr
12. 将对应文件扩充至各自分区的大小
13. 烧写Flash
14. 设置在SD卡模式下的RAMDISK(进阶、可选)
15. 设置SD卡模式下使用EMMC(进进阶)
1. 预分配Flash空间
根据生成的bit文件大小估算BOOT.BIN文件的大小,为Flash大概分配四个分区:boot、bootenv、kernel、bootscr,分别存放BOOT.BIN文件、u-boot的环境变量、内核文件(image.ub/zImage/uImage等)、启动脚本boot.scr。
1.1 大小估计
(所有的分区大小必须是Flash的erase size的整数倍,其中w25q256的是64K)
-
boot分区大小要比BOOT.BIN文件稍大,还没编译的话也可以由system.bit文件的大小估算,因为在BOOT.BIN中,比特流文件占的空间最大;
-
bootenv分区的大小可以很小,64K都够够的了;
-
kernel分区要用image.ub/zImage/uImage等内核文件的大小进行估计,也是要稍大于文件,具体是哪个得看自己选择的内核文件格式;
-
bootscr分区也可以很小,64K也够了;
-
最好记录下大小、起止地址,方便后续填信息,例子:
1.2 其他注意事项
-
bootenv分区是必须的,没有的话好像会出错;
-
在kernel分区可以没有,因为内核文件可以放在SD卡;
-
所有分区加起来不要超过Flash的总大小,w25q256为256Mbit,合32MB。
2. 配置Flash分区
-
petalinux-config --> Subsystem AUTO Hardware Settings --> Flash Settings
-
根据预分配Flash空间的规划进行分区的分配和命名:
3. 配置各主要文件在Flash中的地址范围
-
petalinux-config --> u-boot Configuration --> u-boot script configuration --> QSPI/OSPI image offsets
-
根据预分配Flash空间的规划进行配置,这里三对选项其实分别配置的是uImage/zImage/Image、ramdisk.cpio.gz.u-boot、image.ub文件的地址偏移和映像尺寸。像只是用image.ub的话改fit image offset就行了。
4. 配置boot.scr的偏移
-
petalinux-config -c u-boot --> ARM architecture --> Boot script offset
-
根据预分配Flash空间的规划进行配置;
-
但是这样修改会无效,也就是说修改后退出menu-config后&