Edit online

D13x 分散加载使用指南

SDK 默认代码分布

D13x系列芯片SRAM大小为1MBytes,PSRAM大小为8MBytes。发布的SDK默认配置是:系统运行时,代码段、rodata段、data段加载到SRAM_S0,而BSS段位于PSRAM_CMA(可参考bsp/artinchip/sys/d13x/link_script/gcc_aic.ld.S)。在系统启动阶段,bootloader是加载到SRAM的最后256 KB空间执行的,如下图所示:

../../../images/sram_s0.png

所以,加载到SRAM_S0的代码段、rodata段或data段不能超过768KB的大小,否则会覆盖bootloader,导致系统启动失败。

分散加载

在应用推广中,有的客户的代码量超过768KB,有的客户想把部分代码或数据放到PSRAM,为了实现不同的客户需求,在D13x中实现了分散加载功能。客户可以将代码段、rodata段、data段,或者是部分代码段或部分数据段加载到SRAM或PSRAM,由bootloader实现分散加载。
  1. 整段分散加载

    如果要把整个代码段,或整个rodata段或data段放到PSRAM,只需要修改D13x的链接脚本(bsp/artinchip/sys/d13x/link_script/gcc_aic.ld.S),然后重新编译工程即可(不需要重编bootloader)。下面以将text段加载到PSRAM为例说明。

    ../../../images/text_psram.png

    修改完成后,重新编译工程即可。将rodata段或data段加载到PSRAM方法与此相同。

  2. 部分分散加载

    如果要把代码段或数据段的一部分放到PSRAM,其余代码段或数据段仍运行在SRAM_S0,则改动稍微复杂一些。

    1. 利用attr属性定义需要加载到PSRAM的代码所属的段,示例如下:

      ../../../images/attr.png

      上述定义将 test_wavplay函数定义在.psram.code段内。

    2. 在链接脚本中添加如下的段描述,指定.psram.code段的链接地址

      ../../../images/psram_code.png

      将.psram.code段加载到PSRAM_CMA

    3. 重新编译工程即可