Questions tagged «linker»

4
Cortex M3 .bss区域初始化的裸机启动代码
我从这里得到了启发,为手臂皮质M3设计了一个裸机启动代码。但是,我遇到以下问题:假设我声明了一个未初始化的全局变量,例如main.c中的unsigned char类型 #include ... unsigned char var; ... int main() { ... } 这使得STM32 f103中的.bss区域开始于_BSS_START = 0x20000000并结束于_BSS_END = 0x20000001。现在,启动代码 unsigned int * bss_start_p = &_BSS_START; unsigned int * bss_end_p = &_BSS_END; while(bss_start_p != bss_end_p) { *bss_start_p = 0; bss_start_p++; } 尝试将整个.bss区域初始化为零。但是,在while循环内,指针增加了4个字节,因此在执行bss_start_p = 0x20000004的步骤之后,它将始终与bss_end_p不同,从而导致无限循环等。 有什么标准的解决方案吗?我是否想以某种方式“强制” .bss区域的尺寸为4的倍数?还是应该使用指向无符号字符的指针来遍历.bss区域?也许像这样: unsigned char * bss_start_p = …

1
集成另一个二进制文件
我正在使用GCC和Crossworks为ARM构建二进制文件。我有一个辅助二进制映像,在启动过程中需要将其加载到另一个IC。 我喜欢将此二进制文件集成到我的工具链中,换言之,我将该二进制文件作为映像的一部分,并且每次构建此二进制文件时,都会将该二进制文件集成到最终的二进制文件中,该文件将被加载到CPU中。最佳做法是什么? 谢谢
8 arm  linker 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.