雙系統(tǒng):ubuntu 22.04
電腦:拯救者Y7000
板子:stm32f103c8t6
一段摸爬滾打的辛酸史,囊括了我在過程中遇見的所有報(bào)錯(cuò)及解決方法!
記錄自己實(shí)現(xiàn)的步驟,過程已經(jīng)跟新完畢,筆者能力有限所用的方法以及代碼考慮的不一定全面,也希望大佬多多補(bǔ)充!
目錄
安裝stm32cubeIDE
官網(wǎng)下載點(diǎn)擊跳轉(zhuǎn)官網(wǎng)
漢化
點(diǎn)擊跳轉(zhuǎn)下載漢化包
?編輯
安裝stm32cubeMX
下載鏈接官網(wǎng)
多余的swp文件
clion下載安裝
?激活碼寶貴
clion漢化
配置環(huán)境變量
創(chuàng)建桌面圖標(biāo)
stlink安裝
安裝openocd
下載stlink
stm32環(huán)境搭建
編譯工具gcc配置
調(diào)試軟件OpenOCD
再次檢查是否都正確安裝
驗(yàn)證連接
報(bào)錯(cuò)1:,端口占用的原因
報(bào)錯(cuò)2:Warn : UNEXPECTED idcode: 0x2ba01477???????????? Error: expected 1 of 1: 0x1ba01477
錯(cuò)誤3:接口/stlink-v2.cfg已棄用
Clion嵌入式配置
?編輯?編輯
下載成功,祝大家都能實(shí)現(xiàn)!!!
安裝stm32cubeIDE
官網(wǎng)下載點(diǎn)擊跳轉(zhuǎn)官網(wǎng)
自行下載最新版本
下載目錄的終端命令
unzip en.st-stm32cubeide_1.14.0_19471_20231121_1200_amd64.sh.zip
等待
?解壓后執(zhí)行命令
sudo sh ./st-stm32cubeide_1.14.0_19471_20231121_1200_amd64.sh
下滑更多,接受y,回車
成功
漢化
點(diǎn)擊跳轉(zhuǎn)下載漢化包
自行選擇最新版本
打開安裝的stm32cubeIDE 點(diǎn)擊“HELP”→“ Install NewSoftware”來添加新插件。
點(diǎn)擊Add
點(diǎn)next,等新界面后接受條款,點(diǎn)完成finish,等下載結(jié)束就可以了
如果下載過程中會(huì)彈出彈框,全選然后點(diǎn)Trust
重啟完成漢化,這個(gè)插件可以更改主題,自行上網(wǎng)學(xué)習(xí),這里不截圖了
安裝stm32cubeMX
下載鏈接官網(wǎng)
unzip en.stm32cubemx-lin-v6-10-0.zip
解壓后點(diǎn)擊下面這個(gè)文件按步驟安裝即可
個(gè)人問題:安裝之后,由于之前我安裝過,這次屬于重裝,由于以前版本沒有卸載干凈,桌面的圖標(biāo)打不開可以進(jìn)計(jì)算機(jī)的/usr/share/applications文件查看,發(fā)現(xiàn)安裝路徑不一致
如果沒有安裝vim 需要執(zhí)行sudo apt-get install vim
cd /usr/share/applications/
##根據(jù)自己文件名字自行修改
sudo vim st-stm32cubemx-v6-10.desktop
如果你們沒有這個(gè)desktop文件也可以參考下文創(chuàng)建桌面圖標(biāo)的方式添加
[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 編輯文件不正常退出會(huì)產(chǎn)生swp文件, 每次進(jìn)入編輯這個(gè)文件時(shí)都彈出一堆提示信息,只讀是因?yàn)闄?quán)限不夠,解決方法切換到root用戶或者在前面加sudo
W10: 警告: 正在修改一個(gè)只讀文件
需要?jiǎng)h除這個(gè)緩存文件即可,再次進(jìn)入就不會(huì)報(bào)錯(cuò)存在交換文件
sudo rm -r .st-stm32cubemx-v6-10.desktop.swp
clion下載安裝
官網(wǎng)鏈接下載官網(wǎng)
解壓完運(yùn)行解壓文件bin目錄下的clion.sh
?激活碼寶貴
分享一個(gè)好用網(wǎng)站,大家盡快使用不知道什么時(shí)候失效 點(diǎn)擊這個(gè)
clion漢化
直接插件里面找,不用去專門下載漢化包,方便很多
配置環(huán)境變量
vim ~/.bashrc
#打開文件添加
alias clion=/home/<用戶名>/<安裝路徑>/<安裝文件名字版本>/bin/clion.sh
#保存退出終端運(yùn)行下面代碼
source ~/.bashrc
?
之后可以直接通過終端clion就可以打開,也可以通過創(chuàng)建桌面圖標(biāo)
創(chuàng)建桌面圖標(biāo)
cd /usr/share/applications
sudo vim clion.desktop
需要注意:Exec和Icon要根據(jù)自己clion的安裝路徑進(jìn)行修改,并且Comment和Version要和自己安裝的clion的版本號(hào)相對(duì)應(yīng)。最后保存退出,就可以在應(yīng)用程序里看到clion了。
#將下面的代碼拷貝進(jìn)去
[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
如果沒有圖標(biāo)出現(xiàn),可以右鍵復(fù)制或者命令行復(fù)制到桌面,我建議右鍵手動(dòng)復(fù)制法,復(fù)制桌面圖標(biāo)右鍵允許運(yùn)行
命令行復(fù)制如下,要多一步操作修改文件權(quán)限
cd /usr/share/applications/
##有的人桌面是英文,我的是中文
sudo cp clion.desktop ~/桌面/
##切換
cd ~/桌面/
##改權(quán)限 o+rx 增加其他用戶讀和執(zhí)行權(quán)限
sudo chmod o+rx clion.desktop
stlink安裝
安裝openocd
ubuntu的apt可以直接安裝
sudo apt install openocd
下載stlink
下載鏈接點(diǎn)擊 —>?github
選擇合適版本的deb安裝
stm32環(huán)境搭建
準(zhǔn)備:
1、PC:雙系統(tǒng)ubuntu22.04
2、開發(fā)板:STM32F103C8T6
3、交叉編譯工具鏈:gcc-arm-none-eabi
我下載的是X86_64版本的
4、下載調(diào)試軟件:OpenOCD
編譯工具gcc配置
兩個(gè)軟件分別下載解壓
tar -xvif gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
tar -xvif openocd-0.12.0.tar.gz
?配置環(huán)境變量:如果遇到權(quán)限問題就su轉(zhuǎn)到管理員用戶或者chmod改變文件權(quán)限
vim ~/.bashrc
##將下面代碼添加進(jìn)文件最后,注意看路徑是自己的安裝目錄
export PATH=$PATH:/home/h/Apps/tools/stm32_tools/gcc-arm-none-eabi-10.3-2021.10/bin
?保存關(guān)閉
##使環(huán)境變量生效
source ~/.bashrc
##查看安裝的版本
arm-none-eabi-gcc -v
如果安裝版本對(duì)不上,應(yīng)該是系統(tǒng)自帶有安裝版本,這時(shí)候需要?jiǎng)h除原來系統(tǒng)的版本
sudo apt-get remove gcc-arm-none-eabi
?具體詳細(xì)過程可以看——>這里
#路徑需要根據(jù)自己安裝文件路徑更改
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看看會(huì)不會(huì)有下面內(nèi)容,有的話就安裝成功了
arm-none-eabi-gcc --version
##查看版本信息
調(diào)試軟件OpenOCD
進(jìn)入openocd安裝的文件夾使用以下命令可以查看調(diào)試器及其開關(guān)情況
./configure
#配置安裝路徑
./configure --prefix=/usr/local/openocd
下載相關(guān)依賴
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
下存放著目標(biāo)芯片的配置文件(在使用openocd連接開發(fā)板時(shí)需要用到這兩個(gè)配置文件)
再次檢查是否都正確安裝
su
gcc -v
arm-none-eabi-gcc -v
openocd -v
驗(yàn)證連接
- ST-LINK:
- openocd -f
<接口配置文件>
?-f<目標(biāo)芯片配置文件>(絕對(duì)路徑)
- telnet localhost 4444
- >halt 目標(biāo)芯片掛起,相當(dāng)于關(guān)機(jī)
- >flash write_image erase
<燒錄文件>(絕對(duì)路徑)
- >reset 目標(biāo)芯片復(fù)位
-
>exit
關(guān)閉連接
openocd -f /usr/local/share/openocd/scripts/interface/stlink-v2.cfg -f /usr/local/share/openocd/scripts/target/stm32f1x.cfg
報(bào)錯(cuò)1:,端口占用的原因
第一次我的解決方法簡(jiǎn)單粗暴重啟解決,之后我通過網(wǎng)上查詢知道以下解決方法:
端口被占用了,用命令行看看是什么程序占用,下面兩個(gè)都可以查看
lsof -i:端口號(hào)
netstat -tunlp|grep 端口號(hào)
知道pid后,再用kill指令殺掉。
kill -9 進(jìn)程號(hào)
報(bào)錯(cuò)2:Warn : UNEXPECTED idcode: 0x2ba01477
???????????? Error: expected 1 of 1: 0x1ba01477
?恭喜你買到國產(chǎn)芯片(假的stm32f103c8t6)
解決方法:vim打開原來的那一行注釋掉,改為set _CPUTAPID 0x2ba01477,保存關(guān)閉就可以了
cd /usr/local/share/openocd/scripts/target/
sudo vim stm32f1x.cfg
# set _CPUTAPID 0x1ba01477
set _CPUTAPID 0x2ba01477
錯(cuò)誤3:接口/stlink-v2.cfg已棄用
WARNING: interface/stlink-v2.cfg is deprecated, please switch to interface/stlink.cfg
警告:接口/stlink-v2.cfg已棄用,請(qǐng)切換到接口/stlink.cfg
這里我換成stlink.cfg就沒有再報(bào)錯(cuò)了
openocd -f /usr/local/share/openocd/scripts/interface/stlink.cfg -f /usr/local/share/openocd/scripts/target/stm32f1x.cfg
?下圖是沒有報(bào)錯(cuò)的正常情況
Clion嵌入式配置
點(diǎn)擊新建項(xiàng)目 ——> 嵌入式stm32CubeMx ——> 修正
出現(xiàn)下列綠色框說明,文件找對(duì)了,應(yīng)用確認(rèn)后返回新建項(xiàng)目
?構(gòu)建工具鏈這也需要將路徑選對(duì),不然不出現(xiàn)小錘子
?
如果和我一樣有彈窗點(diǎn)下載,這里面板配置文件跳過,這里生成默認(rèn)的是STM32F0304Px后續(xù)可以在cubeMX里更改,參考下列步驟
要保持一致才能覆蓋原文件,也可以通過Mx先創(chuàng)建再從Clion中打開,配置完成后直接點(diǎn)擊右上方的Generate Code,點(diǎn)擊是,
下面彈窗可以選擇登錄用戶也可以直接不管,點(diǎn)繼續(xù),因?yàn)槲尹c(diǎn)了登錄之后一直登錄不上,應(yīng)該和網(wǎng)路有關(guān)。
登錄不上無關(guān)緊要,這里點(diǎn)繼續(xù),就會(huì)來到下面這個(gè)窗口,打開close 回到clion
?回到Clion后板子文件已經(jīng)改變了,自動(dòng)重新配置,并且要求我們選擇面板配置文件,面板配置文件中對(duì)不同型號(hào)的板子有不同的配置文件,擇對(duì)應(yīng)型號(hào)的復(fù)制到項(xiàng)目即可
我的板子是STM32F103C8T6 ,所以選了第一個(gè),注意選復(fù)制到項(xiàng)目并使用,方便查看修改
報(bào)錯(cuò):-- Warning: Did not find file Compiler/-ASM
?????????? -- Configuring incomplete, errors occurred!
點(diǎn)擊邊上三個(gè)點(diǎn),配置編輯,調(diào)試器選擇自定義GDB,修改OpenOCD為自己的安裝路徑,不確定的話可以命令行查詢一下,找到自己安裝文件的bin目錄下的arm-none-eabi-gdb
whereis arm-none-eabi-gdb
應(yīng)用后返回界面,打開cfg文件
添加stlink的燒錄器配置代碼,如下
source [find interface/stlink.cfg]
transport select hla_swd
source [find target/stm32f1x.cfg]
adapter speed 10000
點(diǎn)擊小錘子,顯示構(gòu)建成功,連接板子點(diǎn)擊運(yùn)行
文章來源:http://www.zghlxwxcb.cn/news/detail-836880.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-836880.html
下載成功,最后祝大家都能實(shí)現(xiàn)?。。?/h2>
到了這里,關(guān)于【Clion+OpenOCD+Stm32CubeMX+gcc】linux交叉編譯開發(fā)stm32全過程的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!