一、开发环境搭建
这里用的操作系统是ubuntu14.04
1、下载必要的工具
sudo apt-get install git libusb-1.0.0-dev(libusb是st-link要的底层驱动)
2、添加gcc-arm-embedded源,初始化编译器
sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded
sudo apt-get update
sudo apt-get install gcc-arm-none-eabi
3、初始化ST-LINK调试与烧写器驱动(有人喜欢用J-LINK,在Linux下也可以,不过安装驱动就是稍微麻烦一点,有兴趣的可以自己研究)
git clone https://github.com/texane/stlink.git
cd stlink/
./autogen.sh
./configure
make && make install
此时连接st-link 这时用lsusb命令就可以查看到相关的设备已经连接上,如下图
4、此时整个编译环境与下载环境搭建好了,做STM32开发还有一个重要的东西,那就是开发库,用开发库可以帮我们省不少时间嘛。这里我用项目中使用开源的libopencm3库来演示,当然stm32的官库也可以在linux下使用,只是要自己写Makefile来编译,这个有兴趣的可以自己动手编译一下。
git clone git://github.com/libopencm3/libopencm3.git
cd libopencm3
make
在lib目录下面编译出来会有相关的xxx.a文件,这里针对你的芯片来做链接,比如你是stm32f1xx系列芯片,项目里面的连接就使用libopencm3_stm32f1.a
二、构建项目
1、现在整个开发库与开发环境都构建完成了,那我们要开始写代码,编译,调试、下载到开发板啊,这里由于涉及到Makefile的编写,这里就直接用我STM32F205项目中的dfu demo做为示例,项目源代码请参考:
https://github.com/ykevin/blog/tree/master/embedded/dfu
2、关于src目录下面,里面有一个memory.ld、Makefile.include文件,其中memory.ld文件是芯片的连接脚本文件,这个根据你的芯片来选择,Makefile.include是用来编译项目的文件,具体的请看Makefile相关手册。
3、进入src目录,直接make就可以编译完成项目(记得要先编译libopencm3库)。
4、下程序,只需要在src目录make flash就可以(当然前提是你的st-link已经正确连接并识别)
三、调试
1、对于linux下的嵌入调试,这里使用的是强大的gdb工具,对于gdb的使用我就不做说明,这里我只演示怎么用gdb调试stm32
2、终端上执行以下命令
sudo st-util
arm-none-eabi-gdb
tar extended-remote :4242
load dfu.elf
3、到上面一步后就跟在x86下面gdb调试一样。
四、资源
1、关于libopencm3的使用网上有一个libopencm3-example的合集里面有各种国外经典开发板的各个模块的小demo,有兴趣的可以自己研究。
https://github.com/libopencm3/libopencm3-examples