Edit online

参数配置

4 Dec 2024
Read time: 2 minute(s)
Luban-Lite 中含有 BootLoader 和 RTOS 两个固件的编译配置,以 D12x 产品线为例,如下所示:
  • d12x_demo68-nor-xip_rt-thread_helloworld_defconfig

  • d12x_demo68-nor-xip_baremetal_bootloader_defconfig

下文以 D12x 编译配置为例演示 XIP 方案的配置步骤:
  1. 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 BootLoadermake RTOS 的缩写。在 lunch RTOS 中配置 Defconfig 后,会自动编译相关的 BootLoader 。

  2. 执行 scons --menuconfig命令进入 menuconfig 的功能配置界面,按如下选择,使能 XIP 引导。
    注:

    由于 XIP 启动依赖 NOR Flash,[*] XIP Boot[ ] NOR Boot 只能二选一。

    BootLoader options  --->
       Commands  --->
           [ ] NOR Boot
           [*] XIP Boot
    
  3. 配置 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
  4. 配置 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。
  5. 使用 ITB 打包格式打包应用,头信息固定大小为 0x800。

    如果在客制化方案中,没有更换了打包格式,或者没有打包,则根据实际情况加上对应的偏移.

  6. 修改 tools/scripts/aic_build.py 文件,实现 .data Section 在编译制作 os.img 时进行分段打包。
  7. 修改 bsp/artinchip/sys/d13x/link_script/gcc_aic.ld.S 文件,指定 .text , .data , .bss , .rodata Section 存放的位置。