为什么GNU Arm嵌入式工具链的例子(gcc-arm-none-eabi / samples / src / qemu)不起作用?

时间:2018-06-15 05:43:03

标签: qemu cortex-m3 newlib

英语不是我的母语,我为此道歉。

最近,我想了解有关C lib初始化的详细信息。开发/调试环境如下:

硬件:QEMU模拟器The GNU MCU Eclipse QEMU

软件:GNU Arm嵌入式工具链示例

IO:半主机

CrossToolchian: GNU Arm嵌入式工具链(gcc-arm-none-eabi-7-2017-q4-majo)

我了解半主机,Crosstoolchain和QEMU的原理和用法。我没有初始化newlib就编写了Cortex-M3的启动源代码,所以我理解了cpu启动步骤和链接脚本的关键点。另外,我还在QEMU中运行半主机的源代码。我找到了GNU MCU Eclipse这个关于开发Coortex-M系列程序的项目。我可以使用这个项目来实现目标。但我想知道newlib启动的细节。所以,我打算从头开始编写程序。我从GNU Arm Embedded Toolchain的自述文件中获得了一些有用的信息。它使用半主机在QEMU上运行时为Cortex-M3提供newlib。我想我应该使用qemu的样本。以下是设计师关于该示例的描述:

  

** qemu - 展示如何构建在qemu上运行的Cortex-M裸机程序。   这个案例构建了一个可以在qemu for ARM上运行的简单应用程序。它用   文件IO的半主机,qemu支持。

我编译示例并在qemu上运行它,它打印任何东西。我不知道为什么。有人可以帮我吗?

编译:

make CORTEX_M=3

执行命令

qemu-system-gnuarmeclipse  --verbose --verbose --nographic  --board STM32-P103 --image  hello-CM3.axf  --gdb tcp::1234

我发现程序在查看编译细节时没有链接startup_ARMCM3.S。

编译detial:

arm-none-eabi-gcc hello.c -mthumb -mcpu=cortex-m0  -Os -flto -ffunction-sections -fdata-sections -g -v  --verbose --specs=nano.specs --specs=rdimon.specs -L../../ldscripts -T libs.ld -T mem.ld  -T sections.ld   -Wl,-Map=hello.map -g  -o hello-CM0.axf

0 个答案:

没有答案