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
段中。