在线观看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 項目最吸引人的重要特點?,F如今 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

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

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

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目前仍處在開發探索階段,很多共建單位和生態伙伴還不清楚開源項目的玩法,或不知該如何著手進行開發??梢哉埬o大家分享一條,您認為最重要或最值得分享的心得嗎?

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

審核編輯 :李倩

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

    關注

    29

    文章

    3029

    瀏覽量

    83160
  • ADM
    ADM
    +關注

    關注

    0

    文章

    30

    瀏覽量

    16154
  • OpenHarmony
    +關注

    關注

    28

    文章

    3841

    瀏覽量

    18278

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

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

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    周三晚19:00,手把手教你做PC第七課:Audio 音頻驅動框架適配

    《手把手教你做PC》系列直播課再度開播!《KaihongOS筆記本電腦開發實戰⑦:Audio音頻驅動框架適配》將于4月23日19:00開播↑掃碼入群,領課程講義資料包↑深開鴻資深工程師親臨直播間依托
    的頭像 發表于 04-22 08:05 ?174次閱讀
    周三晚19:00,手把手教你做PC第七課:Audio <b class='flag-5'>音頻</b>驅動<b class='flag-5'>框架</b><b class='flag-5'>適配</b>

    STM32如何移植Audio框架

    最近在學習音頻解碼,想用一下Audio框架。 1、這個該如何移植到自己創建的BSP并對接到device框架中?看了官方移植文檔沒有對沒有對該部分的描述。 2、我只想實現一個簡單的播放功能,只用一個DAC芯片(比如CS4344)是
    發表于 04-01 08:08

    北京迅為RK3568開發板OpenHarmony系統南向驅動開發內核HDF驅動框架架構

    北京迅為RK3568開發板OpenHarmony系統南向驅動開發內核HDF驅動框架架構
    的頭像 發表于 03-11 14:13 ?1047次閱讀
    北京迅為RK3568開發板<b class='flag-5'>OpenHarmony</b>系統南向驅動開發內核HDF驅動<b class='flag-5'>框架</b>架構

    貝啟科技 BQ3576 開發板首發通過 OpenHarmony5.1.0.44適配驗證

    2月21日,貝啟科技RK3576系列硬件產品首發通過OpenHarmony5.1.0.44適配驗證,涵蓋BQ3576HM開發板套件、BQ3576行業平板、BQ3576商顯主板。這些產品基于瑞芯微
    的頭像 發表于 02-21 10:51 ?1409次閱讀
    貝啟科技 BQ3576 開發板首發通過 <b class='flag-5'>OpenHarmony</b>5.1.0.44<b class='flag-5'>適配</b>驗證

    新品 | 視美泰AIoT鴻蒙開發套件SC-3568HA正式上市,已成功適配OpenHarmony 5.0 Release版本

    近日,視美泰成功完成了其多系列產品與OpenHarmony5.0Release版本的深度適配工作,此次適配的產品涵蓋了OpenHarmony5.0首發開發套件SC-3568HA、智慧終
    的頭像 發表于 02-05 17:11 ?671次閱讀
    新品 | 視美泰AIoT鴻蒙開發套件SC-3568HA正式上市,已成功<b class='flag-5'>適配</b><b class='flag-5'>OpenHarmony</b> 5.0 Release版本

    AN-1135: ADC采樣信息ADM1275/ADM1276/ADM1075

    電子發燒友網站提供《AN-1135: ADC采樣信息ADM1275/ADM1276/ADM1075.pdf》資料免費下載
    發表于 01-12 11:10 ?0次下載
    AN-1135: ADC采樣信息<b class='flag-5'>ADM</b>1275/<b class='flag-5'>ADM</b>1276/<b class='flag-5'>ADM</b>1075

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

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

    OpenHarmony屬性信息怎么修改?觸覺智能RK3566鴻蒙開發板來演示

    本文介紹開源鴻蒙OpenHarmony系統下,修改產品屬性信息的方法,觸覺智能Purple Pi OH鴻蒙開發板演示,已適配全新OpenHarmony5.0 Release系統!
    的頭像 發表于 11-27 09:31 ?686次閱讀
    <b class='flag-5'>OpenHarmony</b>屬性信息怎么修改?觸覺智能RK3566鴻蒙開發板來演示

    如何在開源鴻蒙OpenHarmony開啟SELinux模式?RK3566鴻蒙開發板演示

    本文介紹開源鴻蒙OpenHarmony系統下,開啟/關閉SELinux權限的方法,觸覺智能Purple Pi OH鴻蒙開發板演示,已適配全新OpenHarmony5.0 Release系統!
    的頭像 發表于 11-18 19:03 ?786次閱讀
    如何在開源鴻蒙<b class='flag-5'>OpenHarmony</b>開啟SELinux模式?RK3566鴻蒙開發板演示

    OpenHarmony4.1藍牙芯片如何適配?觸覺智能RK3568主板SBC3568演示

    當打開藍牙后沒有反應時,需要排查藍牙節點是否對應、固件是否加載成功,本文介紹開源鴻蒙OpenHarmony4.1系統下適配藍牙的方法,觸覺智能SBC3568主板演示,搭載了瑞芯微RK3568芯片,應用可覆蓋邊緣計算、人工智能、工業HMI、工業網關、智慧醫療、自助終端、智能
    的頭像 發表于 11-08 10:11 ?1119次閱讀
    <b class='flag-5'>OpenHarmony</b>4.1藍牙芯片如何<b class='flag-5'>適配</b>?觸覺智能RK3568主板SBC3568演示

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

    觸覺智能Purple Pi OH鴻蒙開發板,成功適配OpenHarmony5.0 Release版本!為大家帶來OpenHarmony5.0特性講解!關注觸覺智能,為大家帶來更多OpenHar
    的頭像 發表于 10-25 10:51 ?1035次閱讀
    觸覺智能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 ?882次閱讀
    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

    RISC-V適配OpenHarmony研討會

    8月14日,由RISC-V國際人才培養認證中心主辦的“RISC-V適配OpenHarmony研討會”主題活動在RISC-V開源創新中心舉行。中科廈門數智研究院院長助理贠利君,深圳博芯科技股份
    的頭像 發表于 08-30 13:15 ?665次閱讀
    RISC-V<b class='flag-5'>適配</b><b class='flag-5'>OpenHarmony</b>研討會

    bootstrap框架和vue框架的區別

    響應式移動優先的網頁。Bootstrap的核心設計理念是“移動優先”,即優先考慮移動設備的顯示效果,然后通過媒體查詢等技術實現對不同設備的適配。Bootstrap提供了一套豐富的CSS和JavaScript組件,可以快速實現各種常見的網頁布局和交互效果。 Vue是一個用于構建用戶界面的漸進式
    的頭像 發表于 07-11 09:55 ?1392次閱讀
    主站蜘蛛池模板: 99久久免费精品国产免费高清 | 国产色婷婷免费视频 | 日本黄在线 | 亚洲夂夂婷婷色拍ww47 | 四虎最新永久在线精品免费 | 亚洲狼色专区 | 中文字幕在线播放一区 | 欧美成人午夜毛片免费影院 | 亚洲一区中文字幕在线 | 日本理论午夜中文字幕第一页 | 免费看一级特黄a大片 | 亚洲香蕉久久一区二区三区四区 | 欧美黄色片一级 | ts人妖另类国产 | 日韩卡1卡2卡三卡四卡二卡免 | 国产一区二区播放 | 国产三级精品视频 | 中日韩欧美在线观看 | 一本大道一卡二卡四卡 | 成 人在线观看视频网站 | 日本免费一级视频 | 色综合天天综久久久噜噜噜久久〔 | 久久成人国产精品青青 | 免费特黄 | 免费在线不卡视频 | 色无欲天天天影视综合网 | 日韩一区二区视频在线观看 | 美女张开腿露出尿口让男人桶 | 国产福利在线免费 | 欧美三级黄视频 | 久久99久久精品免费思思6 | 久久国产午夜精品理论篇小说 | 国产亚洲精品久久久久久午夜 | 欧美一级精品高清在线观看 | 激情综合网色播五月 | 羞羞答答91麻豆网站入口 | 亚洲一卡2卡4卡5卡6卡在线99 | 国产欧美一区二区三区观看 | 午夜视频你懂的 | 欧美黄色免费网址 | 久久综合中文字幕 |