分享一下嵌入式?HarmonyOS?的學(xué)習(xí)思路
HarmonyOS 是 什 么 ?
我們?cè)趯W(xué)習(xí)一件新的事物之前(比如即將要學(xué)習(xí)的HarmonyOS),首先要去做的,并不是看它的源碼,也不是去技術(shù)博客看它的實(shí)現(xiàn)原理,更不是去一些論壇或者群里面,看一些片面的信息。
了解它最好的方式,就是去官方的網(wǎng)站,看一下官方是如何對(duì)它進(jìn)行定義的,很明顯,在 HarmonyOS 相關(guān)的官方網(wǎng)站里面,已經(jīng)對(duì)其進(jìn)行了具體的定義。
https://device.harmonyos.com/cn/home/
由于我們是要學(xué)習(xí)嵌入式 HarmonyOS 相關(guān)的內(nèi)容,所以,我們關(guān)注的是 Harmony Device 這個(gè)網(wǎng)站,里面包含了一些硬件設(shè)備開發(fā)相關(guān)的內(nèi)容。
HarmonyOS 還有一個(gè)應(yīng)用開發(fā)者網(wǎng)站,HarmonyOS Developer ,這個(gè)網(wǎng)站的內(nèi)容,大多數(shù)都是關(guān)于上層應(yīng)用設(shè)計(jì)開發(fā)的。
這兩個(gè)網(wǎng)頁(yè)建議收藏,并且都瀏覽一遍,在大腦里面建立一個(gè)初步的印象,有些概念可能一時(shí)間看不懂,但不要緊,因?yàn)楹竺嬖趯W(xué)習(xí)的過(guò)程中還是會(huì)不斷地往回看,學(xué)習(xí),就是一個(gè)螺旋式漸進(jìn)的過(guò)程。
下 載 資 料
當(dāng)我們拿到一款開發(fā)板之后,第一時(shí)間肯定是去下載這款開發(fā)板的資料~
小熊派鴻蒙開發(fā)板的全部資料,都是用 gitee 進(jìn)行管理的,直接使用 git clone 命令,就可以把開發(fā)板的全部資料下載到本地
git clone https://gitee.com/bearpi/bearpi-hm_nano
當(dāng)然,也可以直接在 gitee 上在線翻看資料,可以不用下載到本地,下載到本地是因?yàn)椋行㏄DF文檔適合離線觀看,而不需要打開太多瀏覽器窗口~
分 析 資 料 架 構(gòu)
目錄1:bearpi-hm_nano\applications\BearPi\BearPi-HM_Nano\docs\quick-start
quick-start 目錄,主要包含了一些快速入門的文檔,文檔都是 .md 格式,可以使用 Typora 這個(gè)軟件打開。通過(guò)這幾個(gè)文檔,就可以快速把開發(fā)環(huán)境搭建好,在開發(fā)板上面運(yùn)行一個(gè)簡(jiǎn)單的程序。
為了更好的閱讀體驗(yàn),也可以在 gitee 上面,直接在線看這部分的文檔,如下圖所示。
目錄2:bearpi-hm_nano\applications\BearPi\BearPi-HM_Nano\docs\board
重點(diǎn)是 board\課程配套PPT 這個(gè)目錄,里面包含了視頻教程的PPT文檔,這些文檔在我們看視頻的時(shí)候,有很重要的借鑒作用。
搭 建 開 發(fā) 環(huán) 境
根據(jù)文檔【BearPi-HM_Nano十分鐘上手.md】,基本上,十分鐘就可以把小熊派的開發(fā)環(huán)境搭建好了。
這份文檔里面的內(nèi)容,就是用 VMware 軟件,直接導(dǎo)入一個(gè)已經(jīng)配置完的 ubuntu 虛擬機(jī),然后用 RaiDrive軟件,把虛擬機(jī)ubuntu的文件目錄,直接映射到windows上進(jìn)行文件共享。
使用 MobaXterm 作為命令行終端,通過(guò) hpm 包管理器,直接拉取服務(wù)器上面的源碼,然后使用命令進(jìn)行編譯,生成一個(gè) all_in_one 的固件,最后使用 HiBurn 工具,通過(guò)串口進(jìn)行開發(fā)板固件燒錄更新。
整個(gè)過(guò)程非常簡(jiǎn)單,基本上就是 Step by Step 的操作。
這個(gè)十分鐘上手的開發(fā)環(huán)境搭建,由于是直接提供了配置好的ubuntu虛擬機(jī),可以讓初學(xué)者節(jié)省了不少時(shí)間~
如果想了解虛擬機(jī)ubuntu的開發(fā)環(huán)境是如何搭建的,可以看一下以下的視頻,或者看一下之前下載的 PPT 文檔【2_開發(fā)環(huán)境搭建.pdf】
用ubuntu虛擬機(jī)從頭開始搭建開發(fā)環(huán)境,可能對(duì)于沒有 Linux 系統(tǒng)使用經(jīng)驗(yàn)的工程師來(lái)說(shuō),會(huì)顯得有一點(diǎn)復(fù)雜。
所以,如果想快速進(jìn)入開發(fā)階段,可以直接使用配置好的ubuntu;而如果想更深入地體驗(yàn)一下環(huán)境的搭建過(guò)程,可以自己按照上面文檔描述,嘗試去搭建。
基本上,當(dāng)環(huán)境搭建好之后,就可以成功地對(duì)代碼進(jìn)行編譯和燒錄了。
Hello world
學(xué)過(guò)軟件編程,或者學(xué)過(guò)嵌入式軟件開發(fā)的人都知道,通常我們?cè)趧側(cè)腴T的時(shí)候,都是在屏幕上輸出 helloworld,或者點(diǎn)亮開發(fā)板上面的一個(gè)LED~
可以說(shuō),能夠在終端控制臺(tái)上輸出 helloworld,或者點(diǎn)亮一個(gè)LED,就已經(jīng)是成功了一大半。
輸出 helloworld 和 點(diǎn)亮LED,小熊派都錄制了比較詳細(xì)的視頻,跟著視頻一步一步實(shí)現(xiàn),問(wèn)題不大。
輸出 helloworld 和點(diǎn)亮LED,兩個(gè)案例具體的套路都是,需要在sample文件夾里面,創(chuàng)建對(duì)應(yīng)的工程目錄。
然后在工程目錄里面,新增加業(yè)務(wù)相關(guān)的代碼,比如說(shuō) hello_world.c 或者 led_example.c,這些 C 源文件(或頭文件)是我們工程里面必須的,在這些源文件和頭文件里面,實(shí)現(xiàn)我們想要的業(yè)務(wù)邏輯。
以前做單片機(jī)開發(fā),只需要往 MDK 或者 IAR 里面添加好源文件,然后配置好頭文件的路徑,在IDE軟件里面設(shè)置一下編譯相關(guān)的參數(shù),語(yǔ)法沒問(wèn)題基本上就可以編譯了。
但小熊派開發(fā)板的代碼,是使用命令行進(jìn)行編譯的,跟我們以往開發(fā)單片機(jī)使用的那種集成開發(fā)環(huán)境不一樣,所以,還需要新增加一個(gè)編譯腳本 -- BUILD.gn,這個(gè)編譯腳本指定了一些工程編譯的相關(guān)參數(shù)。
小熊派錄制了一節(jié)視頻和提供了一份PPT,是介紹 HarmonyOS 的編譯框架的,里面會(huì)比較詳細(xì)介紹如何使用 BUILD.gn 來(lái)編譯代碼模塊。
內(nèi)核、驅(qū)動(dòng)、網(wǎng)絡(luò)應(yīng)用
完成 helloworld 和點(diǎn)燈之后,基本上,小熊派鴻蒙開發(fā)板算是學(xué)會(huì)最初步的入門使用了。
接下來(lái),按照教程的內(nèi)容,可以分為三大塊:HarmonyOS內(nèi)核、驅(qū)動(dòng)子系統(tǒng)、網(wǎng)絡(luò)應(yīng)用。
對(duì)于 HarmonyOS 內(nèi)核相關(guān)的內(nèi)容,在嵌入式開發(fā)里面,其實(shí)是相當(dāng)于學(xué)習(xí)一個(gè)實(shí)時(shí)操作系統(tǒng)(RTOS),里面涉及到一個(gè)實(shí)時(shí)操作系統(tǒng)必學(xué)的內(nèi)容,比如任務(wù)調(diào)度管理,信號(hào)量和互斥鎖,事件管理,消息隊(duì)列,等等。
內(nèi)容就跟以前學(xué)習(xí) RT-Thread 的時(shí)候差不多, RT-Thread 學(xué)習(xí)筆記
至于驅(qū)動(dòng)子系統(tǒng),就是基于 HarmonyOS 的內(nèi)核,對(duì) Hi3861 這款芯片一些常用的芯片外設(shè)進(jìn)行適配,這些外設(shè)在我們以前學(xué)習(xí)單片機(jī)的時(shí)候,也接觸了不少,原理都是相差不大的。
由于 Hi3861這款芯片是一顆 WiFi SOC,所以,網(wǎng)絡(luò)這一塊的內(nèi)容是必不可少的,如何聯(lián)網(wǎng)是首先要解決的問(wèn)題,TCP/IP 和 UDP 是在做網(wǎng)絡(luò)應(yīng)用的時(shí)候,用得最多的兩個(gè)偏底層的網(wǎng)絡(luò)協(xié)議,這兩個(gè)協(xié)議的實(shí)現(xiàn)原理,一開始不用去深究,會(huì)使用就行了。
MQTT是在物聯(lián)網(wǎng)應(yīng)用中用得最多的通信傳輸協(xié)議,基本上,很多 IoT 云平臺(tái)都支持設(shè)備通過(guò) MQTT 協(xié)議進(jìn)行接入和傳輸數(shù)據(jù),因此,這部分的內(nèi)容也是需要學(xué)習(xí)的。
基本上,按照以上的思路,就可以在小熊派鴻蒙開發(fā)板(Hi3861)上玩透嵌入式HarmonyOS 了。
但了解過(guò)鴻蒙的工程師都知道,鴻蒙并不單指某一個(gè)技術(shù)領(lǐng)域的操作系統(tǒng),嚴(yán)格來(lái)說(shuō),它的存在意義,是想構(gòu)建一種分布式的生態(tài),面向全場(chǎng)景,逐步實(shí)現(xiàn)萬(wàn)物互聯(lián)。
所以,不管目前是從事單片機(jī)應(yīng)用開發(fā),還是從事嵌入式Linux驅(qū)動(dòng)/應(yīng)用開發(fā),或者是從事手機(jī)應(yīng)用開發(fā)以及界面 UI 的前端開發(fā),鴻蒙背后涉及到的技術(shù)知識(shí)點(diǎn)非常多,整套學(xué)完是一件非常費(fèi)精力的事情,普通的工程師也沒有那么多時(shí)間和精力去完成全棧式的學(xué)習(xí)。
因此,根據(jù)自己實(shí)際的工作情況以及時(shí)間安排,選擇自己感興趣的方向進(jìn)行了解和學(xué)習(xí),我覺得,這樣就差不多了~
最后,祝大家學(xué)習(xí)愉快,感謝閱讀!