干貨!騰訊云服務(wù)器搭建鴻蒙Hi3861開發(fā)板開發(fā)環(huán)境
前言
此網(wǎng)文撰寫耗時兩天,成本288元,重復(fù)操作三遍,只為各位少踩坑,希望各位可以“分享、點贊、在看、留言”四連鼓勵一下。
安裝Hi3861開發(fā)板的開發(fā)環(huán)境可以選擇虛擬機、Docker、 WSL 或者實體Linux系統(tǒng)電腦,這幾種方式都只合適單一的開發(fā)環(huán)境,像我這樣的上班族,家里單位各一個電腦,用起來還是不太方便。
如果這個開發(fā)環(huán)境部署在云端,那豈不是我在哪都可以隨時繼續(xù)之前的工作了?想想就挺美好,恰好雙十一騰訊云有新人活動:288元/三年(不是騰訊云的廣告哈,其他云服務(wù)也一樣,只是阿里云我不是新客戶了,享受不了新人優(yōu)惠),買起!
將文件夾共享出來容易有被黑的風(fēng)險,需謹(jǐn)慎?。?!
騰訊云購買
初始購買界面,烏班圖Ubuntu的系統(tǒng)版本只能選擇18.04,先購買了,然后后面升級為Ubuntu 20.04。
提交訂單,三年費用288元,還是挺香的。
支付成功,進入控制臺就可以管理我們的云服務(wù)器了。
騰訊云服務(wù)器登錄
登錄騰訊云服務(wù)器控制臺
-
登錄騰訊云服務(wù)器控制臺:
https://cloud.tencent.com/login?s_url=https%3A%2F%2Fconsole.cloud.tencent.com%2Fcvm%2Findex
打開上面鏈接,然后微信掃碼即可登錄騰訊云服務(wù)器控制臺:
-
在實例管理頁面,選擇需要登錄的Linux云服務(wù)器:
-
為了避免踩坑,重裝系統(tǒng)為Ubuntu 20.04版本:
-
先重置一下云服務(wù)器的密碼:
默認(rèn)用戶ubuntu和管理員用戶root都進行一次密碼重置。
-
單擊右側(cè)的【登錄】,在彈出的【登錄Linux實例】窗口,為了方便粘貼復(fù)制命令行,選擇【標(biāo)準(zhǔn)登錄方式】,單擊【立即登錄】。如下圖所示:
在打開的 WebShell 登錄頁面,根據(jù)實際需求,選擇【密碼登錄】或者【密鑰登錄】方式進行登錄。如下圖所示:
輸入重置后的密碼,如果登錄成功,WebShell 界面會出現(xiàn) Socket connection established 提示,證明登錄成功。如下圖所示:
-
進行操作之前先進行一下apt-get更新:
sudo?apt-get?update
-
安裝一個圖形界面:
sudo?apt-get?install?ubuntu-desktop
安裝完畢之后,記得重啟一下系統(tǒng):
//管理員權(quán)限下輸入reboot
sudo?reboot
這回登錄方式選擇:其它方式,如下:
點擊“立即登錄”之后就會進入Ubuntu的可視化桌面:
命令行+可視化界面操作更適合我這種Linux小白。
配置鴻蒙OS交叉編譯環(huán)境
之前我們在Win10系統(tǒng)下,使用WSL的方式配置過一次鴻蒙開發(fā)環(huán)境,具體參考如下網(wǎng)文:
鴻蒙開發(fā)環(huán)境搭建、源碼下載和編譯
我們這次在騰訊云服務(wù)器上重新操作一遍,建議下面操作使用標(biāo)準(zhǔn)登錄方式登錄騰訊云服務(wù)器,這樣方便粘貼下面的命令行。
推薦兩次網(wǎng)文結(jié)合來看。
為了避免網(wǎng)友踩坑,我使用騰訊云控制臺的重裝系統(tǒng)功能,先后配置了三次環(huán)境,記錄了詳細(xì)搭建過程,分享如下。
查看Ubuntu Python版本
使用如下指令列出的python鏈接情況:
cd?/usr/bin
ls?-l?python*
文檔中有說明,一定要用python3.7及以上版本,本系統(tǒng)中已含有python3.8,滿足條件。
配置 repo 工具
本系統(tǒng)如果直接下載鴻蒙的代碼的話,可能會報如下錯誤:
repo?init?-u?https://gitee.com/openharmony/manifest.git?-b?master?--no-repo-verify
說明本Linux系統(tǒng)上還沒有配置Repo命令,需要先下載并配置Repo命令行工具:
mkdir?~/bin/?
sudo?apt?install?curl?????#?如果沒有?curl?命令需要先下載?
curl?https://gitee.com/oschina/repo/raw/fork_flow/repo-py3?>?~/bin/repo?
chmod?+x?~/bin/repo?
echo?'export?PATH=~/bin:$PATH'?>>?~/.bashrc?
source?~/.bashrc
下載Harmony OS源碼
mkdir?-p?~/harmonyos/openharmony?&&?cd?~/harmonyos/openharmony?
sudo?apt?install?git?python?# repo 工具本身是 python 腳本,它會調(diào)用 git 命令下載單個代碼倉?
#開始前需要配置`user.name`和`user.email`,如果沒有配置,使用如下命令進行配置:?
git?config?--global?user.name?"yourname"?
git?config?--global?user.email?"your-email-address"?
repo?init?-u?https://gitee.com/openharmony/manifest.git?-b?master?--no-repo-verify?
repo?sync?-c?#?以后每天同步遠(yuǎn)程倉的修改,只需要執(zhí)行這一條命令即可
下載完成:
安裝文件系統(tǒng)打包工具
-
運行“mkfs.vfat”,如果未找到該命令,需要安裝 -
運行“mcopy”,如果未找到該命令,需要安裝 sudo apt-get install dosfstools mtools # 官方文檔說明的兩個文件系統(tǒng)打包工具 sudo apt-get install zip # 官方文檔雖然沒有寫,但是打包 rootfs 過程中需要使用
到了此步驟,我測試“mkfs.vfat”和mcopy”指令系統(tǒng)中已存在,則不需要經(jīng)過上面步驟進行安裝了,具體測試如下:
下載、配置編譯工具鏈
使用如下命令,分別下載 gn、ninja、LLVM、hc-gen 包,根據(jù)官方文檔修改,一步到位, 不用反復(fù)復(fù)制粘貼!
#下載 gn/ninja/LLVM/hc-gen 包:?
URL_PREFIX=https://repo.huaweicloud.com/harmonyos/compiler?
wget?$URL_PREFIX/gn/1523/linux/gn.1523.tar?
wget?$URL_PREFIX/ninja/1.9.0/linux/ninja.1.9.0.tar?
wget?$URL_PREFIX/clang/9.0.0-34042/linux/llvm-linux-9.0.0-34042.tar?
wget?$URL_PREFIX/hc-gen/0.65/linux/hc-gen-0.65-linux.tar
#編譯?hi3861?需要?riscv?編譯工具鏈?
wget?$URL_PREFIX/gcc_riscv32/7.3.0/linux/gcc_riscv32-linux-7.3.0.tar.gz?
#解壓 gn/ninja/LLVM/hc-gen 包:?
tar?-C?~/?-xvf?gn.1523.tar?
tar?-C?~/?-xvf?ninja.1.9.0.tar?
tar?-C?~/?-xvf?llvm-linux-9.0.0-34042.tar?
tar?-C?~/?-xvf?hc-gen-0.65-linux.tar?
tar?-C?~/?-xvf?gcc_riscv32-linux-7.3.0.tar.gz?
#向?~/.bashrc 中追加 gn/ninja/LLVM/hc-gen 路徑配置:?
cat?<>?~/.bashrc?
export?PATH=~/gn:\$PATH?
export?PATH=~/ninja:\$PATH?
export?PATH=~/llvm/bin:\$PATH?
export?PATH=~/hc-gen:\$PATH?
export?PATH=~/gcc_riscv32/bin:\$PATH?
export?PATH=~/.local/bin:\$PATH
EOF?
#生效環(huán)境變量?
source?~/.bashrc
準(zhǔn)備 virtualenv
sudo?apt?install?python3-pip
#安裝?virtualenv?
pip3?install?virtualenv
#創(chuàng)建使用?python3.8?為默認(rèn)?python?解釋器的?virtualenv?
mkdir?~/harmonyos/venv?&&?virtualenv?-p?python3.8?~/harmonyos/venv?
#激活?virtualenv,激活后的?pip3?install?會將包文件緩存到相應(yīng)的子目錄中?
source?~/harmonyos/venv/bin/activate?
#安裝?setuptools?和?kconfiglib?
pip3?install?setuptools?kconfiglib?
#安裝編譯?hi3861?需要的?pip?包?
pip3?install?scons?ecdsa?pycryptodome?
pip3?install?--upgrade?--ignore-installed?six?
#關(guān)閉虛擬環(huán)境
deactivate
可選:將激活腳本添加到 bashrc 中,下次登錄默認(rèn)自動激活此 python 虛擬環(huán)境,可以使用deactivate 使虛擬環(huán)境無效。
cat?<>?~/.bashrc?
source?~/harmonyos/venv/bin/activate?
EOF
#生效環(huán)境變量?
source?~/.bashrc
編譯源碼
編譯 3861 目標(biāo)平臺的命令執(zhí)行:/bin/python build.py wifiiot
安裝并配置Samba服務(wù)器
參考如下網(wǎng)文:
安裝并配置Samba服務(wù)器--將HarmonyOS的文件映射到Windows 中
安裝samba
sudo?apt-get?install?samba
配置samba
root權(quán)限下終端輸入如下指令:
sudo?vim?/etc/samba/smb.conf?
配置文件末尾添加:
[sharepath]???
comment?=?harmony
path?=?/home/ubuntu/harmonyos/openharmony
writeable?=?yes
valid?user?=?ubuntu
ESC鍵退出vim的插入狀態(tài),然后輸入?:wq ,保存退出vim。
添加samba用戶
添加samba用戶:ubuntu ,密碼設(shè)置為:123456。
sudo?smbpasswd?-a?ubuntu
重啟samba服務(wù)
sudo?service?smbd?restart
端口映射
因為出于安全考慮,騰訊云禁止了139和445端口,這樣在騰訊云上面配置的samba服務(wù)器是無法連接上的。
我們修改samba服務(wù)器使用的端口:
sudo?vim?/etc/samba/smb.conf?
在[global]字段下面添加一句:smb ports = 4455
[global]
???smb?ports?=?4455
然后保存退出,然后重啟samba服務(wù)。
sudo?service?smbd?restart
為了能夠正常使用samba服務(wù)器,我們需要對本地Windows端口號進行映射,網(wǎng)上找到一個軟件divertTCPconn.exe可以實現(xiàn)此功能,在控制臺cmd中輸入:
divertTCPconn.exe?445?4455
自己編寫一個腳本,雙擊自動運行就好了,省得每次都要在控制臺中輸入命令。
映射網(wǎng)絡(luò)驅(qū)動器
端口映射完成之后,保持控制臺界面開啟狀態(tài),右鍵“此電腦” -->?“映射網(wǎng)絡(luò)驅(qū)動器”--> 輸入“\\你的服務(wù)器ip\sharepath”--> 點擊完成
賬號為上面設(shè)置的:ubuntu,密碼為123456。
Windows下編譯
鴻蒙系統(tǒng)固件編譯和燒寫的方法:
源碼編譯
IDE終端工具打開方法
使用OpenHarmony IDE工具DevEco的終端工具連接Linux服務(wù)器。(OpenHarmony IDE工具DevEco集成了終端工具的能力,基本使用請參考官方指導(dǎo)文檔)依次點擊“View”、“Terminal”,即可打開IDE終端工具。
ssh連接虛擬機
先啟動虛擬機,然后在VS Code的終端(TERMINAL)界面輸入如下指令:
ssh?harmony@172.18.3.254
其中172.18.3.254為虛擬機Ubuntu Linux的IP,我們可以看到命令執(zhí)行完畢之后,VS Code的終端進入了虛擬機的終端:
編譯代碼
在VS Code的終端界面輸入如下指令:
python?build.py?wifiiot
注意:?要在 /home/harmony/harmony/code/code-1.0 目錄下執(zhí)行上面的指令。
編譯結(jié)束后,如果出現(xiàn)“BUILD SUCCESS”字樣,則證明構(gòu)建成功。
構(gòu)建成功后,使用指令:
ls?-l?out/wifiiot/
查看輸出文件,會在./out/wifiiot/路徑中生成以下文件,我們看到時間是剛剛編譯的時間,說明沒有問題,至此編譯構(gòu)建流程結(jié)束。
Ubuntu虛擬機中查看,下圖中的目錄和上圖的目錄兩者是一樣的。
固件下載
燒錄Hi3861 WLAN模組固件可以通過OpenHarmony IDE工具DevEco完成,
固件下載過程
-
安裝串口驅(qū)動
Hi3861 WLAN模組上面有一個Type C USB接口與CH340G芯片連接,實現(xiàn)了USB轉(zhuǎn)串口功能。
我們使用USB線連接WLAN模組(需預(yù)先安裝USB轉(zhuǎn)串口驅(qū)動,安裝時需要先連接模組,驅(qū)動下載地址:http://www.wch.cn/search?q=ch340g&t=downloads),Type C的另一端與USB口相連,然后在設(shè)備管理器中查看COM口,如USB-SERIAL CH340(COM3),該串口集成了燒錄、日志打印、AT命令等功能。
-
IDE燒錄配置
串口燒錄參數(shù)配置
-
Baud Rate:921600 -
Data bit:8
Burn Files選擇
文件存放路徑:
.\out\wifiiot\Hi3861_wifiiot_app_allinone.bin
上面截圖,在Windows系統(tǒng)下直接打開了虛擬機中的文件,使用的是Samba服務(wù)器實現(xiàn)的,具體實現(xiàn)細(xì)節(jié)可以參考:
安裝并配置Samba服務(wù)器--將HarmonyOS的文件映射到Windows 中
RISC-V系列代碼燒錄
點擊下圖中Burn右側(cè)的三角按鈕,進入燒寫固件模式,稍后上面會彈出串口選擇列表,選擇對應(yīng)的串口(我的機器使用COM3與Hi3861模塊相連),如果環(huán)境搭建沒有問題的話,即可完成固件的下載。
如果點擊下載的三角按鈕,出現(xiàn)下圖所示錯誤:
根據(jù)錯誤提示,使用如下指令查找npm所在路徑:
npm?config?get?prefix
那么,我們在系統(tǒng)環(huán)境變量中添加:
NODE_PATH = C:\Users\Administrator\AppData\Roaming\npm\node_modules
即可。
測試WiFi模組
使用串口助手工具,連接Hi3861模組串口(我的機器是COM3),并配置好波特率115200,同時勾選“發(fā)送新行”,確保輸入字符串以"\r\n"結(jié)尾,避免AT命令無法輸入。
復(fù)位WLAN模組,終端界面顯示“ready to OS start”,證明WiFi模組復(fù)位成功。
在窗口助手中,依次執(zhí)行如下AT命令,使Hi3861模塊啟動STA模式,連接指定AP熱點,并開啟DHCP功能。
命令 | 含義 |
---|---|
AT+STARTSTA | 啟動STA模式 |
AT+SCAN | 掃描周邊AP |
AT+SCANRESULT | 顯示掃描結(jié)果 |
AT+CONN="SSID",,2,"PASSWORD" | 連接指定AP,其中SSID/PASSWORD為待連接的熱點名稱和密碼 |
AT+STASTAT | 查看連接結(jié)果 |
AT+DHCP=wlan0,1 | 通過DHCP向AP請求wlan0的IP地址 |
AT+IFCFG | 查看模組接口IP |
AT+PING=X.X.X.X | 查看WLAN模組與網(wǎng)關(guān)聯(lián)通是否正常,其中X.X.X.X需替換為實際的網(wǎng)關(guān)地址 |
ssh連接服務(wù)器
在VS Code的終端(TERMINAL)界面輸入如下指令:
ssh?ubuntu@***.***.***.***(服務(wù)器IP)
編譯代碼
在VS Code的終端界面輸入如下指令完成代碼編譯:
source?~/.bashrc
python?build.py?wifiiot
編譯成功
下載成功
至此,騰訊云上搭建Hi3861開發(fā)環(huán)境完畢,這樣我也就不用編寫VS Code代碼前先啟動一下虛擬機了,大家感興趣的可以玩玩哈。
-END-
來源 |?嵌入式從0到1
作者 |?程序員XiaoHa
|?整理文章為傳播相關(guān)技術(shù),版權(quán)歸原作者所有?|
|?如有侵權(quán),請聯(lián)系刪除?|
【1】大佬終于把鴻蒙OS講明白了,收藏了!
【2】必看!影響嵌入式薪資的各種原因!
【3】我的單片機轉(zhuǎn)嵌入式Linux之路:一位大佬的完美轉(zhuǎn)變!
【4】電氣畢業(yè)生在國家電網(wǎng)都干啥工作?
【5】讓你永遠(yuǎn)忘不了的傅里葉變換解析
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!