工具/软件:Code Composer Studio
您好,
我需要手动清除BSS和目标的远端部分(我无法使用cinit自动归零功能)
我在主函数中编写了这个代码
int main (void)
{
U16指示器;
U16尺寸;
U8* ADR;
// BSS RAM部分的零初始化
//size =(U16)_symval (&BSS_size);//不运行
大小=((U32)_symval (&BSS_END))-((U32)_symval (&BSS_start));
用于(Ind=0;Ind<大小;Ind++)
*((U8*)_symval (&BSS_start)+ Indd)= 0;
// Far RAM部分的零初始化
大小=((U32)&FAL_END)-((U32)&FAL_START);
ADR =(U8*)_symval(&F_start);
用于(Ind=0;Ind<大小;Ind++)
*ADR++=0;
在cmd文件中,我添加了以下声明
.far > SHRAM
运行_启动(fal_start)
运行结束(远端)
运行大小(fal_size)
和
.bss > CORE0_L2_SRAM_OTHER
运行启动(BSS_START)
运行结束(BSS_END)
运行大小(bss_size)
在地图文件中,使用正确的值创建符号
代码位于CORE0_L2_SRAM中(主地址为0x1083b580)。
为BSS部分编译和运行代码,但不适用于FAR部分:我收到以下错误消息:“#1.7003万-D: 从函数“main”重定位到符号“FAL_END”溢出; 28位重定位地址0xb7947e6太大,无法在15位无符号字段中进行编码(类型='R_C6000_SBR_U15_B'(11),文件="./main.obj",偏移= 0x0.0064万,节=".text") main.c /bbbm_foe_dp_dsp_cpu01 行125 C/C++问题"
请帮帮我。