一、搭建准备
1、系统环境:虚拟机+ubuntu
2、编译工具链:gcc-arm-none-eabi
3、下载工具:OpenOCD(支持stlink,ulink,jlink等) 、STM32CubeProgrammer(仅支持ST-LINK)
4、STM32标志库:stm32-standard-peripheral-libraries
5、已上传至CSDN下载:
STM32-Linux下开发环境包(编译链+openocd)、STM32CubeProgrammer、STM32F10x标准库V3.5
二、编译工具链安装
1、下载并解压编译链工具链压缩包
tar -xvjf gcc-arm-none-eabi-7-2018-q2-update-linux.tar.bz2
其中,bin
目录是要使用的编译工具链
2、添加环境变量,仅为当前用户添加环境变量,编辑当前用户配置文件
vim ~/.bashrc
在文件最后添加路径:
export PATH=$PATH:/home/pjw/STM32/tool/gcc-arm-none-eabi/bin
3、使用以下命令更新系统路径,使添加的环境变量立即生效
source ~/.bashrc
4、验证编译链
使用以下命令查看版本:
arm-none-eabi-gcc -v
或者输入 arm-none 按TAB键看是否能自动补全,能补全则编译链安装完成。
三、烧录软件安装(openocd)
1、安装软件依赖
sudo apt-get install libtool-bin libhidapi-dev libusb++-dev libusb-1.0.0-dev
libtool-bin:通用库支持脚本,可以在不同平台上创建并调用动态库
libhidapi-dev:CMSIS支持
libusb++-dev:基于usb的适配器依赖于libusb-1.0和一些旧的驱动
2、配置
进入openocd的文件夹。
(1)使用以下命令可以列出调试器及其开关情况:
./configure
(2)以下命令可以配置安装路径:
./configure --prefix=/usr/local/openocd
(3)使用以下命令可以配置J-link
./configure --enable-jlink
报错 :
configure: WARNING: libusb-1.x not found, trying legacy libusb-0.1 as a fallback; consider installing libusb-1.x instead
configure: error: libusb-1.x or libjaylink-0.1 is required for the SEGGER J-Link Programmer
实际已经安装了 libusb-1.0.0-dev ,这里没有获取到安装的库的路径。
解决:
1>pkg-config用于获得某一个库/模块的所有编译相关的信息。查询版本:
pkg-config --version
2>未获取到,使用以下命令安装:
sudo apt install pkg-config
3>再次查询是否安装成功
4>再次 ./configure --enable-jlink 配置,可以看到找到该库的路径了,并且配置成功
3、安装
(1)使用 make 编译
在编译过程中会由于报出warning而终止,这是OpenOCD的bug。
使用以下命令忽略warning,不把warning变成error的配置。
./configure --disable-werror
再次编译成功:
(2)使用 sudo make install 安装
(3)openocd安装后在/usr/local/share
目录里面。
scripts
文件夹存放着openocd使用的文件,interface
文件夹下存放着下载器接口的文件,target
下存放着目标芯片的配置文件。
4、验证
使用命令openocd -f <接口配置文件> -f <目标芯片配置文件>
即可成功连接到目标芯片
ST-LINK:
使用的命令
- openocd -f
<接口配置文件>
-f<目标芯片配置文件>(绝对路径)
- telnet localhost 4444
- >halt
- >flash write_image erase
<烧录文件>(绝对路径)
- >reset
配置使用 stlink 连接到 stm32f1x 芯片
openocd -f /usr/local/share/openocd/scripts/interface/stlink-v2.cfg -f /usr/local/share/openocd/scripts/target/stm32f1x.cfg
显示以下输出则表示连接成功:
详细烧录步骤:Linux下STM32开发(2)——简单工程编写、编译与下载(Makefile)
J-LINK:
openocd -f /usr/local/share/openocd/scripts/interface/jlink.cfg -f /usr/local/share/openocd/scripts/target/stm32f1x.cfg
Info : auto-selecting first available session transport "jtag". To override use 'transport select <transport>'
拷贝 jlink.cfg 并重命名为 jlink-swd.cfg
sudo cp jlink.cfg jlink-swd.cfg
编辑 jlink-swd.cfg
sudo vim jlink-swd.cfg
新增以下命令:
transport select swd
修改后如图:
参考:https://zhuanlan.zhihu.com/p/415171982