在Linux下配置STM32的开发环境

最早试图在Linux下开发STM32,因为资料很少,走了不少弯路,现在记录下来,方便有需要的人。

准备依赖的软件

首先让我的64位linux系统支持32位程序:

# dpkg --add-architecture i386
# apt-get update
# apt-get install ia32-libs

接下来准备需要安装的一些软件:
https://launchpad.net/gcc-arm-embedded 下载 ARM 版的GCC,解压后将其bin目录放到PATH里。
安装opencd和cmake:

$ sudo apt-get install openocd git

创建项目

然后下载STM32的固件库 http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1743/PF257890 并将其解压出来,这里假设解压路径为~/libraries/STM32F10x_StdPeriph_Lib_V3.5.0/
接下来创建项目,创建项目可以从我做的一个模板项目开始,下载 https://chou.it/public/stm32-template.tar.gz
然后打开CMakeList.txt,将第一行的PROJECT(hello-world)里的hello-world改成你自己的项目名字,第三行的PERIPH_LIB指向你磁盘上的STM32固件库的地址,然后在项目目录下执行cmake来生成makefile:

$ cmake -G 'Unix Makefiles'

然后执行make来编译项目:

$ make

如果执行成功,会生成elf, bin, hex 三个文件,第一个elf文件是用来给GDB调试用的。
p.s. 如果需要增加其他的固件库函数,则只需要在CMakeList.txt中的STARTUP中加上即可,不需要复制到项目目录下。

烧录和调试

在项目目录下有个openocd.cfg,默认配置是给 ST-Link/v2和STM32F1X使用的,如果需要用其他jtag仿真器或者MCU则需要将里面的interface和target改成对应的配置文件。
配置改好后,只需要执行openocd即可。
openocd启动后,执行以下命令来将生成的bin文件烧录到MCU中去:

$ make burn

烧录成功后MCU会挂起,所以片上程序不会立刻执行,需要启动则需要复位MCU,或者开始调试。
调试可以使用eclipse或者直接使用gdb来调试,该命令已被cmake简化,只需要执行:

$ make gdb

即可启动,效果如下:

如果需要使用串口和设备通讯,个人推荐使用kermit,安装kermit:

$ sudo apt-get install kermit

安装好后就可以使用项目目录下的 ttyUSB0 或者 ttyUSB1 来链接 /dev/ttyUSB0或者 /dev/ttyUSB1的串口,也可以改下这个文件来修改具体的串口参数比如波特率,设备等。

IDE集成

使用NetBeans或者Eclipse建立一个基于现有代码的项目,使用CMake生成的make来构建即可。要调试则创建gdb远程调试,端口为3333,主机为localhost即可,具体步骤网上很多就不详细说了。


Last modified on 2014-01-21