D13x 分散加载使用指南
SDK 默认代码分布
D13x 系列芯片 SRAM 大小为 1MBytes,PSRAM 大小为 8MBytes。发布的 SDK 默认配置是:系统运行时,代码段、rodata 段、data 段加载到 S0,而 BSS 段位于 PSRAM_CMA(可参考 bsp/artinchip/sys/d13x/link_script/gcc_aic.ld.S)。在系统启动阶段,bootloader 是加载到 SRAM 的最后 256 KB 空间执行的,如下图所示:
所以,加载到 S0 的代码段、rodata 段或 data 段不能超过 768KB 的大小,否则会覆盖 bootloader,导致系统启动失败。
分散加载
- 整段分散加载
如果要把整个代码段,或整个 rodata 段或 data 段放到 PSRAM,只需要修改 x 的链接脚本(bsp/artinchip/sys/d13x/link_script/gcc_aic.ld.S),然后重新编译工程即可(不需要重编 bootloader)。下面以将 text 段加载到 PSRAM 为例说明。
修改完成后,重新编译工程即可。将 rodata 段或 data 段加载到 PSRAM 方法与此相同。
- 部分分散加载
如果要把代码段或数据段的一部分放到 PSRAM,其余代码段或数据段仍运行在 S0,则改动稍微复杂一些。
-
利用 attr 属性定义需要加载到 PSRAM 的代码所属的段,示例如下:
上述定义将 test_wavplay 函数定义在.psram.code 段内。
-
在链接脚本中添加如下的段描述,指定.psram.code 段的链接地址
将.psram.code 段加载到 PSRAM_CMA
-
重新编译工程即可
-