10.1.2. 参数配置
10.1.2.1. 一键配置编译
M3方案中,ZX-RTT 关于 Bootloader 和 RTOS 两部分固件的编译配置:
ZX7D0_bootloader_defconfigZX7D0_rt-thread_defconfig
在 ZX-RTT 根目录下执行以下命令即可编译得到 XIP 启动固件
source onestep.sh
lunch ZX7D0_rt-thread_defconfig
mb
小技巧
mb 该命令是 make Bootloader  和 make RTOS 的缩写, 在 lunch RTOS 的配置 Defconfig 后,会自动编译相关的 Bootloader 。
10.1.2.2. XIP相关配置介绍
10.1.2.2.1. Bootloader 相关
Bootloader 阶段需要使能 XIP 启动指令,并配置 NOR Flash 的 XIP 相关命令。
10.1.2.2.1.1. XIP启动支持列表
NOR Flash 的 XIP 相关命令配置位置:
bsp/zx/drv_bare/spinor/aic_flash_xip_def.c
ZX-RTT 已支持 XIP 启动的 NOR Flash:
型号  | 
ID  | 
|---|---|
ZB25VQ128  | 
0X5E4018  | 
ZB25VQ64  | 
0X5E4017  | 
W25Q64CV  | 
0xEF4017  | 
GD25Q128E  | 
0xC84018  | 
XT25F64B-S  | 
0xB4017  | 
XT25F128B  | 
0xB4018  | 
FM25Q64  | 
0xA14017  | 
W25Q128JVSIQ  | 
0xEF4018  | 
GD25Q64ESIGR  | 
0xC84017  | 
ZD25Q64B  | 
0xBA3217  | 
10.1.2.2.1.2. 使能XIP引导
使能 XIP 引导命令,在  ZX-RTT  根目录下执行 source onestep.sh 并 lunch 相关 Bootloader 配置文件,
再执行 scons --menuconfig,进入 Menuconfig 的功能配置,在 SDK 的配置界面中,进行下列的选择:
Bootloader options  --->
   Commands  --->
       [ ] nor boot
       [*] xip boot
备注
[*] xip boot 与 [ ] nor boot 应该只选其一,因为 XIP 启动也是依赖 NOR Flash.
10.1.2.2.2. RTOS 相关
RTOS 是在 NOR Flash 上运行的代码,其中包括 .text , .data , .bss , .rodata Section 需要在链接脚本中指定配置,
由于 XIP 模式下的 NOR Flash 是只读操作,因此 .data Section 需要在编译制作 os.img 时,需要分段打包,
相关的编译打包脚本也需要做调整, 在 ZX-RTT 中,用户可通过 Menuconfig 来配置相关信息。
10.1.2.2.2.1. 配置使能
CONFIG_AIC_QSPI0_DEVICE_SPINOR=n    //关闭 QSPI0 的相关设备
CONFIG_AIC_XIP=y                    //使能 XIP,链接脚本中与编译脚本中需要依赖该宏
CONFIG_AIC_XIP_FW_OFFSET=0x40100    //配置 XIP 固件的入口地址在 XIP 映射地址的偏移
备注
CONFIG_AIC_XIP_FW_OFFSET=0x40100,该偏移值根据分区表中的 os.img 固件的偏移+ 启动镜像头部信息大小 计算得到的程序入口地址,partition_table.h可以获取 os.img 固件的偏移 信息AIC文档中心的 芯片手册 章节下 启动 的 BootROM 下有描述镜像格式,其中 HEAD1+HEAD2 大小是256 Bytes。
10.1.2.2.2.2. 相关文件
tools/scripts/aic_build.pybsp/zx/sys/m3/link_script/gcc_aic.ld.S
备注
aic_build.py 是编译相关,参考
mkimage_xip_postaction函数,实现.dataSection 在编译制作 os.img 时进行分段打包。gcc_aic.ld.S 对
.text,.data,.bss,.rodata存放的位置指定。