将嵌入式编程从 Keil 迁移到 Linux

电器工程 stm32 linux 海合会 基尔
2022-01-14 06:35:43

我目前正在使用 Keil 开发 STM32 探索板。我的项目即将完成,我想迁移到基于 Linux 的构建环境。我一直在使用预配置的刷机工具和 Windows 的 STLink 驱动程序来刷机,我得到了 keil 来导出一个 bin 文件,我设法使用qSTLink2在我的 Linux 机器上刷机。到目前为止,一切都很好。

现在我被困在构建整个项目的过程中。具体来说:

如何将我的 .uvproj 移植到 makefile,同时考虑“startup_stm32l1xx_md.s”启动文件之类的内容?

2个回答

搞定了。我想我会分享我的结果,以便其他人可以使用它。谢谢大家的时间。


我使用这个 ARM 工具链来构建我的项目,并使用该工具附带的texane/stlink./st-flash将二进制文件闪存到我的 STM32L1。虽然 texane/stlink 带有 GDB,但我发现没有它我可以完成构建+闪烁过程。

我的 Makefile 最终看起来像这样。它不是很漂亮或抽象,但它完成了工作。

all:
    arm-none-eabi-gcc -T stm32l1xx.ld -mthumb -mcpu=cortex-m3 -D STM32L1XX_MD -D USE_STDPERIPH_DRIVER startup_stm32l1xx_md.s system_stm32l1xx.c main.c [ sources ] -lm --specs=nosys.specs -o Project.elf

其中:

  • arm-none-eabi-gcc
    ARM 工具链
  • -T stm32l1xx.ld
    链接器文档
  • -mthumb -mcpu=cortex-m3
    告诉 GCC 这是给 M3
  • -D STM32L1XX_MD -D USE_STDPERIPH_DRIVER
    为标准外设驱动程序定义
  • startup_stm32l1xx_md.s
    面向 GCC 的启动文档。
  • system_stm32l1xx.c main.c [ sources ]
    我的源文件列表
  • -lm
    对于Math.h( L ib数学)
  • --specs=nosys.specs
    不要使用像_exit.
  • -o Project.elf
    输出名称

有一个 Gnu ARM 工具链(arm-none-eabi),据说 openOCD 可以与 gdb 一起使用(尽管我在 Win7 下无法做到这一点 - openOCD 可以连接到 STM32F4disco 板,但是 gdb 在连接到 openOCD 时有问题)。

在这里进行一些挖掘,您会发现工具链、openOCD 和包含启动源的示例项目的链接。