我有一个STM32发现板,并且希望能够在Linux上对其进行编程。
最简单的方法是什么?
我有一个STM32发现板,并且希望能够在Linux上对其进行编程。
最简单的方法是什么?
Answers:
编程和调试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/设置-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”,就可以刷到板上,您只需从该站点下载图像,将其刷新,然后与终端应用程序连接即可,开始编程。
如果您更喜欢文本编辑器和Makefile,而不是使用GUI,则可以执行以下操作:
将您的项目提交董事会。无论使用
在文本编辑器中编码并使用命令行工具。本教程将提供很多技巧。
请享用
Eclipse,GCC和OpenOCD是一种工具链。这是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-
我在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 ++模板而几乎全部是内联的。设置非常好。
这是一个小巧但创新的模板项目,可在Linux或任何其他操作系统下使用STM32F0 Discovery板快速入门:
https://github.com/dobromyslov/stm32f0-chibios-template
请注意,该项目使用ChibiOS-一个免费的开源实时操作系统,因此它并非完全是从头开始的。
考虑platformio。如果您对命令行完全满意,您会发现Platformio大大简化了开发过程。pio init
可以用来建立一个项目。pio run
利用工具链进行编译。pio run --target upload
将代码发送到设备。Platformio负责根据需要下载工具链组件,库等。