本帖最后由 stpan 于 2018-9-30 10:19 编辑
程序需要用到内部flash作为参数表使用。由于参数比较多,所以自定义了一个区间来使用
采用如下命令
#pragma arm section rodata =".ARM.__at_0x801f000"
//中间为定义的参数表
const unsigned char a=20;
...
...
#pragma arm section code
这样会导致编译时溢出。
如果不指定地址,程序不会溢出,看了一下MAP文件,定义的地址并没有错,但是RO-DATA很大
加了定义后RO-DATA后编译出来的大小如下
Total RO Size (Code + RO Data) 126992 ( 124.02kB)
Total RW Size (RW Data + ZI Data) 4312 ( 4.21kB)
Total ROM Size (Code + RO Data + RW Data) 127240 ( 124.26kB)
不加定义编译出来的大小
Total RO Size (Code + RO Data) 9848 ( 9.62kB)
Total RW Size (RW Data + ZI Data) 4312 ( 4.21kB)
Total ROM Size (Code + RO Data + RW Data) 10096 ( 9.86kB)
这样定义了flash数据的地址后很容易导致溢出。
请教各位是什么原因,有没有解决方法。
|