如何在Linux上为STM32发现进行开发?[关闭]


26

我有一个STM32发现板,并且希望能够在Linux上对其进行编程。

最简单的方法是什么?


我在LinuxhUbuntu上安装了Codesourcery,并稍加堆叠:路径尚可,但该程序未出现在dasboard或软件中心上。也许是Ubuntu,我会以某种方式更改但不知道如何更改。如果您有想法,请写信。谢谢。汤姆
汤姆·雷特2013年

1
@TomRitzmann PeterJ是正确的,请不要使用答案来提问。此外,软件问题不在这里,SuperUser是正确的地方。
clabacchio

Answers:


12

编程和调试STM32 Discovery板(或使用ST-Link编程器的任何STM32)的简单方法是使用'stlink'项目https://github.com/texane/stlink(但是OpenOCD似乎也很流行)

ST Nucleo开发板还可以作为USB闪存设备使用,因此甚至不需要stlink-只需将文件复制到它们即可。

关于如何在Linux上为STM32发现进行开发的好页面,例如http://gpio.kaltpost.de/?page_id=131http://torrentula.to.funpic.de/2012/03/22/设置-stm32f4-arm-development-toolchain /http://jethomson.wordpress.com/2011/11/17/getting-started-with-the-stm32f4discovery-in-linux/

但是我发现最后一个链接最有用。它显示了如何按原样构建ST的STM32项目-唯一的变化是添加他的Makefile,这似乎是一个完美的解决方案。

在最新版本的Ubuntu上,可以安装一个包含ARM编译器的软件包:

sudo apt-get install gcc-arm-none-eabi

请注意,处理器都有些不同。STM32F0..4都将需要不同的编译器标志,并且每个链接器脚本都将略有不同(尽管仅是因为更改了RAM和Flash大小)。

编辑:如果您想快速入门,也可以访问http://www.espruino.com。这是一个可在STM32本身上运行的JavaScript解释器,因此,一旦安装了“ stlink”,就可以刷到板上,您只需从该站点下载图像,将其刷新,然后与终端应用程序连接即可,开始编程。


这是OpenOCD支持的STM32x Discovery开发板的列表:github.com/openrisc/openOCD/tree/master/tcl/board(使用浏览器搜索“发现”)
rbaleksandar 2015年

8

如果您更喜欢文本编辑器和Makefile,而不是使用GUI,则可以执行以下操作:

  • 安装一个提供arm-none-eabi-gcc的工具链。在Archlinux上,您需要全部来自社区的community / arm-none-eabi-binutils,arm-none-eabi-gcc和arm-none-eabi-newlib(以及arm-none-eabi-gdb)。回购或https://launchpad.net/gcc-arm-embedded(可在Archlinux的AUR中找到,名称为gcc-arm-none-eabi-bin)。
  • 确定要用于访问硬件的库以及是否以及要使用的库。从我的头开始,有三个常见的选择:
    1. 没有。您从头开始编写所有内容。不建议初学者使用。
    2. STM32Cube:ST本身提供的AC库。
    3. Libopencm3:一个开放源代码库,由不同的供应商支持很多cortex-m内核。
    4. STM32PLUS:一个C ++库。但是,由于我尚未测试,因此我无法多说。
  • 创建或复制您的第一个项目。
    1. 没有lib,编写您自己的makefile,链接脚本,启动代码并运行一个简单的makefile。祝好运 ;)
    2. 使用STM32Cube:下载并安装STM32CubeMX。解压缩* .exe文件实际上只是一个Java文件,您可以使用“ java -jar filename.exe”运行它。安装需要sudo。完成后,创建一个项目并生成“ Truestudio”的代码。那应该为您提供一个链接器脚本,启动代码,一些琐碎的主要功能(如果我没记错的话,还有一个makefile)的起点。实际上,即使您不使用STM32Cube库,STM32CubeMX也非常适合计算时钟树的值并验证是否可以按照您的想法配置芯片。
    3. 使用libopencm3:获取libopencm3示例,找到与您的电路板匹配的示例,并以此作为起点。这些示例应该可以运行了。只需键入“ make”。然后将该示例用作您自己的开发的起点。
    4. 使用STM32Plus:我不知道。抱歉。
  • 将您的项目提交董事会。无论使用

    1. 串行引导加载程序:stm32flash很好用。
    2. 调试端口:您可以使用openocd与板上提供的调试适配器进行通信。Openocd很棒,但是文档并不总是最好的。如有疑问,请加入openocd irc频道。那里的人真的很好。
  • 在文本编辑器中编码并使用命令行工具。本教程将提供很多技巧。

请享用


5

EclipseGCCOpenOCD是一种工具链。这是EMCU-IT推荐的,这里还有更多信息。这些页面还建议使用类似FreeRTOS.org的RTOS ,但这取决于您。

有关在Linux上编译STM32示例的帮助,请访问此处。该链接指向示例的makefile,可以使用

git clone git://github.com/snowcap-electronics/stm32-examples.git
cd stm32-examples
wget http://www.st.com/internet/com/SOFTWARE_RESOURCES/SW_COMPONENT/FIRMWARE/stm32_f105-07_f2xx_usb-host-device_lib.zip
unzip stm32_f105-07_f2xx_usb-host-device_lib.zip

还记录了一些次要的代码修复,但大多数项目应与

make CROSS_COMPILE=/path/to/arm-2011.03/bin/arm-none-eabi-

1
谢谢!我以前没有看过那些链接。我感到惊讶的是,尽管不同的发现板具有不同的构建标记,但在某个地方没有更明确的指南。
戈登·威廉姆斯

是的,意法半导体制造了一块非常便宜的电路板,并赠送了成千上万的电路板,而STM32本身就是一个了不起的芯片,一直到F4为止,但是对它们进行编程是一个巨大的难题。他们的驱动程序的文档编写得非常差,而且命名不正确,要找到免费的IDE和工具链可以很好地协同工作并不是一件容易的事。
hak8或2012年

1

我在https://github.com/JorgeAparicio/bareCortexM上获得了成功(另请参见链接的博客文章)。我只能单步执行代码或浏览设备内存,而不用在代码中插入调试语句或猜测芯片内部发生了什么。

nudeCortexM项目是一个Eclipse模板,用于在没有操作系统的C ++中使用Cortex M系列(尤其是STM32)进行开发。它被配置为使用openocd,gcc,并具有脚本来闪存和调试到多个目标,包括一些发现板。通过遵循说明并安装推荐的Eclipse插件,我可以在Ubuntu上使用STM32VLDISCOVERY。

根据建议,我已将Eclipse模板与同一作者的STM32硬件的libstm32pp C ++模板库结合在一起。libstm32pp提供了令人惊讶的完全替代CMSIS和经常被批评的STM32驱动程序的编程模型,该模型可让您说出类似的东西PB10::setMode(gpio::cr::GP_OPEN_DRAIN_2MHZ)PINB::setLow()或者PINB::setHigh()由于C ++模板而几乎全部是内联的。设置非常好。


我不再推荐未维护的nudeCortexM;在检查出stm32plus andybrown.me.uk/wk
joeforker

这种设备驱动程序的问题在于它们效率低下。对于不浪费CPU周期的适当的高速设备驱动程序,您需要在下面放置rtos,以便可以进行适当的调度。
马丁

0

也许对某人有用:我的简短文章(俄语)和简单的项目。一切都在linux中,没有像eclipse这样的不必要的事情。

图书馆摘自ST网站makefile,摘自Internet上的许多GPL示例之一。



0

我使用vim和arm-none-eabi-gcc以及所有常用的Linux开发工具。我认为到目前为止,Linux是嵌入式工作的高级开发环境。对于调试,我使用stlink和arm-none-eabi-gdb。


0

考虑platformio。如果您对命令行完全满意,您会发现Platformio大大简化了开发过程。pio init可以用来建立一个项目。pio run利用工具链进行编译。pio run --target upload将代码发送到设备。Platformio负责根据需要下载工具链组件,库等。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.