我正在使用Em::Blocks IDE为ARM Cortex-M3微控制器STM32F4编写裸机C软件。
Here's the content of the startup_stm32f429x.S file which is included with the IDE.
.data
部分已填充初始值。_start
符号,该符号在我的GCC toolchain .bss
部分。 (这里,_start
再次被定义,但很弱。因此,只有_start
符号未在其他任何地方定义时,此代码才有效。)我的问题是:
.data
和清除.bss
的代码?我以为这是crt0.s的工作?!.bss
的代码似乎只有在缺少crt0.s的情况下才会激活。
.data
部分的初始化总是处于活动状态,与crt0.s是否可用无关?我刚才读到,设置异常向量is another thing crt0.s is responsible for。再说一遍:为什么我的startup file在第41行到第151行完成了?
答案 0 :(得分:0)
完全是因为你不想在裸机微控制器上使用gcc的crt0,如果你不需要它的功能。如果你不使用crt0,那么你必须自己做。