OpenHarmony輕量系統(tǒng)移植示例
??想了解更多內(nèi)容,請(qǐng)?jiān)L問:??
??51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)??
1、移植類型
OpenHarmony輕量系統(tǒng)的移植比較簡(jiǎn)單,代碼中解耦做得非常好。從代碼的設(shè)計(jì)理念上來(lái)看,移植主要是3部分的內(nèi)容:
- ARCH部分的代碼。
- SoC部分的代碼。
- board級(jí)的代碼。
從上至下我們可以用一張圖來(lái)做對(duì)比:
ARCH也就是架構(gòu),例如ARM架構(gòu)、RISC-V架構(gòu)等。
SoC是具體芯片,例如STM32、海思等,一個(gè)架構(gòu)可以有多個(gè)芯片。
Board是具體開發(fā)板,例如3861有潤(rùn)和的開發(fā)板、也有小熊派的開發(fā)板。
通常來(lái)說(shuō),相關(guān)架構(gòu)的不同SoC,應(yīng)該是共用一套ARCH代碼,不需要為每個(gè)SoC都重新寫一遍ARCH代碼,可以增加代碼的復(fù)用。
相關(guān)SoC的不通過(guò)board開發(fā)板,也應(yīng)該共用一套SoC代碼即可,板卡之間的代碼差異應(yīng)該放到board中。
基于如上設(shè)計(jì),我們移植的類型可以分為3部分:
- ARCH移植:全新的架構(gòu)級(jí)別的移植。
- SoC移植:已支持的架構(gòu)做SoC級(jí)別的移植。
- board級(jí)別的移植:只針對(duì)開發(fā)板做少量移植。
移植的難度也是ARCH最難,SoC較難、board較簡(jiǎn)單。
2、 相關(guān)代碼
我們看下OpenHarmony輕量系統(tǒng)之3部分的代碼分別在哪里:
(1)ARCH相關(guān)代碼。
ARCH相關(guān)的代碼存放在kernel\liteos_m\arch文件夾中。
可以看到目前已支持的架構(gòu)有ARM(M3、M4、M33、M7、ARM9)、csky、risc-v、xtensa。
(2)SoC相關(guān)代碼。
SoC相關(guān)的代碼位于:device\soc。
(3)board相關(guān)代碼。
board相關(guān)的代碼位于:device/board。
(4)vendor相關(guān)代碼。
除了以上3部分的代碼之外,還有廠商配置相關(guān)代碼,這一部分主要是用于編譯系統(tǒng)、HDF配置等,路徑為: vendor。
內(nèi)容如下:
3、移植思路
建議是先從最簡(jiǎn)單的開始,路線如下:
vendor —— board —— soc —— ARCH。
下一篇文章,將開始講解如何創(chuàng)建一個(gè)自己的vendor廠商配置和編譯流程。
一開始會(huì)基于GD32單片機(jī)。
4、 代碼倉(cāng)庫(kù)
代碼倉(cāng)庫(kù)如下:
其中,01_vendor_soc_board 是初步移植的示例,編譯不通過(guò)。
02_vendor_soc_board是已經(jīng)可以編譯通過(guò)并且燒錄到GD32F303上可以正常跑的。
5、 使用說(shuō)明
(1)代碼下載
開發(fā)者可以直接先下載最新的openharmony代碼,參考文章:
https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-lite-sourcecode-acquire.md。
然后下載本倉(cāng)庫(kù)的代碼,將對(duì)應(yīng)的代碼拷貝到device/board 、device/soc、vendor中。
(2)交叉編譯器下載:
我們使用的編譯器是arm-none-eabi-gcc,下載地址:
git clone https://gitee.com/harylee/gcc-arm-none-eabi-10-2020-q4-major.git。
將交叉編譯器環(huán)境變量bin目錄配置到.bashrc文件中。
執(zhí)行arm-none-eabi-gcc -v,有如下打印則表示交叉編譯器配置正確。
(3)編譯。
執(zhí)行hb set,選擇gd32f303_lianzhian。
然后執(zhí)行hb build -f,如下提示,則表示編譯成功。
??想了解更多內(nèi)容,請(qǐng)?jiān)L問:??
??51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)??