本期 OpenAtom OpenHarmony(以下簡(jiǎn)稱“OpenHarmony”)開發(fā)者故事,我們特別采訪了 2 月代碼最佳貢獻(xiàn)者、一位接觸 OpenHarmony 1 年左右,2022 年初便完成高難度開發(fā)項(xiàng)目的開發(fā)者——潤(rùn)和軟件資深軟件開發(fā)工程師趙海鵬。
趙海鵬是潤(rùn)和 OpenHarmony 南向業(yè)務(wù)媒體領(lǐng)域負(fù)責(zé)人,主要承擔(dān) Audio 開發(fā)工作。在 RK3568 平臺(tái) Audio Driver Model 適配開發(fā)過程中,在突遇西安疫情的情況下,硬件和溝通問題都面臨巨大的挑戰(zhàn),面對(duì)急迫性的項(xiàng)目需求,趙海鵬和他的伙伴迎難而上,通過各種渠道去協(xié)調(diào)設(shè)備,把做好的固件寄送出去,協(xié)調(diào)軟件所的伙伴們做遠(yuǎn)程測(cè)試,包括焊接等等,幾乎每天在線工作及溝通 12 個(gè)小時(shí)以上,最終克服困難圓滿完成任務(wù)。
我們與趙海鵬一起聊了他加入 OpenHarmony 生態(tài)的初心、對(duì) OpenHarmony 架構(gòu)適配的理解、工作中遇到的難題和攻克的過程、以及開源過程的心得與教訓(xùn)等話題。現(xiàn)將專訪內(nèi)容整理如下,希望對(duì)你有所啟發(fā)。
Q1
請(qǐng)簡(jiǎn)要介紹下自己,以及所在開發(fā)團(tuán)隊(duì)
大家好,我是潤(rùn)和軟件資深軟件開發(fā)工程師趙海鵬。我從 2020 年 10 月份開始正式接觸 OpenHarmony 開源項(xiàng)目,開始了解框架和結(jié)構(gòu)。目前在潤(rùn)和軟件主要負(fù)責(zé) OpenHarmony 南向業(yè)務(wù)媒體領(lǐng)域。
Q2
作為開發(fā)領(lǐng)域知名的技術(shù)大牛,您最初為什么會(huì)選擇加入OpenHarmony生態(tài)、參與開源共建呢?您認(rèn)為,OpenHarmony項(xiàng)目最吸引人的點(diǎn)在哪里?
第一個(gè)層面,從大的環(huán)境來說,OpenHarmony 是創(chuàng)新的操作系統(tǒng),這是吸引我的首要因素。
第二個(gè)層面,從個(gè)人成長(zhǎng)來說,我希望在 OpenHarmony 發(fā)展的初期加入進(jìn)來,這樣會(huì)讓我對(duì)整個(gè)系統(tǒng)框架的演變更為清楚,個(gè)人的成長(zhǎng)機(jī)會(huì)點(diǎn)相對(duì)比較多。
Q3
您方便給我們介紹一下這個(gè)產(chǎn)品嗎,或者這段經(jīng)歷嗎?這么短時(shí)間達(dá)成了這樣好的效果,請(qǐng)問您的“秘訣”都有哪些呢?
"秘訣"談不上,主要學(xué)習(xí)和工作過程中,多給自己提問題,帶著問題去學(xué)習(xí)與研究;同時(shí),針對(duì)過程遇到問題不斷總結(jié)與積累,形成知識(shí)庫(kù)。
我接著說一下主要貢獻(xiàn)的特性。我們目標(biāo)是把社區(qū)上非海思芯片第三方平臺(tái) RK3568 的 Audio 驅(qū)動(dòng)適配起來。因?yàn)?Openharmony Audio 驅(qū)動(dòng)框架是 ADM,原生的驅(qū)動(dòng)是 ALSA,差異相對(duì)來說比較大。為了加快進(jìn)度協(xié)調(diào)軟件所的一個(gè)伙伴和我一起聯(lián)合開發(fā),正好趕上西安的疫情,我就一直在家里專注的搞研發(fā),需要交流就通過線上溝通。過程中會(huì)遇到很多困難,調(diào)試 Audio 驅(qū)動(dòng),需要一些硬件設(shè)備(示波器、邏輯分析儀等)的支撐,而處在疫情環(huán)境下,有的設(shè)備是缺少的,西安的快遞也很難進(jìn)來,我們通過各種渠道去協(xié)調(diào)設(shè)備,然后把做好的固件發(fā)出去,讓中科院軟件所的伙伴做遠(yuǎn)程測(cè)試,包括焊接等等。
另外,我們?nèi)蝿?wù)的時(shí)間節(jié)點(diǎn)比較緊張,只有不到一個(gè)月左右的時(shí)間,Audio 驅(qū)動(dòng)代碼裁剪過后還有三萬行,也就是我們要把三萬代碼讀懂再適配到 OpenHarmony 上,給我們的工作也增加了難度,但是我們都一一克服,堅(jiān)挺過來,最終完成了任務(wù)。
Q4
能開發(fā)出這么一個(gè)優(yōu)秀的產(chǎn)品,將核心代碼合入主干,您和您的團(tuán)隊(duì)一定付出了很多??梢哉?qǐng)您給我們分享一下,開發(fā)這個(gè)產(chǎn)品的整個(gè)過程,包括前期、中期、后期,您們具體都做了哪些工作,投入了多少人力和資源嗎?
在前期,內(nèi)核代碼中 Audio 相關(guān)的有 10w+ 的代碼,需要做裁剪成最小集合,另外,需要梳理主線上 ADM 的代碼框架,參考:https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/driver/driver-peripherals-audio-des.md。
中間階段,進(jìn)入真正的開發(fā)過程中,我先把框架做好,然后按照模塊分工合作開發(fā)。當(dāng)時(shí)因?yàn)槭蔷€上辦公,每天的工作時(shí)間都在 12 小時(shí)以上,雙方通過線上會(huì)議交流,出現(xiàn)問題及時(shí)溝通及時(shí)解決。
后期主要是調(diào)試階段,當(dāng)時(shí)信號(hào)有一些問題,中科院軟件所的硬件工程師幫我們焊接,然后采樣并把信號(hào)圖像回傳到我們這邊,再做分析,然后再做下一個(gè)方案的調(diào)整,遇到一些難以解決的問題,也會(huì)求助 ADM 框架負(fù)責(zé)人。為了保證較高的工作效率,這些都在線上會(huì)議進(jìn)行溝通。
另外,調(diào)試過程中發(fā)現(xiàn)框架存在一些不友好不完善的地方,在適配過程中不斷完善,形成了 Linux 相對(duì)簡(jiǎn)單適配的方案并形成文檔,在社區(qū)上發(fā)布。該方案存在的問題是不兼容 LiteOS,沒有完全實(shí)現(xiàn) ADM 的優(yōu)化能力。
Q5
在整個(gè)開發(fā)進(jìn)程中,您和您的團(tuán)隊(duì)遇到過哪些技術(shù)上或其他方面的難題呢?這些難題又是如何被逐一解決的?在這些難題被解決的過程中,您總結(jié)了哪些寶貴的經(jīng)驗(yàn)or教訓(xùn)呢?
技術(shù)問題:RK3568 平臺(tái)的 codec 組件使用的 RK809,此芯片不是單一的 Codec 功能還包含電源管理的模塊,使用同一路 I2C 控制通道,拆分難度大,可能還要設(shè)計(jì)電源管理模塊。
解決方案:借助 Linux 原生驅(qū)動(dòng),ADM 的驅(qū)動(dòng)接口初始化節(jié)點(diǎn)調(diào)用對(duì)應(yīng)的 probe 函數(shù),按照此思路觸類旁通,其余模塊也按照的這樣的操作,減少驅(qū)動(dòng)代碼開發(fā)對(duì)寄存器的依賴,提升開發(fā)效率。具體的方案在 RK3568 驅(qū)動(dòng)適配文檔中有說明,請(qǐng)關(guān)注。
Q6
加入OpenHarmony生態(tài)以來,您最大的驚喜是什么?或者有哪些具體的收獲?
收獲的第一個(gè)層面,是我以前的工作經(jīng)歷相對(duì)來說是單個(gè)模塊或者單個(gè)特性,而現(xiàn)在有機(jī)會(huì)面對(duì)整個(gè)系統(tǒng)。同時(shí),OpenHarmony 正經(jīng)歷從 0 到 1 的過程,在我們工作的過程中可以深入了解整個(gè)系統(tǒng),獲得比較全面的認(rèn)知,對(duì)能力的提升空間比較大。
第二層面針對(duì)系統(tǒng)的設(shè)計(jì),以前我只需要考慮需求內(nèi)部實(shí)現(xiàn)邏輯、流程、接口等?,F(xiàn)在做需求設(shè)計(jì)的時(shí)候,先考慮外部依賴,定義接口,然后再去設(shè)計(jì)具體的需求的框架,軟件分層等等。
Q7
OpenHarmony目前仍處在開發(fā)探索階段,很多共建單位和生態(tài)伙伴還不清楚開源項(xiàng)目的玩法,或不知該如何著手進(jìn)行開發(fā)??梢哉?qǐng)您給大家分享一條,您認(rèn)為最重要或最值得分享的心得嗎?
我覺得最主要的是結(jié)合自己過往的工作背景或者環(huán)境,如果沒有太多經(jīng)驗(yàn),可以從 mini system 入手,如果有一些安卓或者 Linux 的經(jīng)驗(yàn),可以從 standard system 入手??傊?,一定要從自己熟悉的模塊入手,這樣才能觸類旁通,通過邊學(xué)邊拆的方式,熟悉度才會(huì)越來越高。
入手之后,需要集中在單點(diǎn)上深入研究,把一個(gè)點(diǎn)深度了解后,其他點(diǎn)學(xué)習(xí)的就會(huì)比較快。同時(shí)也要看看整體的架構(gòu),如果對(duì)架構(gòu)都不了解的話,是不足以支撐后續(xù)開發(fā)和項(xiàng)目工作,至少需要有概念性的認(rèn)知。
Q8
開放性問題,可以暢所欲言,請(qǐng)問您還有話想告訴大家?
從驅(qū)動(dòng)系統(tǒng)上來講,目前 OpenHarmony 的驅(qū)動(dòng)是基于 HDF 開發(fā)的,既可以在 Linux 上運(yùn)行,也可以在 LiteOS 上運(yùn)行,便于移植。但目前成熟度不夠,適配難度較高。對(duì)開發(fā)者來說不太友好,希望各共建單位和開源開發(fā)者一起去完善,讓平臺(tái)驅(qū)動(dòng)適配更容易。
審核編輯 :李倩
-
音頻
+關(guān)注
關(guān)注
29文章
2894瀏覽量
81731 -
OpenHarmony
+關(guān)注
關(guān)注
25文章
3732瀏覽量
16441
原文標(biāo)題:趙海鵬:如何進(jìn)行 OpenHarmony 音頻特性架構(gòu)設(shè)計(jì)和開發(fā)工作
文章出處:【微信號(hào):gh_e4f28cfa3159,微信公眾號(hào):OpenAtom OpenHarmony】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論