7.33. 源文件变量符号重定位到指定段的方法

Overview

介绍如何将C程序内的变量重定位到指定段。

7.33.1. 应用示例

示例演示:

首先进入想要指定的.C源文件中,比如 apps/demo/demo_DevKitBoard/app_main.c ,在 app_main.c 的头部加上如下设置:

#pragma bss_seg(".appmain_bss")
#pragma data_seg(".appmain_data")
#pragma const_seg(".appmain_const")
#pragma code_seg(".appmain_code")
#pragma str_literal_override(".appmain_str")

上述代码主要是用来指定bss,data等变量在ld文件中存放的节,可根据自身需求定义节名称。示例中将节名称定义为 appmain_xx (xx分别为bss,data,const,code,str)。

接着进入 cpu/wl82/sdk_ld.c 来指定 appmain_xx 存放的段。比如本示例中将 .appmain_data.appmain_const.appmain_str.appmain_code 节指定到 .ram0_data 中,将 .appmain_bss 节指定到sdram的 .bss 段中。

再在 app_main.c 中,分别定义:一个未初始化的全局数组、一个已初始化的全局数组、const常量一个字符串,并 查看使用细节,即每个函数、变量的存放位置和大小

筛选出 demo_DevKitBoard/app_main.c 的变量。

其中,task_info_table为const数组,ts_array_data为已初始化的全局数组,ts_string为字符串,均被指定到 ram0_data 中,而ts_array_data为未初始化的全局数组,被指定到 .bss 段中。