昨天在B站上突然看到了一個短視頻,是在正點原子的戰艦V3開發板上移植華為的Huawei LiteOS操作系統,就是這個視頻:看完鴻蒙OS發布會,試用華為的物聯網操作系統Lite OS(B站),於是呢,心血來潮,想在自己現有的開發板上移植Huawei LiteOS操作系統,在操作之前想要考清楚一些基本知識。 首先,什么是Huawei LiteOS,百度搜索Huawei LiteOS,可以搜到很多關於Huawei LiteOS的信息,並且還有官網,進入官網:華為Huawei LiteOS官網。稍微做一說明,Huawei LiteOS是一款針對物聯網領域的輕量級操作系統,也就是說這是一種可以安裝到單片機上的操作系統軟件,並且是開源項目,用戶可以從GitHub上獲取該項目的源碼:Huawei LiteOS源碼,
除此之外,該項目支持ARM Cortex-M0、M3、M4、M7等芯片架構。這也就說明了在正點原子的戰艦V3開發板上移植華為的Huawei LiteOS操作系統是可行的,戰艦V3開發板是用的STM32F103ZET6,芯片內核架構是ARM Cortex-M3。
我手頭上現有的板子是秉火的挑戰者開發板,芯片是STM32F429IGT6,內核架構是ARM Cortex-M4,按說明是可以正常移植的。那么現在開始進行移植,參考資料:Huawei LiteOS移植指南,因為這個指南寫的非常的詳細,本帖子不會一步一步再重新寫一篇,而是做一個總結型的歸納以及一些關鍵誤區的提醒。
【第一步】做好相關的軟件、驅動准備
准備的軟件有:
(1)STM32CubeMX ST官方推出的圖形化編程軟件 下載鏈接:STM32CubeMX下載
(2)Keil uVision5 德國Keil公司開發的編譯軟件 下載鏈接:Keil uVision5下載
(3)串口驅動CH340 嵌入式開發必備驅動,網上有很多
(4)程序下載器驅動ST-Link或者J-Link等
(5)Git 用於克隆GitHub上邊的源碼 下載鏈接:Git forWindows
【第二步】構建裸機工程
下載好STM32CubeMX軟件並安裝好相應的庫,然后就可以開始搭建相應的裸機工程。STM32CubeMX運行依賴Java1.7及以上的環境,所以如果主機上未安裝Java1.7及以上環境的需要安裝相應的環境。查看主機Java是否安裝及查看Java版本號的DOS指令為:
java 查看是否安裝java環境
java -version 查看java版本
需要注意的是:STM32CubeMX隨着版本的更新,界面都有所改變,但是核心的東西是大體不變的。
最后的配置如圖所示:
配置完成后點擊生成源代碼按鈕:
最后生成的裸機工程如圖所示:
【第三步】獲取Huawei LiteOS源碼
源碼地址:Huawei LiteOS源碼
教程里面要用到一個叫做Git的工具,這個工具可以從GitHub上Clone源碼,如果不知道都是直接按如下圖所示的步驟直接下載了。
我做了對比,按教程上下載方式和我們小白下載的方式下載文件還確實有點不太一樣,對比如下:
LiteOS(Git下載) LiteOS-master(小白萌新直接下載)
其實發現,光從文件名上來看,其實差別並不是很大,但是時間關系,我沒有用LiteOS-master這份源碼文件做測試。
這一步中需要注意的是Git工具的使用,剛注冊GitHub的賬戶是無法使用SSH下載的,需要填寫秘鑰。
(1)先下載Git這個軟件:Git for Windows,並安裝。
(2)然后在任意目錄,右鍵選擇Git Bash Here,它會打開一個黑框框,
(3)輸入指令:ssh-keygen -t rsa -b 4096 -C "GitHub用戶注冊郵箱" 回車,需要正確填寫我們注冊的GitHub用戶的注冊郵箱,然后就會自動生成一對秘鑰,一對是指兩個,一個是公鑰,一個是私鑰。公鑰用於開通GitHub的SSH服務。
輸入這個指令之后會有三步是需要我們來填寫和確認,如圖所示:
這兩個密鑰都存放在C盤的的User目錄下的Administrator下的.ssh里面。先去如該目錄,指令為:
cd ~/.ssh
然后查看公鑰和私鑰的指令分別為:
cat id_rsa 查看私鑰
cat id_rsa.pub 查看公鑰
復制公鑰指令為:
clip < id_rsa.pub
然后就可以在GitHub中開通SSH服務了。
下載源碼指令為:
git clone -b develop git@github.comiteOS/LiteOS.git
等待下載完成即可
【第四步】Huawei LiteOS源碼移植
這一步要細心,跟着教程一步一步來,需要注意的是我們下載的源碼可能和教程的不太一樣,我們用的OS_CONFIG文件是在LiteOS\targets\STM32F103VET6_NB_GCC這個目錄下面,其它跟着教程該就可以了。