社区
单片机/工控
帖子详情
keil 中 data区域的问题
LinuxStriver
2013-09-05 09:23:26
今天遇到一个很奇怪的问题,在keil中,在STC12C5A60S2下,写了很多函数,当在主函数中没有调用某些函数时,编译时:data=132,当加上某个函数调用时:data=65;对此,本人很不理解,请大神解答!
...全文
491
8
打赏
收藏
keil 中 data区域的问题
今天遇到一个很奇怪的问题,在keil中,在STC12C5A60S2下,写了很多函数,当在主函数中没有调用某些函数时,编译时:data=132,当加上某个函数调用时:data=65;对此,本人很不理解,请大神解答!
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
qllaoda
2013-09-14
打赏
举报
回复
KEIL会做RAM的覆盖分析优化,这样可以减少RAM的消耗,而没有被调用的函数还是会被保留,而且不参与优化分析,所以这些函数占用的RAM无法被优化,导致RAM消耗反而更大。这个跟data区没有关系,任何区域的变量都是如此。
qgq8312
2013-09-07
打赏
举报
回复
你加的函数是不是内部占用了很大的RAM,导致溢出了?
rszqy
2013-09-06
打赏
举报
回复
C51会把没有调用的函数当作中断函数,而且会给中断函数里的的局部变量预留空间,就像全局变量一样给分配了内存,所以出现这种情况就没什么奇怪了.
lbing7
2013-09-06
打赏
举报
回复
这种不奇怪,只是和编译器对资源的分配策略有关
dceacho
2013-09-05
打赏
举报
回复
对于一些没用到的函数,其消耗的资源(RAM)keil出于安全考虑(可能是这个原因)是仍然保留的,所以如果很多函数写了但没用则会消耗掉大量的RAM,相反,你在无关紧要的地方随便调用一下就能大幅度消减RAM消耗. 在ARM的MDK中one ELF section per function已经可以解决这个问题
To_be_sky
2013-09-05
打赏
举报
回复
keil编译时有几个data。要先搞清楚每个data的意思。 你说的data是不是用到的变量数?
青松2
2013-09-05
打赏
举报
回复
自动优化掉了?
keil
中
51单片机变量设置过多引发地址错误的处理方法
在
keil
中
我们编写51程序的时候可能会遇到下图
中
的错误!翻译过来意思大概是变量地址超出的
问题
; 主要
问题
是我们在C51单片机的“
data
”数据区写入的变量过多;用STC12C5A60S2举例,这个芯片的
data
区是不能超过128的;目前我这个是超过了,所以会报错; 那处理这个的方案是什么呢?这个时候我们需要设置一下
keil
的配置,把变量信息存储在x
data
中
;x
data
是什么意思,这个可以自己百度; 集体配置步骤如下图 ...
【单片机】
keil
编译后的
data
\x
data
\code
先做一个实验,对比一下。 1、第一次编译: 2、在main()函数
中
添加 char test1[10]={0}; x
data
char test2[5]={0}; 再次编译: 3、在其他函数
中
定义局部变量,编译后
data
和x
data
是不会改变的,有兴趣可以验证。 4、
keil
memory mode是什么? Small:变量存储在内部ram里; Comp...
Keil
编译出现
keil
c error C183: unmodifiable lvalue错误
unmodifiable lvalue:不可修改的左值。lvalue:是"left variable value"的简写。 原因:估计是使用了code定义变量,code 定义的变量值是写入rom的,是不能够修改的。在编程时应注意这个
问题
。 解决:去掉code关键字或者换成其他关键字比如x
data
code是
keil
C51里面的关键字,一般用于定义常量数组,意思是告诉编译说把这个数组放在ROM存储。使用ROM(程序存储器)的好处是加快读取速度,不占用系统资源。 unsigned char code tabl
51 单片机
data
i
data
x
data
使用
该篇文章只提使用,先不详细讲解,使用的原因就是自己写的代码 ROM 超了!!!新建工程默认使用
data
Keil
配置如下图。
Keil
C51开发必看:详解
data
/x
data
/b
data
内存分配陷阱与避坑指南
本文深入解析
Keil
C51开发
中
的
data
/x
data
/b
data
内存分配陷阱,提供针对51芯片的高效避坑指南。通过真实案例揭示
Keil
编译器的隐藏规则,分享内存优化策略和调试技巧,帮助开发者解决
data
溢出、x
data
访问异常等典型
问题
,提升嵌入式开发效率。
单片机/工控
27,522
社区成员
28,796
社区内容
发帖
与我相关
我的任务
单片机/工控
硬件/嵌入开发 单片机/工控
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章