双系统:ubuntu 22.04
电脑:拯救者Y7000
板子:stm32f103c8t6
一段摸爬滚打的辛酸史,囊括了我在过程中遇见的所有报错及解决方法!
记录自己实现的步骤,过程已经跟新完毕,笔者能力有限所用的方法以及代码考虑的不一定全面,也希望大佬多多补充!
目录
安装stm32cubeIDE
官网下载点击跳转官网
汉化
点击跳转下载汉化包
编辑
安装stm32cubeMX
下载链接官网
多余的swp文件
clion下载安装
激活码宝贵
clion汉化
配置环境变量
创建桌面图标
stlink安装
安装openocd
下载stlink
stm32环境搭建
编译工具gcc配置
调试软件OpenOCD
再次检查是否都正确安装
验证连接
报错1:,端口占用的原因
报错2:Warn : UNEXPECTED idcode: 0x2ba01477 Error: expected 1 of 1: 0x1ba01477
错误3:接口/stlink-v2.cfg已弃用
Clion嵌入式配置
编辑编辑
下载成功,祝大家都能实现!!!
安装stm32cubeIDE
官网下载点击跳转官网
自行下载最新版本
下载目录的终端命令
unzip en.st-stm32cubeide_1.14.0_19471_20231121_1200_amd64.sh.zip
等待
解压后执行命令
sudo sh ./st-stm32cubeide_1.14.0_19471_20231121_1200_amd64.sh
下滑更多,接受y,回车
成功
汉化
点击跳转下载汉化包
自行选择最新版本
打开安装的stm32cubeIDE 点击“HELP”→“ Install NewSoftware”来添加新插件。
点击Add
点next,等新界面后接受条款,点完成finish,等下载结束就可以了
如果下载过程中会弹出弹框,全选然后点Trust
重启完成汉化,这个插件可以更改主题,自行上网学习,这里不截图了
安装stm32cubeMX
下载链接官网
unzip en.stm32cubemx-lin-v6-10-0.zip
解压后点击下面这个文件按步骤安装即可
个人问题:安装之后,由于之前我安装过,这次属于重装,由于以前版本没有卸载干净,桌面的图标打不开可以进计算机的/usr/share/applications文件查看,发现安装路径不一致
如果没有安装vim 需要执行sudo apt-get install vim
cd /usr/share/applications/
##根据自己文件名字自行修改
sudo vim st-stm32cubemx-v6-10.desktop
如果你们没有这个desktop文件也可以参考下文创建桌面图标的方式添加
[Desktop Entry]
Name=CubeMX
Comment=STMicroelectronics STM32CubeMX v6-10
GenericName=STM32CubeIDE<F12
Exec=/home/h/Apps/tools/st/stm32cubemx_v6-10/STM32CubeMX
Icon=/home/h/Apps/tools/st/stm32cubemx_v6-10/help/STM32CubeMX.ico
Path=/home/h/Apps/tools/st/stm32cubemx_v6-10
Terminal=false
StartupNotify=true
Type=Application
Categories=Development
多余的swp文件
由于终端 vim和vi 编辑文件不正常退出会产生swp文件, 每次进入编辑这个文件时都弹出一堆提示信息,只读是因为权限不够,解决方法切换到root用户或者在前面加sudo
W10: 警告: 正在修改一个只读文件
需要删除这个缓存文件即可,再次进入就不会报错存在交换文件
sudo rm -r .st-stm32cubemx-v6-10.desktop.swp
clion下载安装
官网链接下载官网
解压完运行解压文件bin目录下的clion.sh
激活码宝贵
分享一个好用网站,大家尽快使用不知道什么时候失效 点击这个
clion汉化
直接插件里面找,不用去专门下载汉化包,方便很多
配置环境变量
vim ~/.bashrc
#打开文件添加
alias clion=/home/<用户名>/<安装路径>/<安装文件名字版本>/bin/clion.sh
#保存退出终端运行下面代码
source ~/.bashrc
之后可以直接通过终端clion就可以打开,也可以通过创建桌面图标
创建桌面图标
cd /usr/share/applications
sudo vim clion.desktop
需要注意:Exec和Icon要根据自己clion的安装路径进行修改,并且Comment和Version要和自己安装的clion的版本号相对应。最后保存退出,就可以在应用程序里看到clion了。
#将下面的代码拷贝进去
[Desktop Entry]
Encoding=UTF-8
Name=CLion
Comment=clion-2023.3.2
Exec=/home/h/Apps/tools/clion-2023.3.2/bin/clion.sh
Icon=/home/h/Apps/tools/clion-2023.3.2/bin/clion.svg
Categories=Application;Development;Java;IDE
Version=2023.3.2
Type=Application
#Terminal=1
如果没有图标出现,可以右键复制或者命令行复制到桌面,我建议右键手动复制法,复制桌面图标右键允许运行
命令行复制如下,要多一步操作修改文件权限
cd /usr/share/applications/
##有的人桌面是英文,我的是中文
sudo cp clion.desktop ~/桌面/
##切换
cd ~/桌面/
##改权限 o+rx 增加其他用户读和执行权限
sudo chmod o+rx clion.desktop
stlink安装
安装openocd
ubuntu的apt可以直接安装
sudo apt install openocd
下载stlink
下载链接点击 —> github
选择合适版本的deb安装
stm32环境搭建
准备:
1、PC:双系统ubuntu22.04
2、开发板:STM32F103C8T6
3、交叉编译工具链:gcc-arm-none-eabi
我下载的是X86_64版本的
4、下载调试软件:OpenOCD
编译工具gcc配置
两个软件分别下载解压
tar -xvif gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
tar -xvif openocd-0.12.0.tar.gz
配置环境变量:如果遇到权限问题就su转到管理员用户或者chmod改变文件权限
vim ~/.bashrc
##将下面代码添加进文件最后,注意看路径是自己的安装目录
export PATH=$PATH:/home/h/Apps/tools/stm32_tools/gcc-arm-none-eabi-10.3-2021.10/bin
保存关闭
##使环境变量生效
source ~/.bashrc
##查看安装的版本
arm-none-eabi-gcc -v
如果安装版本对不上,应该是系统自带有安装版本,这时候需要删除原来系统的版本
sudo apt-get remove gcc-arm-none-eabi
具体详细过程可以看——>这里
#路径需要根据自己安装文件路径更改
exportline="export PATH=/opt/gcc-arm-none-eabi-10.3-2021.10/bin:\$PATH"
#判断配置是否成功
if grep -Fxq "$exportline" ~/.profile; then echo nothing to do ; else echo $exportline >> ~/.profile; fi
#生效文件
source ~/.profile
#查看版本
arm-none-eabi-gcc -v
安装完成也可以通过命令行arm 按Tab看看会不会有下面内容,有的话就安装成功了
arm-none-eabi-gcc --version
##查看版本信息
调试软件OpenOCD
进入openocd安装的文件夹使用以下命令可以查看调试器及其开关情况
./configure
#配置安装路径
./configure --prefix=/usr/local/openocd
下载相关依赖
sudo apt-get install libhidapi-dev libusb-1.0.0-dev
./configure --enable-cmsis-dap
配置成功,接下来使用make指令编译安装
make
sudo make install
##路径可以不用改
cd /usr/local/share/openocd/scripts
ls target
ls interface
interface
文件夹下存放着下载器接口的文件,target
下存放着目标芯片的配置文件(在使用openocd连接开发板时需要用到这两个配置文件)
再次检查是否都正确安装
su
gcc -v
arm-none-eabi-gcc -v
openocd -v
验证连接
- ST-LINK:
- openocd -f
<接口配置文件>
-f<目标芯片配置文件>(绝对路径)
- telnet localhost 4444
- >halt 目标芯片挂起,相当于关机
- >flash write_image erase
<烧录文件>(绝对路径)
- >reset 目标芯片复位
-
>exit
关闭连接
openocd -f /usr/local/share/openocd/scripts/interface/stlink-v2.cfg -f /usr/local/share/openocd/scripts/target/stm32f1x.cfg
报错1:,端口占用的原因
第一次我的解决方法简单粗暴重启解决,之后我通过网上查询知道以下解决方法:
端口被占用了,用命令行看看是什么程序占用,下面两个都可以查看
lsof -i:端口号
netstat -tunlp|grep 端口号
知道pid后,再用kill指令杀掉。
kill -9 进程号
报错2:Warn : UNEXPECTED idcode: 0x2ba01477
Error: expected 1 of 1: 0x1ba01477
恭喜你买到国产芯片(假的stm32f103c8t6)
解决方法:vim打开原来的那一行注释掉,改为set _CPUTAPID 0x2ba01477,保存关闭就可以了
cd /usr/local/share/openocd/scripts/target/
sudo vim stm32f1x.cfg
# set _CPUTAPID 0x1ba01477
set _CPUTAPID 0x2ba01477
错误3:接口/stlink-v2.cfg已弃用
WARNING: interface/stlink-v2.cfg is deprecated, please switch to interface/stlink.cfg
警告:接口/stlink-v2.cfg已弃用,请切换到接口/stlink.cfg
这里我换成stlink.cfg就没有再报错了
openocd -f /usr/local/share/openocd/scripts/interface/stlink.cfg -f /usr/local/share/openocd/scripts/target/stm32f1x.cfg
下图是没有报错的正常情况
Clion嵌入式配置
点击新建项目 ——> 嵌入式stm32CubeMx ——> 修正
出现下列绿色框说明,文件找对了,应用确认后返回新建项目
构建工具链这也需要将路径选对,不然不出现小锤子
如果和我一样有弹窗点下载,这里面板配置文件跳过,这里生成默认的是STM32F0304Px后续可以在cubeMX里更改,参考下列步骤
要保持一致才能覆盖原文件,也可以通过Mx先创建再从Clion中打开,配置完成后直接点击右上方的Generate Code,点击是,
下面弹窗可以选择登录用户也可以直接不管,点继续,因为我点了登录之后一直登录不上,应该和网路有关。
登录不上无关紧要,这里点继续,就会来到下面这个窗口,打开close 回到clion
回到Clion后板子文件已经改变了,自动重新配置,并且要求我们选择面板配置文件,面板配置文件中对不同型号的板子有不同的配置文件,择对应型号的复制到项目即可
我的板子是STM32F103C8T6 ,所以选了第一个,注意选复制到项目并使用,方便查看修改
报错:-- Warning: Did not find file Compiler/-ASM
-- Configuring incomplete, errors occurred!
点击边上三个点,配置编辑,调试器选择自定义GDB,修改OpenOCD为自己的安装路径,不确定的话可以命令行查询一下,找到自己安装文件的bin目录下的arm-none-eabi-gdb
whereis arm-none-eabi-gdb
应用后返回界面,打开cfg文件
添加stlink的烧录器配置代码,如下
source [find interface/stlink.cfg]
transport select hla_swd
source [find target/stm32f1x.cfg]
adapter speed 10000
点击小锤子,显示构建成功,连接板子点击运行
文章来源:https://www.toymoban.com/news/detail-836880.html
文章来源地址https://www.toymoban.com/news/detail-836880.html
下载成功,最后祝大家都能实现!!!
到了这里,关于【Clion+OpenOCD+Stm32CubeMX+gcc】linux交叉编译开发stm32全过程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!