本帖最后由 ubuntuman 于 2012-6-3 11:15 编辑
使用MDK 4.12 想在FLASH地址0X0807F800的地方存放一个数据,故使用__attribute__((at(address)))函数,具体情况如下:
(软件仿真情况下,硬件还没试验板子坏了)
1. 使用 const int x2 __attribute__((at(0x0807F600)))=10; /* RO */
Program Size: Code=8572 RO-data=513672 RW-data=308 ZI-data=2668 RO-data=513672 没有使用前RO-data=404 为什么??
2.jpg (61.96 KB, 下载次数: 5)
下载附件
2012-6-2 15:58 上传
查看FLASH 在我要写的地址后跟随了一些其他数据,这又是为什么? 这些数据时那里来的。我并没有操作啊。
2. 不使用const关键字 依然如上;
3. int x1 __attribute__((at(0x0807F800))); 不赋值的话,一切正常,但没意义了
今天又将这个问题在MDK4.5.3下试验了下,发现在4.5.3下没有问题,绝对定位处不会再跟一大堆 不知所云的数据了。 由此说明出现上述情况确实和编译器有关。但同时发现似乎MDK在使用绝对地址时对代码的大小计算有问题,此处不做讨论。
希望对该帖问题有更深入理解的大虾和又遇到新的疑惑的小虾都不吝惜的继续发表你们的见解和问题大家共同研究。
一周热门 更多>