我有一个 STM32 探索板,希望能够在 Linux 上对其进行编程。
最简单的方法是什么?
我有一个 STM32 探索板,希望能够在 Linux 上对其进行编程。
最简单的方法是什么?
对 STM32 Discovery 板(或任何使用 ST-Link 编程器的 STM32)进行编程和调试的简单方法是使用“stlink”项目https://github.com/texane/stlink(但 OpenOCD 似乎也很流行)
ST Nucleo 板也显示为 USB 闪存设备,因此甚至不需要stlink
- 只需将文件复制到它们。
有一些关于如何在 Linux 上开发 STM32 发现的好页面,例如http://gpio.kaltpost.de/?page_id=131和 http://torrentula.to.funpic.de/2012/03/22/ setup-the-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 和闪存大小的变化)。
编辑:如果您想快速入门,您还可以查看http://www.espruino.com。它是一个在 STM32 本身上运行的 JavaScript 解释器,所以一旦你安装了“stlink”,你就可以刷到板上了,你可以从那个站点下载一个图像,刷上它,然后连接一个终端应用程序,然后开始编程。
如果您更喜欢文本编辑器和 Makefile 而不是使用 GUI,您可以这样做:
将您的项目提交给董事会。要么使用
在文本编辑器中编写代码并使用命令行工具。本教程将提供很多提示。
享受
Eclipse、GCC和OpenOCD是一个工具链。它是由EMCU-IT推荐的,这里有更多信息。这些页面还建议使用像FreeRTOS.org这样的 RTOS,但这取决于您。
如需在 Linux 中编译 STM32 示例的帮助,请访问此处。该链接指向可以调用的示例的生成文件
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-
我在https://github.com/JorgeAparicio/bareCortexM上取得了成功(另请参阅链接的博客文章)。我很震惊,我可以简单地单步执行代码或浏览设备内存,而不是在我的代码中插入调试语句或猜测芯片内部发生了什么。
bareCortexM 项目是一个 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++ 模板而大部分内联编译的内容。设置非常好。