关于STM32使用gcc编译器和ARM编译器的问题

gcc编译器中,在链接的时候需要指定VMA和LMA,然后在启动文件中用汇编把data段的数据拷贝到RAM中去,这部分代码我们可以在官方库的gcc文件夹中的startup_stm32f10x_md.s看到。但是换成ARM的编译器(keil),在ARM文件夹中的startup_stm32f10x_md.s文件中并没有把data段的数据拷贝到RAM中去的代码。
我想知道是不是两种编译器的实现方式不一样?那用ARM编译器的时候是怎么把data段的数据拷贝到RAM中去的?

自己解答:arm文件夹中的启动文件,汇编结束了跳到"_main“标号处,这个”_main“不是C语言中的main,__main是keil的库函数中的一个标号地址,__main处的代码会将RW区从加载地址拷贝到执行地址,然后还会初始化堆等空间。最后跳到应用程序的main函数去。其实有这一段过程的。。。。。

相关文档
最新文档