由 MSP430GCC 生成的二进制文件具有奇怪的文本段起始地址
Binary, produced by MSP430GCC, has strange start address for text segment
在为 MSPG2211 使用 msp430-gcc(LTS 20120406 未打补丁)编译示例性 C 程序后,我使用 readelf 命令得到以下输出:
节header
节目header
MSPG2211单片机的地址space结构如下:
0x0000 - 0x01FF - 外围设备
0x0200 - 0x027F - RAM
0x1000 - 0x10FF - 闪存(信息存储器)
0x1100 - 0xF7FF - ???
0xF800 - 0xFFFF - 闪存(代码存储器 + 中断向量)
header部分所示的文本部分从0xF800开始,这是代码存储器的首地址。
文本段,仅包括文本部分,比文本部分大,并且已经从 0xF76C 开始。
据我了解,可加载段被加载到显示的物理地址以执行程序。
那么为什么文本段的起始地址位于未定义的内存区域中?
一些名称部分(例如.text
)包含实际加载到 MCU 中的数据。
然而,ELF 程序头仅包含元数据;他们的地址无关紧要。
在为 MSPG2211 使用 msp430-gcc(LTS 20120406 未打补丁)编译示例性 C 程序后,我使用 readelf 命令得到以下输出:
节header
节目header
MSPG2211单片机的地址space结构如下:
0x0000 - 0x01FF - 外围设备
0x0200 - 0x027F - RAM
0x1000 - 0x10FF - 闪存(信息存储器)
0x1100 - 0xF7FF - ???
0xF800 - 0xFFFF - 闪存(代码存储器 + 中断向量)
header部分所示的文本部分从0xF800开始,这是代码存储器的首地址。
文本段,仅包括文本部分,比文本部分大,并且已经从 0xF76C 开始。
据我了解,可加载段被加载到显示的物理地址以执行程序。
那么为什么文本段的起始地址位于未定义的内存区域中?
一些名称部分(例如.text
)包含实际加载到 MCU 中的数据。
然而,ELF 程序头仅包含元数据;他们的地址无关紧要。