常量的绝对定位问题:(定位地址之前,全是0000;定位地址之后,还有其它数据)
为了更新应用程序的部分功能,我把需要更新的对象做成了一个大的结构体MachineHeadType(该结构体内含其它结构体、数组、变量等),并把该结构体MachineHeadType定义在了flash的 0x0800 9000处。ffice ffice" />
代码如下:
__packed struct MachineHeadType const MachineHead __attribute__((at(0x8009000)));
在生成的*.map文件中,看到了代码定位信息:
MachineHead 0x08009000 Data 57 codelocation.o(.ARM.__AT_0x08009000)
这说明该结构体 MachineHead在 flash中的长度是57个字节。
问题如下:
1、为何在MDK生成的hex文件中,0x08009000 之前,有一大堆的 00 填充?对程序运行有影响吗?能否改为填充FF?
2、*.map中 显示结构体MachineHead 的长度是57,为什么在生成的 hex 文件中,0x0800 9000后面的 数据,却超过57个呢。 如果我应用程序更新时,重新擦写了0x0800 9000后面这一段,对程序运行有影响吗。
盼高人指教。
|