Linux下STM32开发(1)——编译和烧录环境搭建

一、搭建准备

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)STM32CubeProgrammerSTM32F10x标准库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

 

  • 5
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值