RT-Thread / rt-thread

RT-Thread is an open source IoT Real-Time Operating System (RTOS).
https://www.rt-thread.io
Apache License 2.0
10.46k stars 5.01k forks source link

STM32f10x hal版本gcc编译问题 #1187

Closed xeonxu closed 6 years ago

xeonxu commented 6 years ago

STM32f10x hal使用ide编译可以正常运行,但是使用scons用gcc编译时,虽然可以正常编译,但是无法运行。

lymzzyh commented 6 years ago

这个问题应该是由于开启了main模式 然后程序入口应该变成entry gcc对应.s的启动代码中的入口不对造成的。我有时间fix

xeonxu commented 6 years ago

@uestczyh222 我本地fix了。有两个原因。第一,如你所说,启动入口变更了,reset_handler里是main,而实际应该是entry;第二,hal版本用的启动汇编不知为什么加入了__libc_init_array函数的调用,该函数直接跑飞。 但是当前的修改我不是很满意,需要动到CMSIS的汇编模板文件。

lymzzyh commented 6 years ago

第一个问题貌似没有很好的解决方法。。因为一旦不使用main模式那么又不对了 第二个问题好像不会造成什么奇奇怪怪的问题。你看要不要pr上来

xeonxu commented 6 years ago

@uestczyh222 我再尝试下。整理下代码,明早PR。

lymzzyh commented 6 years ago

可以的话把所有芯片的.s都修改一下。

xeonxu commented 6 years ago

@uestczyh222 __libc_init_array的问题在3.0.1某个版本存在,应该是kconfig依赖导致的 Enable libc APIs from toolchain开关打开后无法正确编译。3.0.2版本无此问题。

xeonxu commented 6 years ago

1226 使用新方案解决