社区
单片机/工控
帖子详情
keil 中 data区域的问题
LinuxStriver
2013-09-05 09:23:26
今天遇到一个很奇怪的问题,在keil中,在STC12C5A60S2下,写了很多函数,当在主函数中没有调用某些函数时,编译时:data=132,当加上某个函数调用时:data=65;对此,本人很不理解,请大神解答!
...全文
424
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
C
中
的
data
、b
data
、i
data
、x
data
等解释
除了上述类型,
Keil
C还支持b
data
存储类型,用于访问具有位寻址能力的特殊RAM
区域
。8051单片机具有位地址空间,能够直接访问和操作内存的单个位。b
data
类型允许程序员定义单个位变量,并通过sbit关键字来创建指向位...
keil
中
data
怎么设置成大一点的值
在
Keil
C51开发环境
中
,当你尝试定义一个大于110字节的数据变量时,可能会遇到编译错误,因为默认的数据区(
data
)是有限的,仅能容纳128字节的数据。51系列单片机的内存分为几个部分,包括内部直接寻址RAM、内部间接...
Data
From
Keil
to Excel (
keil
数据导出至excel)
本话题主要关注如何从
KEIL
环境
中
导出内存数据,并利用Excel进行进一步的处理和可视化,以便更好地理解和分析数据。 首先,
KEIL
在仿真运行时会生成内存映像,这些数据包含了程序执行过程
中
的变量值、堆栈信息等。...
KEIL
中
如何程序在 RAM
中
运行的示例程序
本示例程序主要讲解如何在
KEIL
中
配置项目,使得程序能够在RAM
中
运行,这对于某些需要快速响应或者内存受限的应用场景尤为重要。RAM
中
的程序执行相比Flash具有更快的启动速度和更高的灵活性。 首先,了解基本概念:...
Keil
软件仿真调试
Keil
软件仿真调试
Keil
软件仿真调试是一个集成了仿真、调试和开发环境的综合性工具。它提供了强大的调试功能,能够帮助...
Keil
软件仿真调试提供了强大的调试功能,帮助开发者快速定位和解决
问题
,提高开发效率。
单片机/工控
27,515
社区成员
28,799
社区内容
发帖
与我相关
我的任务
单片机/工控
硬件/嵌入开发 单片机/工控
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章