打印

KEIL 中 rodata定义导致溢出问题

[复制链接]
1244|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
stpan|  楼主 | 2018-9-30 10:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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数据的地址后很容易导致溢出。
请教各位是什么原因,有没有解决方法。

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

8

帖子

0

粉丝