参数配置
-
d12x_demo68-nor-xip_rt-thread_helloworld_defconfig
-
d12x_demo68-nor-xip_baremetal_bootloader_defconfig
- 在 Luban-Lite 根目录下执行以下 sourceonestep.sh 命令并
lunch d12x_demo88-nor-xip_rt-thread_helloworld_defconfig
配置文件:
source onestep.sh lunch d12x_demo68-nor-xip_rt-thread_helloworld_defconfig mb
mb 命令是 make BootLoader 和 make RTOS 的缩写。在 lunch RTOS 中配置 Defconfig 后,会自动编译相关的 BootLoader 。
- 执行 scons --menuconfig命令进入 menuconfig 的功能配置界面,按如下选择,使能 XIP
引导。注:
由于 XIP 启动依赖 NOR Flash,
[*] XIP Boot
与[ ] NOR Boot
只能二选一。BootLoader options ---> Commands ---> [ ] NOR Boot [*] XIP Boot
- 配置 NOR Flash 的 XIP 相关命令。
NOR Flash 的 XIP 相关命令配置位置 bsp/artinchip/drv_bare/spinor/aic_flash_xip_def.c
Luban-Lite 已支持 XIP 启动的 NOR Flash:表 1. XIP 启动支持列表 型号 ID ZB25VQ128 0X5E4018 ZB25VQ64 0X5E4017 W25Q64CV 0xEF4017 GD25Q128E 0xC84018 XT25F64B-S 0xB4017 XT25F128B 0xB4018 FM25Q64 0xA14017 W25Q128JVSIQ 0xEF4018 GD25Q64ESIGR 0xC84017 ZD25Q64B 0xBA3217 - 配置 RTOS 相关信息。
RTOS 是在 NOR Flash 上运行的代码,其中包括 .text , .data , .bss , .rodata Section 需要在链接脚本中指定配置, 由于 XIP 模式下的 NOR Flash 是只读操作,因此 .data Section 需要在编译制作 os.img 时,需要分段打包, 相关的编译打包脚本也需要做调整,
CONFIG_AIC_QSPI0_DEVICE_SPINOR=n //关闭 QSPI0 的相关设备 CONFIG_AIC_XIP=y //使能 XIP,链接脚本中与编译脚本中需要依赖该宏 CONFIG_AIC_XIP_FW_OFFSET=0x40800 //配置 XIP 固件的入口地址在 XIP 映射地址的偏移(此处仅为示例)
-
CONFIG_AIC_XIP_FW_OFFSET=0x40800
入口地址的计算方式: 应用分区在 Flash 中的偏移 + 打包信息头的固定大小 0x800。 - image_cfg.json 中的分区表,可以计算出应用分区在 Flash 中的偏移值,此处为 0x40000。
-
- 使用 ITB 打包格式打包应用,头信息固定大小为
0x800。
如果在客制化方案中,没有更换了打包格式,或者没有打包,则根据实际情况加上对应的偏移.
- 修改 tools/scripts/aic_build.py 文件,实现 .data Section 在编译制作 os.img 时进行分段打包。
- 修改 bsp/artinchip/sys/d13x/link_script/gcc_aic.ld.S 文件,指定 .text , .data , .bss , .rodata Section 存放的位置。