在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何適配OpenHarmony自有音頻框架ADM?

OpenAtom OpenHarmony ? 來源:OpenAtom OpenHarmony ? 作者:OpenAtom OpenHarmony ? 2022-05-16 09:29 ? 次閱讀

OpenAtom OpenHarmony(以下簡稱“OpenHarmony”)正在蓬勃發展,但開源社區在國內還是一個年輕的新生事物,如何參與社區開源貢獻已經成為開發者們越來越關心的話題。中國科學院軟件研究所的黃吉老師將以一個開發者的視角給大家闡述深度參與到 OpenHarmony 社區的一些心得體會。

Q1

請簡要介紹下自己,以及所在開發團隊

大家好,我叫黃吉,目前就職于中國科學院軟件研究所(以下簡稱“中科院軟件所”),在中科院軟件所負責 OpenHarmony 移植開發相關工作。中科院軟件所團隊在 OpenHarmony 項目組中主要負責 OpenHarmony 的技術研發、技術支持、社區支持、SIG 倉 CI 門禁支持及維護、活動營銷支撐、及其他社區治理相關的工作。

Q2

作為開發領域知名的技術大牛,您最初為什么會選擇加入OpenHarmony生態、參與開源共建呢?您認為,OpenHarmony項目最吸引人的點在哪里?

大牛談不上,我的技術能力、專業認識等各方面需要學習的地方還有很多。我認為這個選擇是雙向的,一方面我被 OpenHarmony 項目積極的開源精神深深吸引,感覺為開源社區貢獻代碼真的是一件很酷的事情,內心有參與 OpenHarmony 生態的主觀動力;另一方面是 OpenHarmony 社區秉持開放包容的宗旨,接納了很多普通開發者,我才會有機會去了解 OpenHarmony 項目并嘗試為其貢獻代碼。開源共建也是 OpenHarmony 項目最吸引人的重要特點。現如今 OpenHarmony 項目為國內開源之路邁出了堅實的一步,這條路可能走得沒那么快,但它確實勇敢地踏出了腳步,這就足夠了。

Q3

您在什么時候加入了OpenHarmony開源項目團隊?通過多久研發了RK3568的ADM驅動,合入主干上千行代碼,現在被評為代碼月度貢獻之星,真的太了不起了!您方便給我們介紹一下這個產品嗎,或者這段經歷嗎?這么短時間達成了這樣好的效果,請問您的“秘訣”都有哪些呢?

我是在 2021 年 2 月份的時候加入 OpenHarmony 開源項目團隊的。當時的 OpenHarmony 還只有輕量及小型系統,如今標準型系統的能力已經趨于完善了,并且有了自己的 hap 應用開發工具。可以看到 OpenHarmony 的能力是在不斷快速迭代、演進及完善。

回首 Dayu200 開發板的 ADM(Audio Device Model,音頻設備模型)開發過程,是充滿喜悅、充滿收獲的。ADM 是 HDF(OpenHarmony Driver Foundation)下面的一個音頻子模塊,ADM 已經支持了 Hi3516DV300 等開發板,而我們做的這塊就是對 Dayu200 開發板的適配。在我們做適配之前,音頻驅動完全依賴于 TinyALSA 庫,現在將其完全 HDF 化,不僅解決了依賴問題,還具有里程碑意義,為其他第三方開發板的移植提供了參考。適配過程中,我們發現從零開始實現接口是不現實的,造輪子不僅需要考慮穩定性、音頻編解碼、格式匹配、DMA 傳輸等多方面的東西,而且工作量巨大,也不利于后續的維護,因此我們另辟蹊徑。采用 Linux 原生函數來進行適配,其中 Codec 層通過注冊 RK809 原生對象來獲取操作 I2C 總線的對象,然后傳入對應的 regmap 函數來進行寄存器讀寫操作;DAI 層通過注冊 RK3568 原生對象來獲取操作 I2S 總線的對象,然后傳入對應的 regmap 函數來進行 I2S 寄存器讀寫操作;而 DMA 部分則是通過 Linux原生的 dma_engine 相關函數,按照規范的流程來完成請求 DMA 通道,配置 DMA 通道,預處理 DMA 通道,DMA 數據提交,DMA 數據處理等一系列的操作。因為廠商一般都會對內核部分進行維護,并且其硬件外設都由內核驅動進行管理,使用 Linux 原生接口就相當于搭了一座橋,把上層框架與內核驅動聯系了起來,維護起來更容易了。同時,這種適配思路和方法是獨創性的,是十分具有借鑒意義的。

如果說有什么秘訣的話,那就是一往無前的勇氣、不屈不撓的毅力以及永無止境的求知欲。遇到問題是再尋常不過的事情了,“長風破浪會有時,直掛云帆濟滄海”,唯有迎難而上方可解決難題。有時候很可能多條路都走不通,有時候會有挫敗感,但堅持的毅力會帶我們走出去,慢慢找到新的方向。當然,還有很多東西是沒接觸過或者不甚了解的,但求知欲會推著我們前進,推著我們主動去學習,去了解未知,去向身邊的人求教,最終幫助我們的成長。

Q4

能開發出這么一個優秀的產品,將核心代碼合入主干,您和您的團隊一定付出了很多。可以給我們分享一下,開發這個產品的整個過程,包括前期、中期、后期,您們具體都做了哪些工作,投入了多少人力和資源?

Dayu200 開發板基于 OpenHarmony 的移植工作是由潤和軟件主導,社區的多家成員單位的同事深度參與其中,有華為、潤和軟件、深開鴻、中科院軟件所等。中科院軟件所團隊承接了移植 ADM 模塊的任務 。接下任務后,我們聯系到了華為和潤和軟件的技術人員,獲取到了目標開發板的芯片、原理圖等研發必要的資料,隨后熟悉硬件的參數設計、芯片寄存器配置等信息,并且逐漸搭建代碼框架。熟悉過程其實花費的時間和精力非常多,對于完全不清楚的結構,需要一點一點閱讀文檔,遇到不清楚的細節問題,還要聯系開發人員一點一點對齊,這是一個考驗耐心的過程。中科院軟件所團隊在整個開發過程中一直與其他各單位同事保持著緊密的溝通,幾乎每天都會組織會議一起討論研發方案,針對使用 HDI 的讀寫接口無法作用于目標芯片的問題,選擇采用 Linux 原生函數來進行適配解決,有效提升了進度。在完成了代碼的初步功能并驗證后,我們把本地適配好的代碼上傳提交到 OpenHarmony 代碼倉,期間還經過了 CI 門禁的代碼編譯、代碼測試、代碼規范審查,有問題的部分會被修改直到通過審核。其中這個過程也相當考量細節,有可能代碼規范審查一下子就報幾百個規范問題或者警告,包括空格規范問題、換行規范問題、注釋規范問題、宏定義規范問題等問題,需要仔細地核對修改。最后經過對代碼的不斷修正和驗證并將代碼整理到符合社區規范的狀態后,這些代碼成功合入到了主干。總的來說,這是各方一起通力合作的結果,完成了從進度跟蹤到任務分配再到技術問題攻堅的一系列問題的閉環。

Q5

在整個開發進程中,您和您的團隊遇到過哪些技術上或其他方面的難題?這些難題又是如何被逐一解決?在這些難題被解決的過程中,您總結了哪些寶貴的經驗or教訓?

整個開發過程中主要有以下幾個困難點。第一,Dayu200 開發板的音頻芯片比較特殊,它包含 Codec、RTC、PMIC 等多種功能,不能簡單的采用 ADM 接口去操作它。為了避免影響到其他功能的正常運作,我們使用了原生 Linux 設備驅動接口來操作 I2C、I2S、DMA 的通信以及數據傳遞,避免了異常操作的風險。第二,播放一段時間后,停止播放,持續有尖銳的很小的聲音。針對此問題,我們注冊了 Trigger 函數,根據接收到狀態信息,如果為停止狀態,則對 Codec 相關器件進行下電。第三,RK 的音量調節功能必須要給左右聲道寄存器寫入相同數值才可生效,但當時框架還不支持對左右寄存器的賦值。后來,我們與框架開發人員協商,使得框架新增了該項功能,最終適配上了音量調節能力。

經驗的話,就是一定要多去和不同的技術開發人員溝通交流,有時候可能會陷入思維定勢,常常不能發現自己代碼上的問題,而別人一眼就看到關鍵所在,直接指出來,那么問題就迎刃而解了。

Q6

加入OpenHarmony生態以來,您最大的驚喜是什么?或者有哪些具體的收獲?

加入 OpenHarmony 生態以來,我最大的驚喜是了解了開源社區的玩法,在 OpenHarmony 社區,可以從別人的代碼中學到更多知識,同時自己的代碼可以被更多人看到,好的地方不好的地方,都會有人提出來,在這種快速的反饋中,更能夠了解自己存在的不足。

我認為,這段時間充滿了收獲,首先是認識了很多志同道合的小伙伴,大家都積極參與開源項目,貢獻自己的代碼,開源之路本就荊棘叢生,有這么多開源社區的伙伴一起前行,路也好走了許多。其次是獲得了磨練與成長,在優秀的人面前,你能看到差距,從而去學習別人的優點;在優秀的代碼面前,你能看到框架構思的差距,從而去學習別人的編碼思路,這確實讓人受益匪淺。

Q7

期待未來OpenHarmony哪些方面能夠得到改善、提供更多支持?

客觀的說,OpenHarmony 還存在有一些不足的地方,比如社區反映的入門資料較少、框架解析資料不夠清晰、issue 請求響應不太及時等問題。主要原因在這么幾個方面,一是 OpenHarmony 發展初期,它是國內最前沿的大規模的開源系統,它的發展是摸著石頭過河的過程,必然會存在這樣或者那樣的沒有遇到過的問題,這是相當正常的;二是開發者技術水平和技術關注點存在差異,有的開發者可能需要更詳盡的入門資料來進入門檻,有的開發者可能關注底層驅動lib庫的編譯生成方式,有的開發者可能關注 OpenHarmony SDK 如何生成 hap 應用,不知道如何找到自己想要的開發資料;三是 OpenHarmony 每個代碼倉的管理相對獨立,由每個倉庫自己的 committer 進行管理,一方面很多開發者可能找不到正確的代碼倉來提 issue,另外一方面某些 committer 可能由于事務繁忙,沒有及時地回復 issue。我期待未來 OpenHarmony 能夠切實的引導開發者,根據他們的需求,提供對應的開發資料開發資源,并且能夠進一步加強與開發者的聯系,更多傾聽開發者的聲音,給予良性的有效的反饋。

Q8

OpenHarmony目前仍處在開發探索階段,很多共建單位和生態伙伴還不清楚開源項目的玩法,或不知該如何著手進行開發。可以請您給大家分享一條,您認為最重要或最值得分享的心得嗎?

我認為 OpenHarmony 是一個非常自由開放的項目,各家共建單位或生態伙伴可以根據自己的需求想法來進行選擇。如果想進行應用hap開發,可以參考 OpenHarmony 的 docs 倉下面的 JS 開發資料。如果是想進行開發板移植,可以參考 OpenHarmony 的 docs 倉下面的芯片移植資料,在此基礎上,如果想貢獻代碼,則可以聯系 OpenHarmony SIG 相關組織走代碼上倉的流程。至于開發上的問題,建議在 OpenHarmony 社區的 Zulip 上提問(https://zulip.openharmony.cn,未注冊用戶需要郵箱注冊),或者在研發討論群里面提問,或者是在相關代碼倉提 issue,總之,渠道是十分廣泛的。

審核編輯 :李倩

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 音頻
    +關注

    關注

    29

    文章

    2884

    瀏覽量

    81668
  • ADM
    ADM
    +關注

    關注

    0

    文章

    30

    瀏覽量

    16030
  • OpenHarmony
    +關注

    關注

    25

    文章

    3728

    瀏覽量

    16405

原文標題:黃吉——如何適配OpenHarmony自有音頻框架ADM?

文章出處:【微信號:gh_e4f28cfa3159,微信公眾號:OpenAtom OpenHarmony】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    OpenHarmony程序分析框架論文入選ICSE 2025

      近日,ICSE 2025軟件工程實踐Track放榜,面向OpenAtom OpenHarmony(以下簡稱“OpenHarmony”)的ArkTS程序分析基礎框架--方舟程序分析器(論文題目為
    的頭像 發表于 01-02 13:41 ?122次閱讀
    <b class='flag-5'>OpenHarmony</b>程序分析<b class='flag-5'>框架</b>論文入選ICSE 2025

    觸覺智能Purple Pi OH鴻蒙開發板成功適配OpenHarmony5.0 Release,開啟新征程

    觸覺智能Purple Pi OH鴻蒙開發板,成功適配OpenHarmony5.0 Release版本!為大家帶來OpenHarmony5.0特性講解!關注觸覺智能,為大家帶來更多OpenHar
    的頭像 發表于 10-25 10:51 ?428次閱讀
    觸覺智能Purple Pi OH鴻蒙開發板成功<b class='flag-5'>適配</b><b class='flag-5'>OpenHarmony</b>5.0 Release,開啟新征程

    FET527N-C核心板已適配OpenHarmony4.1

    近期,飛凌嵌入式為FET527N-C核心板適配OpenHarmony4.1系統——進一步提升了核心板的兼容性、穩定性和安全性。
    的頭像 發表于 10-15 08:01 ?474次閱讀
    FET527N-C核心板已<b class='flag-5'>適配</b><b class='flag-5'>OpenHarmony</b>4.1

    [2K300適配OpenharmonyV4.1]根文件系統制作請教

    官方你好,我這邊需要適配OpenharmonyV4.1,但是目前網上找不到2K300的開源資料,我嘗試使用2K500開源資料搭建開發環境,目前已成功編譯出對應鏡像,但是我想將OpenHarmony
    發表于 09-11 11:18

    首發!飛凌嵌入式FETMX6ULL-S核心板已適配OpenHarmony 4.1

    近日,飛凌嵌入式在FETMX6ULL-S核心板上率先適配OpenHarmony 4.1,這也是業內的首個應用案例,嵌入式核心板與OpenHarmony操作系統的結合與應用,將進一步推動千行百業的數智化進程。
    的頭像 發表于 05-20 09:04 ?875次閱讀
    首發!飛凌嵌入式FETMX6ULL-S核心板已<b class='flag-5'>適配</b><b class='flag-5'>OpenHarmony</b> 4.1

    鴻蒙開發:【OpenHarmony 4.0 Release指導】

    OpenHarmony 4.0版本如期而至,開發套件同步升級到API 10。相比3.2 Release版本,新增4000多個API,應用開發能力更加豐富;HDF新增200多個HDI接口,硬件適配更加便捷;我們持續優化圖形框架和方
    的頭像 發表于 05-14 09:59 ?1530次閱讀
    鴻蒙開發:【<b class='flag-5'>OpenHarmony</b> 4.0 Release指導】

    適配開源鴻蒙OpenHarmony 4.1,Purple Pi OH開發板與時俱進

    2024年4月3日,備受矚目的OpenHarmony4.1release版本正式發布。值得一提的是,觸覺智能的PurplePiOH已經成功適配了這一新版本,展現出強大的兼容性和前沿的技術實力。此次
    的頭像 發表于 04-18 08:33 ?895次閱讀
    已<b class='flag-5'>適配</b>開源鴻蒙<b class='flag-5'>OpenHarmony</b> 4.1,Purple Pi OH開發板與時俱進

    OpenHarmony南向能力征集令

    1、適配過程中缺少哪些接口能力或者南向能力,需要OpenHarmony去補齊的?例如內核、編譯、器件適配、單板適配等; 2、對標linux,需要Op
    發表于 04-09 15:32

    介紹一種OpenAtom OpenHarmony輕量系統適配方案

    本文在不改變原有系統基礎框架的基礎上, 介紹了一種OpenAtom OpenHarmony(以下簡稱“OpenHarmony”)輕量系統適配方案。
    的頭像 發表于 03-05 09:24 ?1219次閱讀
    介紹一種OpenAtom <b class='flag-5'>OpenHarmony</b>輕量系統<b class='flag-5'>適配</b>方案

    OpenHarmony4.0源碼解析之媒體框架

    及 audio-source 插件調用音頻框架的播放及采集功能來實現音頻的播放與錄制;通過 surface-sink 調用圖形框架,video-decoder 調用解碼驅動模
    的頭像 發表于 02-26 22:05 ?1003次閱讀
    <b class='flag-5'>OpenHarmony</b>4.0源碼解析之媒體<b class='flag-5'>框架</b>

    【鴻蒙】OpenHarmony 4.0藍牙代碼結構簡析

    /master/api當前所有應用層接口統一歸并到interface倉;api 10中藍牙接口按照profile拆分了多個d.ts文件 框架層https://gitee.com/openharmony/communication_bluetooth該倉之前包含
    的頭像 發表于 02-26 16:08 ?1611次閱讀
    【鴻蒙】<b class='flag-5'>OpenHarmony</b> 4.0藍牙代碼結構簡析

    Qt For OpenHarmony圖形化的進展突破

    Qt 適配 OpenHarmony 意義 Qt 是一個 C++ 跨平臺開發框架,主要用于開發圖形用戶界面(Graphical User Interface,GUI)程序,具有跨平臺類庫(支持目前
    的頭像 發表于 02-02 14:29 ?1570次閱讀
    Qt For <b class='flag-5'>OpenHarmony</b>圖形化的進展突破

    OpenHarmony 之 NAPI 框架介紹

    環境中的 JS 變量與方法。 OpenHarmony 中的 NAPI OpenAtom OpenHarmony(以下簡稱 “OpenHarmony”)應用層基于 javascript 語言開發,而系統
    的頭像 發表于 02-01 17:34 ?727次閱讀
    <b class='flag-5'>OpenHarmony</b> 之 NAPI <b class='flag-5'>框架</b>介紹

    啟動System Init進入OpenHarmony系統過程分析與適配

    1 關鍵字 啟動、Init、產品配置、啟動配置 2 簡要描述 本文檔主要以XX開發版為例分析OpenHarmony系統啟動過程、產品配置、啟動配置,并舉例說明如何配置。 內核加載Init進程,一般在
    發表于 01-26 10:04

    OpenHarmony圖形HDI基礎適配及點屏

    drm驅動測試 在用戶態,drm提供了libdrm庫,并提供了modetest測試程序,來測試drm驅動是否完成了基礎適配。 在OpenHarmony的第三方庫libdrm自帶了modetest,但
    發表于 01-18 14:49
    主站蜘蛛池模板: 1024视频在线观看国产成人| 国产色妞妞在线视频免费播放| 亚洲久久久| 日本三级带日本三级带黄首页| 四虎精品免费永久在线| 妖精视频亚洲| 亚洲一区高清| 日本一区二区三区四区视频| 精品国产自在现线看久久| 激情五月社区| 无遮挡一级毛片| 亚洲综合久久久久久888| 无遮挡很爽很污很黄的网站w| 午夜视频精品| 奇米狠狠操| 成人黄色免费| 18满xo影院视频免费体验区| 1024久久| 亚洲网站免费| 一级做a爱片特黄在线观看| 天天怕夜夜怕狠狠怕| 青草悠悠视频在线观看| 黄色视屏在线免费播放| 爆操极品美女| 欧美tube44videos| 激情综合丝袜美女一区二区| 免费在线观看污视频| 午夜爱爱免费视频| 欧美福利视频网| 欧美午夜色大片在线观看免费| 深夜一级毛片| 久青草国产高清在线视频| 97色网| 国产女人又爽又大| 国产在线观看福利| sss华人在线play| 一级a毛片免费观看| 欧美在线1| 4虎影院最近地址| 干天天| 最好看最新的中文字幕1|