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