我正在为基于 ARM-Cortex M3 的设备编写启动脚本。如果我编译汇编器引导脚本和 C 应用程序代码,然后组合目标文件并将它们传输到我的设备,一切正常。
但是,如果我使用ar
创建存档 (libboot.a) 并将该存档与 C 应用程序结合起来,则会出现问题:
我已将引导代码放在一个部分中:
.section .boot, "ax"
.global _start
_start:
.word 0x10000800 /* Initial stack pointer (FIXME!) */
.word start
.word nmi_handler
.word hard_fault_handler
... etc ...
我发现ld
从最终的二进制文件中删除了这个(“引导”部分不可用)。这是很自然的,因为它不依赖它ld
知道,但它会导致设备无法正确启动。
所以我的问题是:强制包含此代码的最佳方法是什么?