【FFH】Linux下配置小熊派-鴻蒙·叔設(shè)備開發(fā)(南向)的開發(fā)環(huán)境
原創(chuàng)??51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)??
??https://harmonyos.51cto.com??
一、前言
BearPi-HM Micro開發(fā)板是一塊高度集成并可運(yùn)行Openharmony系統(tǒng)的開發(fā)板,板載高性能的工業(yè)級處理器STM32MP157芯片,搭配4.3寸LCD電容式觸摸屏,并板載wifi電路及標(biāo)準(zhǔn)的E53接口。上面是廢話,單純介紹小熊派的簡單情況。官方有一個看似十分有一個十分簡單的“10分鐘”教程,官網(wǎng)教程。但是我覺得他的開發(fā)模式反而把簡單的事情復(fù)雜化了。官方考慮到大多數(shù)人用Windows系統(tǒng),而鴻蒙代碼的編譯又要在Linux系統(tǒng),所以采用了虛擬機(jī)裝Linux系統(tǒng)的方案,代碼編譯完成后卻又把固件放在Windows系統(tǒng)用STM32CubeProgrammer進(jìn)行一個固件的燒錄。這樣繞來繞去估計(jì)好多小伙伴都繞暈了。STM32CubeProgrammer是用JAVA開發(fā)的,Windows、Linux、MacOS全平臺通用,所以費(fèi)不著在繞回Windows進(jìn)行一個燒寫固件的操作,直接在Linux下燒錄就行了。本著奧卡姆剃刀原理的精神,寫下這篇教程。本篇文章適合有Linux基礎(chǔ),裝了雙系統(tǒng)或者U盤裝了Linux系統(tǒng)的小伙伴,以及準(zhǔn)備在Linux繼續(xù)開發(fā)小熊派的小伙伴(虛擬機(jī)未實(shí)測,出了問題自己想辦法)。以Ubuntu 20.04系統(tǒng)為例,從0開始一點(diǎn)點(diǎn)實(shí)現(xiàn)安裝,編譯,燒錄全流程。本以為Stm32CubeProgrammer裝了在Linux上就完事了,誰知遇到了一些讓我不知所措的問題,好在最好成功解決
二、準(zhǔn)備工作
一臺以及裝在實(shí)體機(jī)上的Linux系統(tǒng),這里以Ubuntu為例。(不推薦虛擬機(jī),出了問題自己解決)
暢通無阻的網(wǎng)絡(luò)
小熊派-鴻蒙·叔(BearPi-HM Micro)一臺
三、流程簡介
修改bash --> 安裝依賴 --> 檢查Python3.7+ --> 安裝hb --> 安裝mkimage.stm32 --> 安裝STM32CubeProgrammer --> 安裝CH340驅(qū)動 --> 獲取源碼 --> 編譯燒錄
四、開始安裝
1.將Linux shell改為bash
#查看shell是否為bash.
ls -l /bin/sh
#如果為顯示為/bin/sh -> bash則為正常,否則請按以下方式修改
#方法一:在終端運(yùn)行如下命令,然后選擇 no。
sudo dpkg-reconfigure dash
#方法二:先刪除sh,再創(chuàng)建軟鏈接。
rm -rf /bin/sh
sudo ln -s /bin/bash /bin/sh
2.安裝安裝必要的庫和工具
sudo apt-get install build-essential gcc g++ make zlib* libffi-dev e2fsprogs
pkg-config flex bison perl bc openssl libssl-dev libelf-dev libc6-dev-amd64
binutils binutils-dev libdwarf-dev u-boot-tools mtd-utils gcc-arm-linux-gnueabi
cpio device-tree-compiler net-tools openssh-server git vim
openjdk-11-jre-headless
3.檢查Python環(huán)境
# 輸入如下命令,查看python版本號,確保版本python3.7+
python3 --version
# 如果低于python3.7版本,不建議直接升級,請按照如下步驟重新安裝。
# 以python3.8為例,按照以下步驟安裝python
sudo apt-get install python3.8
# 設(shè)置python和python3軟鏈接為python3.8
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
# 安裝并升級Python包管理工具(pip3)
sudo apt-get install python3-setuptools python3-pip -y
sudo pip3 install --upgrade pip
4.安裝hb
# 運(yùn)行安裝命令
python3 -m pip install --user ohos-build
# 配置環(huán)境命令(用Ubuntu自帶的gedit比較方便,如果是其他Linux發(fā)行版的可以使用vi或vim)
gedit ~/.bashrc
# 將以下命令拷貝到.bashrc文件的最后一行,(ctrl+s)保存并退出
export PATH=~/.local/bin:$PATH
# 執(zhí)行如下命令更新環(huán)境變量
source ~/.bashrc
# 測試是否安裝成功
hb -h
# 會看到如下輸出
5.安裝mkimage.stm32
# 1.新建tools目錄
mkdir ~/tools
# 2.下載mkimage.stm32工具,并復(fù)制到~/tools目錄下(“~”代表的是你的用戶目錄)
# 3.執(zhí)行以下命令修改mkimage.stm32工具權(quán)限
chmod 777 ~/tools/mkimage.stm32
# 4.設(shè)置環(huán)境變量
gedit ~/.bashrc
# 將以下命令拷貝到.bashrc文件的最后一行,保存并退出
export PATH=~/tools:$PATH
# 執(zhí)行如下命令更新環(huán)境變量
source ~/.bashrc
6.安裝Stm32CubeProgrammer
下載Stm32CubeProgrammer的Linux安裝包,官網(wǎng)鏈接
解壓雙擊.linux文件安裝
一路下一步
添加規(guī)則文件(這一步要了我的命,作為最核心的一步,折騰不好差點(diǎn)就放棄了,好在老師救了我)
找到Stm32CubeProgrammer安裝目錄,安裝時(shí)可以選擇,在用戶目錄下
# 進(jìn)入Drivers/rules文件夾
cd Drivers/rules
# 復(fù)制.rules文件到/etc/udev/rules.d
sudo cp 49-stlinkv2-1.rules 49-stlinkv2.rules 49-stlinkv3.rules 50-usb-conf.rules /etc/udev/rules.d
完成。(添加規(guī)則文件這一步十分重要,沒有添加在Stm32CubeProgrammer中就檢測不到USB了)
7.安裝CH340驅(qū)動
下載CH340的Linux驅(qū)動(不要糾結(jié)340還是341的問題,能用就行),官網(wǎng)鏈接
解壓到任意目錄
# 查看Linux自帶的驅(qū)動
ls /lib/modules/$(uname -r)/kernel/drivers/usb/serial
# 刪除原有驅(qū)動
cd /lib/modules/$(uname -r)/kernel/drivers/usb/serial
sudo rm -rf ch341.ko
# 查詢操作系統(tǒng)的內(nèi)核版本號
uname -r
到這個網(wǎng)站尋找對應(yīng)的代碼
打開ch34x.c,替換掉里面的代碼
# 在當(dāng)前目錄打開命令行
make
# 復(fù)制ch34x.ko文件
sudo cp ch34x.ko /lib/modules/$(uname -r)/kernel/drivers/usb/serial
# 輸入lsmod命令查看是否安裝成功
lsmod
# 存在代表成功
Module Size Used by
usbserial 53248 1 ch34x
8.獲取源碼
在此之前需要先注冊gitee賬號,并配置郵箱。源碼鏈接
git config --global user.name "yourname"
git config --global user.email “your-email-address"
git clone https://gitee.com/bearpi/bearpi-hm_micro_small.git -b master
9.編譯安裝
# 進(jìn)入下載路徑
cd ~/bearpi-hm_micro_small
# 開始編譯
hb set
# 輸入當(dāng)前路徑
.
# 回車選擇“bearpi-hm_micro”
# 編譯
hb build -t notest --tee -f
# 等待直到屏幕出現(xiàn):build success字樣,說明編譯成功
10.復(fù)制系統(tǒng)鏡像
cp out/bearpi_hm_micro/bearpi_hm_micro/OHOS_Image.stm32 applications/BearPi/BearPi-HM_Micro/tools/download_img/kernel/
cp out/bearpi_hm_micro/bearpi_hm_micro/rootfs_vfat.img applications/BearPi/BearPi-HM_Micro/tools/download_img/kernel/
cp out/bearpi_hm_micro/bearpi_hm_micro/userfs_vfat.img applications/BearPi/BearPi-HM_Micro/tools/download_img/kernel/
11.燒寫固件
將開發(fā)板的撥碼開關(guān)上撥到“000”燒錄模式,并按一下開發(fā)板的RESET按鍵
點(diǎn)擊STM32CubeProgrammer工具的“+”按鈕,
然后選擇燒錄配置的tsv文件。
# 目錄地址
bearpi-hm_micro_small/applications/BearPi/BearPi-HM_Micro/tools/download_img/flashlayout
點(diǎn)擊Browse按鈕,然后選擇工程源碼下的燒錄鏡像路徑,選擇到download_img即可
# 路徑為
bearpi-hm_micro_small/applications/BearPi/BearPi-HM_Micro/tools/download_img
點(diǎn)擊Download按鈕啟動鏡像燒錄,并等待燒錄完畢
12.下載minicom工具
# 安裝minicom
sudo apt-get install minicom
# 查看串口信息
dmesg | grep ttyUSB
# 修改minicom 配置
sudo minicom -s
選擇serial port setup 回車
按下鍵盤A 修改serial Device 的 值為步驟2的串口信息
按下回車,光標(biāo)會走到Change which setting?
然后回車,然后選擇 Save setup as dfl 回車,回車后選擇Exit 回車
# 連接小熊派終端
sudo minicom
??51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)??
??https://harmonyos.51cto.com??