5293|8

80

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

请教#define __savedata __attribute__ ((__section__ (".save.data"))) [复制链接]

#define __savedata __attribute__ ((__section__ (".save.data")))

然后定义一个变量,类型 __savedata ucTemp,我想请教一下,__savedata 有什么作用?谢谢!

假设程序里面设定ucTemp=1;系统断电,刚上电之后,就读取ucTemp的值,那么ucTemp值是等于1,还是用户设定的值(用户是可以通过菜单改变ucTemp的值的),我是做TV芯片,描述不清楚,请大家见晾!

最新回复

非常谢谢!  详情 回复 发表于 2008-11-5 14:41
点赞 关注

回复
举报

74

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
#define __savedata __attribute__ ((__section__ (".save.data")))

__savedata ucTemp ----定义了 ucTemp的存储类型是save.data类型, 连接的时候会有.save.data这样一个数据段, ucTemp也在里面. 如果有map文件应该可以看到这些的.
这个段估计是用户自己定义的数据段, 一般在linker的帮助文档中可以找到相关的信息。  


如果你初始化了这个变量, 那么系统的初始化代码会把变量的值拷贝到RAM中, 其初始化值应该是1, 应该在类似初始化数据段里面.
至于说是否会是用户设定值, 这要看实现了, 不特殊处理应该不会是用户设定值。


大致应该是这样的。 FYI。
 
 

回复

91

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
如果我把用户设定的ucTemp的值存某个地址中,上电之后,如果我不去读那地址中的值,不赋给ucTemp,那么ucTemp读出来应该还是Code里面设定的值1,那我想问一下,把ucTemp定义成save.data类型有什么好处?谢谢!
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

4
 
如果是用户自己定义的, 那么它的位置可以指定, 这样可以通过绝对地址访问,比如擦写.   
 
 
 

回复

90

帖子

0

TA的资源

一粒金砂(初级)

5
 
不好意思啊,还是有点不明白,再麻烦你指教指教,谢谢!

什么意思,有点不明白,把变量声明成save.data类型,才可以指定它的存储位置吗?

但是如果我不定义成save.data类型,就定义成一个普通的,类型 变量,这个时候我也可以指定一个寄存器来存储,进行擦写,这两者有什么区别吗?

我还是不明白定义成save.data类型,具体会有什么好处,谢谢!
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

6
 

你应该看看开发工具关于linker的帮助文档。

这个应该指的是存储类型,用来指明代码在最终目标文件中的位置;然后用某种方式再把它指定到存储器(FLASH 或者RAM)的某个位置。如果不把它定义在某个段中,那么它就会在缺省的初始化数据段中,处理起来不是很方便。具体的也可以看看代码里面是怎么处理的。

对于lz的情况不好说, 不清楚你所使用的开发工具。
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

7
 
非常感谢你,我已经有一点明白了,关于程序编译,比如如何把某个变量放到某个指定段中,能不能推荐一些资料、书本给我,小弟刚工作一年半,觉得好多东西不会,要学好多,路漫漫啊,谢谢!
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

8
 
一般开发套件里面会有关于compiler和Linker的帮助文档。


http://www.zap.org.au/elec2041-cdrom/gnutools/doc/gnu-linker.pdf
不过你也可以看看这个,道理都差不多。
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(中级)

9
 
非常谢谢!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表