作為OpenAtom OpenHarmony(簡(jiǎn)稱“OpenHarmony”)社區(qū)單BLE的輕量級(jí)設(shè)備,匯頂科技GR551x系列低功耗藍(lán)牙開(kāi)發(fā)板已經(jīng)順利通過(guò)OpenHarmony兼容性工作組的兼容性測(cè)試審核,正式完成合入OpenHarmony 主干分支(master分支)。
李東山來(lái)自深圳市匯頂科技股份有限公司,是 BLE 產(chǎn)品開(kāi)發(fā)部的一名研發(fā)工程師,從 2021 年 9 月開(kāi)始承擔(dān) BLE SoC GR551x 接入 OpenAtom OpenHarmony生態(tài)的適配任務(wù)。通過(guò)采訪,他向我們?cè)敿?xì)分享了項(xiàng)目開(kāi)發(fā)過(guò)程中的難點(diǎn)和經(jīng)驗(yàn),以下為采訪整理:
作為開(kāi)發(fā)領(lǐng)域知名的技術(shù)大牛,您最初為什么會(huì)選擇加入OpenHarmony生態(tài)、參與開(kāi)源共建呢?您認(rèn)為,OpenHarmony項(xiàng)目最吸引人的點(diǎn)在哪里?
OpenHarmony 是一款面向全場(chǎng)景、全連接、全智能時(shí)代的分布式操作系統(tǒng),它面向萬(wàn)物互聯(lián),非常契合我們 BLE SoC 產(chǎn)品應(yīng)用方向,選擇加入 OpenHarmony 生態(tài),希望能一起參與共建 OpenHarmony 生態(tài)系統(tǒng),為促進(jìn)萬(wàn)物互聯(lián)和千行百業(yè)的繁榮發(fā)展貢獻(xiàn)我們的一份力量。
OpenHarmony 代碼遵循 Apache 2.0 等商業(yè)友好的開(kāi)源協(xié)議,所有企業(yè)、機(jī)構(gòu)與個(gè)人均可基于 OpenHarmony 開(kāi)源代碼,結(jié)合自身優(yōu)勢(shì),去做各領(lǐng)域的操作系統(tǒng)發(fā)行版及終端產(chǎn)品。
您在什么時(shí)候組建了OpenHarmony開(kāi)源項(xiàng)目團(tuán)隊(duì)?通過(guò)多久完成了GR5515 Starter Kit開(kāi)發(fā)板的適配,核心代碼已合入主干,現(xiàn)在被OpenHarmony PMC委員會(huì)推選為“代碼月度貢獻(xiàn)之星”,真的太了不起了!您方便給我們介紹一下這個(gè)產(chǎn)品嗎,或者這段經(jīng)歷嗎?這么短時(shí)間達(dá)成了這樣好的效果,請(qǐng)問(wèn)您的“秘訣”都有哪些呢?
我們是在 2021 年的 9 月開(kāi)始投入資源適配 OpenHarmony。經(jīng)過(guò)兩個(gè)多月的努力,將我們首款 Bluetooth LE 輕量設(shè)備芯片 GR551x 系列 SoC 適配上 OpenHarmony,2021 年 11 月 18 日順利通過(guò) OpenHarmony 兼容性測(cè)評(píng), 并于 2022 年 1 月 7 日正式合入 OpenHarmony 主干。
(GR5515 Starter Kit 適配代碼倉(cāng)庫(kù))
能夠在短時(shí)間內(nèi)完成開(kāi)發(fā)板適配工作不僅是因?yàn)槲覀兩鷳B(tài)小組小伙伴們齊心協(xié)力,通力配合, 還得益于 OpenHarmony 完備的開(kāi)發(fā)平臺(tái)和工具鏈,優(yōu)秀的代碼框架,豐富的文檔資源。剛開(kāi)始我們的倉(cāng)庫(kù)在 SIG 上孵化,兩次畢業(yè)答辯評(píng)審后代碼合入主干,非常感謝社區(qū)的老師們給予了很多專業(yè)指導(dǎo)和支持。
能開(kāi)發(fā)出這么一個(gè)優(yōu)秀的產(chǎn)品,將核心代碼合入主干,您和您的團(tuán)隊(duì)一定付出了很多。可以請(qǐng)您給我們分享一下,開(kāi)發(fā)這個(gè)產(chǎn)品的整個(gè)過(guò)程,包括前期、中期、后期,您們具體都做了哪些工作,投入了多少人力和資源嗎?
開(kāi)發(fā)板適配前期,我們對(duì) OpenHarmony 輕量系統(tǒng)進(jìn)行了學(xué)習(xí)和調(diào)研,充分評(píng)估可行性后開(kāi)始嘗試適配。萬(wàn)事開(kāi)頭難,剛開(kāi)始適配 V1.1.2-LTS 版本,從搭建開(kāi)發(fā)環(huán)境、熟悉構(gòu)建系統(tǒng)、移植第一行代碼,解決了很多難題,也踩過(guò)很多坑。終于,兩周后系統(tǒng)在我們的 SoC 上穩(wěn)定運(yùn)行起來(lái)了。
項(xiàng)目中期我們升級(jí)到了 V3.0.0-LTS,3.0 版本引入了許多新特性,我們開(kāi)始適配 HDF 驅(qū)動(dòng)、BLE 接口、文件系統(tǒng)、低功耗等,并通過(guò)了兼容性測(cè)評(píng)。
項(xiàng)目后期我們與主干 master 版本對(duì)齊,master 版本引入 board 與 soc 分離的先進(jìn)設(shè)計(jì)理念,我們對(duì)代碼框架進(jìn)行了大量重構(gòu)優(yōu)化,代碼架構(gòu)和規(guī)范都符合要求后,代碼合入 OpenHarmony 主干。
匯頂科技非??春?OpenHarmony,我們持續(xù)投入人力在該項(xiàng)目上,目前基本完成了首款 BLE Soc GR5515 芯片的適配工作,未來(lái)我們也會(huì)對(duì)適配的代碼進(jìn)行持續(xù)優(yōu)化和維護(hù),同時(shí)也會(huì)積極參與輕量系統(tǒng)的圖形顯示和 BLE IoT 方向的共建工作。
在整個(gè)開(kāi)發(fā)進(jìn)程中,您和您的團(tuán)隊(duì)遇到過(guò)哪些技術(shù)上或其他方面的難題?這些難題又是如何被逐一解決?在這些難題被解決的過(guò)程中,您總結(jié)了哪些寶貴的經(jīng)驗(yàn)or教訓(xùn)?
在開(kāi)發(fā)初期,網(wǎng)上幾乎沒(méi)有對(duì) ARM 架構(gòu)的輕量系統(tǒng)移植適配的指導(dǎo)文檔,構(gòu)建環(huán)境也很復(fù)雜,可參考的開(kāi)發(fā)板就 3 塊,對(duì)于我這種剛接觸 OpenHarmony 的小白來(lái)說(shuō),不知道怎么去加入我們的代碼,不知道如何構(gòu)建,差點(diǎn)被遇到的各種困難“勸退”。好在 OpenHarmony 自帶了一款基于 RSIC-V 架構(gòu)的開(kāi)發(fā)板樣例,通過(guò)深入研究其編譯框架和適配細(xì)節(jié)后,我們將 SDK 移植到 OpenHarmony 并構(gòu)建成功。
OpenHarmony 對(duì) ARM 和 RSIC-V 架構(gòu)支持已經(jīng)非常全面,Cortex-M 內(nèi)核相關(guān)的 arch 移植 liteos-m 已經(jīng)幫我們做好,移植一款新的開(kāi)發(fā)板只需重點(diǎn)聚焦在編譯構(gòu)建、BSP 移植、XTS 測(cè)試、業(yè)務(wù)功能開(kāi)發(fā)上。
加入OpenHarmony生態(tài)以來(lái),您最大的驚喜是什么?或者有哪些具體的收獲?
自從加入 OpenHarmony 生態(tài)以來(lái),我切身感受到它發(fā)展的如此之快,從當(dāng)初的 1.0 版本迭代到如今的 3.0 版本,每個(gè)版本都會(huì)帶來(lái)許多實(shí)用的更新,開(kāi)發(fā)板越來(lái)越多,文檔也越來(lái)越豐富,社區(qū)交流日漸活躍,開(kāi)發(fā)者參與共建也越來(lái)越容易。
我也一直在持續(xù)學(xué)習(xí) OpenHarmony,學(xué)習(xí)過(guò)程中了解到了很多代碼架構(gòu)上的先進(jìn)理念,為自己平時(shí)的開(kāi)發(fā)工作帶來(lái)了很大的幫助,我也一直堅(jiān)持通過(guò)博客分享我的學(xué)習(xí)經(jīng)歷和開(kāi)源移植案例。
期待未來(lái)OpenHarmony哪些方面能夠得到改善、提供更多支持?
OpenHarmony 經(jīng)過(guò)一年多的快速發(fā)展,編譯構(gòu)建、代碼架構(gòu)、文檔支持、社區(qū)建設(shè)方面都做得非常優(yōu)秀。我個(gè)人期待,OpenHarmony 其配套 IDE DevEco Device Tool 能早點(diǎn)普及,推動(dòng)眾多的開(kāi)發(fā)板適配并支持,這樣有利于給開(kāi)發(fā)者和終端客戶帶來(lái)更便捷的體驗(yàn)。
OpenHarmony目前仍處在開(kāi)發(fā)探索階段,很多共建單位和生態(tài)伙伴還不清楚開(kāi)源項(xiàng)目的玩法,或不知該如何著手進(jìn)行開(kāi)發(fā)??梢哉?qǐng)您給大家分享一條,您認(rèn)為最重要或最值得分享的心得嗎?
開(kāi)源項(xiàng)目的輸出將為開(kāi)發(fā)者提供更多的學(xué)習(xí)途徑,點(diǎn)亮眾多開(kāi)發(fā)者前行的道路。我在開(kāi)發(fā)過(guò)程中遇到了很多技術(shù)上的困難,尋求不到別人的幫助時(shí),通過(guò)研讀別人的開(kāi)源代碼找到了靈感和思路,開(kāi)源其實(shí)也是一種互相學(xué)習(xí),共同進(jìn)步的高效途徑。
開(kāi)放性問(wèn)題,可以暢所欲言,請(qǐng)問(wèn)您還有話想告訴大家?
非常感謝 OpenHarmony,為我們提供了如此優(yōu)秀的操作系統(tǒng),很高興自己能夠參與開(kāi)源共建,為開(kāi)源貢獻(xiàn)出自己的一份微薄力量。從剛開(kāi)始的“懵懂”小白,跟著 OpenHarmony 一起成長(zhǎng),雖然過(guò)程中充滿了挑戰(zhàn),但也收獲很多。我真切感受到 OpenHarmony 的迅猛發(fā)展,希望有更多企業(yè)、開(kāi)發(fā)者一起參與共建 OpenHarmony 繁榮生態(tài)。