服务器之家

服务器之家 > 正文

C语言中 “_at()” 特殊地址定位详解

时间:2021-05-11 15:53     来源/作者:木十化

C语言中 “_at()” 特殊地址定位详解

在keil里面,有一个特殊地址定位的指令,就是将一个变量或常量定位到一个指定的地址上面

指令为 __at ,使用方法如下

?
1
int variable __at(0x8000) = 100;

意为将variable变量定位到0x8000这个地址。

指令的目的是告诉链接器将指定地址定位到某个地址里面,在使用该功能的时候需要注意一点的是,地址的范围需要符合单片机的datasheet给出的地址映射表,

注意,如果地址超出了flash的最大范围,程序将无法得到这个值,例如一个256Kflash的芯片,在使用功能__at指令的时候,地址就不要超过256*1024了,否则你是找不到这个变量的。

下面以MB9AF310系列芯片为例,讲一下关于芯片的flash在内存中的映射,

C语言中 “_at()” 特殊地址定位详解

如图,flash被映射到了0x00000000这个地址上,以0x00100000结束,但是仍然需要看具体芯片的flash是多大的,这个地址只是310系列芯片的地址映射,如果超出了实际的地址,仍然不能找到变量。

keil的链接器最后会把变量放到生成文件的相应地址中去,在烧录的时候,如果是BIN文件,文件的字节地址会和flash的地址一一对应。用户定义的变量将被烧录到相应的flash的物理地址中。以上都是在没有MMU的情况的关于地址映射的解释,如果启用了MMU,情况也许会不一样,毕竟多了一层虚拟地址,实际上还能不能使用__at指令,我也不知道,后续笔者会继续钻研,更多关于__at指令的说明,可以直接在keil的帮助文件中找到。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

原文链接:http://blog.csdn.net/ma57457/article/details/63712522

标签:

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
2021德云社封箱演出完整版 2021年德云社封箱演出在线看
2021德云社封箱演出完整版 2021年德云社封箱演出在线看 2021-03-15
返回顶部