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

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

3天內(nèi)不再提示

RK系列開發(fā)板音頻驅(qū)動適配指南(一)

電子發(fā)燒友開源社區(qū) ? 來源:未知 ? 2022-10-17 14:45 ? 次閱讀
afb13a46-4de6-11ed-a3b6-dac502259ad0.jpg

陳甲印

鴻湖萬聯(lián)產(chǎn)品推薦

軟通動力高級技術專家

背景:

多媒體系統(tǒng)目前在Linux操作系統(tǒng),windows操作系統(tǒng)已經(jīng)非常成熟,并且應用場景廣泛,但是,基于OpenAtom OpenHarmony(以下簡稱“OpenHarmony”)操作系統(tǒng),目前如果使用到多媒體(音頻)是需要做一系列的適配動作,才能應用到各種場景。

方案:

基于OpenHarmony適配RK系列開發(fā)板音頻驅(qū)動總體方案是:基于HDF框架和ADM模型,在內(nèi)核層中創(chuàng)建DAI、DMA和Codec三個模塊,并實現(xiàn)例化ADM定義的DAI、DMA和Codec回調(diào)業(yè)務接口,ADM通過這些接口實現(xiàn)音頻數(shù)據(jù)處理與功能控制;然后再通過HCS配置設備節(jié)點和服務,通過HDF的服務管理機制,對內(nèi)核層和用戶層提供服務。針對DAI、DMA和Codec,首先分別創(chuàng)建對應的適配器模塊(RK系列開發(fā)板daiadapter、RK系列開發(fā)板dmaadapter、es8838codecadapter),在其中實現(xiàn)驅(qū)動的注冊、綁定、初始化和釋放;然后分別創(chuàng)建三者對應的操作集模塊(RK系列開發(fā)板daiops、RK系列開發(fā)板dmaops、es8838codecops),在其中實現(xiàn)所有ADM定義的對應業(yè)務接口;最后在deviceinfo.hcs中配置三者公有的參數(shù),若需要配置私有參數(shù),則還需要分別創(chuàng)建三者對應的HCS配置文件(daiconfig.hcs、dmaconfig.hcs、codecconfig.hcs)。

RK系列開發(fā)板 DAI模塊適配:

DAI主要作用是通過I2S將Soc與Codec連接,實現(xiàn)在Soc和Codec之間音頻數(shù)據(jù)的傳輸,其中I2S驅(qū)動由HDF框架提供。ADM定義的DAI接口包括:DAI設備初始化、讀寫(Soc的)寄存器、音頻設備啟動、下發(fā)硬件參數(shù)和事件監(jiān)聽共6個接口。在適配器模塊中實例化ADM定義的DAI兩個結構體:DaiData(SoC端DAI數(shù)據(jù)集)和AudioDaiOps(SoC端DAI操作集);在操作集模塊中實現(xiàn)6個ADM定義的DAI的業(yè)務接口函數(shù);配置DAI設備節(jié)點公有參數(shù),若有需要,則可配置SoC端的I2S寄存器信息等私有參數(shù)。

RK系列開發(fā)板 DAI模塊關系

afd6eac0-4de6-11ed-a3b6-dac502259ad0.png ?

RK系列開發(fā)板_dai-classes.puml

1.1 RK系列開發(fā)板daiadapter
  • 實例化SoC端DAI操作集:g_daiDeviceOps,核心成員字段值定義如下:Startup = RK系列開發(fā)板DaiStartup;HwParams = RK系列開發(fā)板DaiHwParams;Trigger = RK系列開發(fā)板DaiTrigger。
  • 實例化SoC端DAI數(shù)據(jù)集:g_daiData,核心成員字段值定義如下:

    DaiInit = RK系列開發(fā)板DaiDeviceInit;

    Read = RK系列開發(fā)板DaiDeviceReadReg;

    Write = RK系列開發(fā)板DaiDeviceWriteReg;

    ops = &g_daiDeviceOps,SoC端DAI操作集地址。

  • 實例化HdfDriverEntry類型的DAI驅(qū)動實體:g_daiDriverEntry,核心成員字段值定義如下:

    moduleVersion = 1,模塊版本號;

    moduleName = "DAI_RK系列開發(fā)板",模塊名;

    Bind = DaiDriverBind;

    Init = DaiDriverInit;

    Release = DaiDriverRelease。

  • DAI驅(qū)動注冊到鴻蒙系統(tǒng):HDFINIT(gdaiDriverEntry)
  • 實現(xiàn)以下函數(shù):

    DaiDriverInit,DAI驅(qū)動初始化函數(shù);

    DaiDriverBind,DAI驅(qū)動綁定函數(shù);

    DaiDriverRelease,DAI驅(qū)動釋放函數(shù)。

1.2 RK系列開發(fā)板 daiops
  • 實現(xiàn)以下函數(shù):

    RK系列開發(fā)板DaiDeviceInit,初始化SoC端DAI設備函數(shù);

    RK系列開發(fā)板DaiDeviceReadReg,讀SoC端DAI設備寄存器函數(shù);

    RK系列開發(fā)板DaiDeviceWriteReg,寫SoC端DAI設備寄存器函數(shù);

    RK系列開發(fā)板DaiStartup,啟動SoC端DAI設備函數(shù);

    RK系列開發(fā)板DaiHwParams,下發(fā)SoC端DAI硬件參數(shù)函數(shù);

    RK系列開發(fā)板DaiTrigger,監(jiān)聽并處理事件函數(shù)。

總結:

在OpenHarmony操作系統(tǒng)中,適配音頻驅(qū)動是非常重要的一個模塊,本文只是其中的一個步驟,DAI模塊適配,通過示意圖的分析,以及核心代碼的指導,相信讀者會對音頻適配有一個基本的了解,之后的文章中,會逐步更新音頻驅(qū)動的DMA模塊適配、Codec模塊適配、Audio HCS配置等。

END

想了解更多開源技術?后臺留言,立刻安排!就喜歡獎勵一個“”和“在看”唄~

原文標題:RK系列開發(fā)板音頻驅(qū)動適配指南(一)

文章出處:【微信公眾號:電子發(fā)燒友開源社區(qū)】歡迎添加關注!文章轉(zhuǎn)載請注明出處。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 開發(fā)板
    +關注

    關注

    25

    文章

    5067

    瀏覽量

    97608
  • 音頻驅(qū)動

    關注

    0

    文章

    10

    瀏覽量

    8179

原文標題:RK系列開發(fā)板音頻驅(qū)動適配指南(一)

文章出處:【微信號:HarmonyOS_Community,微信公眾號:電子發(fā)燒友開源社區(qū)】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關推薦

    OpenHarmony怎么修改DPI密度值?觸覺智能RK3566鴻蒙開發(fā)板演示

    開源鴻蒙OpenHarmony系統(tǒng)下,修改DPI密度值的方法,觸覺智能Purple Pi OH鴻蒙開發(fā)板演示,搭載了瑞芯微RK3566四核處理器,Laval鴻蒙社區(qū)推薦開發(fā)板,已適配
    的頭像 發(fā)表于 12-24 11:46 ?202次閱讀
    OpenHarmony怎么修改DPI密度值?觸覺智能<b class='flag-5'>RK</b>3566鴻蒙<b class='flag-5'>開發(fā)板</b>演示

    瑞芯微主板/開發(fā)板Linux系統(tǒng)播放音頻方法,觸覺智能RK3562開發(fā)板演示

    本文介紹瑞芯微方案主板/開發(fā)板Linux系統(tǒng)播放音頻的方法,觸覺智能RK3562開發(fā)板演示,通用RK3566、
    的頭像 發(fā)表于 12-13 11:40 ?240次閱讀
    瑞芯微主板/<b class='flag-5'>開發(fā)板</b>Linux系統(tǒng)播放<b class='flag-5'>音頻</b>方法,觸覺智能<b class='flag-5'>RK</b>3562<b class='flag-5'>開發(fā)板</b>演示

    敬請期待 | 迅為RK3576開發(fā)板即將發(fā)布

    敬請期待 | 迅為RK3576開發(fā)板即將發(fā)布
    的頭像 發(fā)表于 11-22 15:13 ?163次閱讀
    敬請期待 | 迅為<b class='flag-5'>RK</b>3576<b class='flag-5'>開發(fā)板</b>即將發(fā)布

    【迅為】瑞芯微RK3588開發(fā)板RK3568開發(fā)板區(qū)別及優(yōu)勢

    RK3568開發(fā)板
    的頭像 發(fā)表于 11-18 14:19 ?433次閱讀
    【迅為】瑞芯微<b class='flag-5'>RK</b>3588<b class='flag-5'>開發(fā)板</b><b class='flag-5'>RK</b>3568<b class='flag-5'>開發(fā)板</b>區(qū)別及優(yōu)勢

    米爾RK3576開發(fā)板特惠活動!

    近日,米爾電子發(fā)布基于瑞芯微RK3576核心開發(fā)板RK3576作為國產(chǎn)熱門處理器,其高性能數(shù)據(jù)處理能力、領先的AI智能分析、強大的擴展性與兼容性受到廣大
    的頭像 發(fā)表于 11-12 01:00 ?298次閱讀
    米爾<b class='flag-5'>RK</b>3576<b class='flag-5'>開發(fā)板</b>特惠活動!

    迅為iTOP-RK3568/RK3588開發(fā)板獲麒麟軟件適配認證

    迅為iTOP-RK3568/RK3588開發(fā)板獲麒麟軟件適配認證
    的頭像 發(fā)表于 10-18 14:56 ?543次閱讀
    迅為iTOP-<b class='flag-5'>RK</b>3568/<b class='flag-5'>RK</b>3588<b class='flag-5'>開發(fā)板</b>獲麒麟軟件<b class='flag-5'>適配</b>認證

    i.MX Linux開發(fā)實戰(zhàn)指南—基于野火i.MX系列開發(fā)板

    電子發(fā)燒友網(wǎng)站提供《i.MX Linux開發(fā)實戰(zhàn)指南—基于野火i.MX系列開發(fā)板.pdf》資料免費下載
    發(fā)表于 10-10 17:23 ?11次下載

    Openharmony軟件評估指南-米爾瑞芯微RK3568開發(fā)板

    Openharmony軟件評估指南用于介紹在米爾的開發(fā)板上運行Openharmony系統(tǒng)下的核心資源與外設資源的測試步驟與評估方法。本文可作為前期評估指南使用,也可以作為通用系統(tǒng)開發(fā)
    發(fā)表于 09-06 20:06

    北京迅為RK3568開發(fā)板嵌入式學習之Linux驅(qū)動全新更新-CAN+

    北京迅為RK3568開發(fā)板嵌入式學習之Linux驅(qū)動全新更新-CAN+
    的頭像 發(fā)表于 09-04 15:29 ?539次閱讀
    北京迅為<b class='flag-5'>RK</b>3568<b class='flag-5'>開發(fā)板</b>嵌入式學習之Linux<b class='flag-5'>驅(qū)動</b>全新更新-CAN+

    RK3588!黑神話悟空,啟動?-迅為電子RK3588開發(fā)板

    RK3588!黑神話悟空,啟動?-迅為電子RK3588開發(fā)板
    的頭像 發(fā)表于 08-30 14:13 ?652次閱讀
    <b class='flag-5'>RK</b>3588!黑神話悟空,啟動?-迅為電子<b class='flag-5'>RK</b>3588<b class='flag-5'>開發(fā)板</b>

    HZ-CORE-RK3576開發(fā)板

    HZ-CORE-RK3576開發(fā)板
    的頭像 發(fā)表于 08-29 13:58 ?355次閱讀
    HZ-CORE-<b class='flag-5'>RK</b>3576<b class='flag-5'>開發(fā)板</b>

    代低價開發(fā)板芯片RK3562來啦! — 觸覺智能RK3562開發(fā)板

    最近我收到了個開發(fā)板,有核心,開發(fā)板,還有個7英寸觸摸屏幕。這些東西,都是家叫做觸覺智能的公司做的基于瑞芯微
    的頭像 發(fā)表于 08-15 17:42 ?1409次閱讀
    新<b class='flag-5'>一</b>代低價<b class='flag-5'>開發(fā)板</b>芯片<b class='flag-5'>RK</b>3562來啦! — 觸覺智能<b class='flag-5'>RK</b>3562<b class='flag-5'>開發(fā)板</b>

    RK3568開發(fā)板支持AMP雙系統(tǒng)

    RK3568開發(fā)板支持AMP雙系統(tǒng)
    的頭像 發(fā)表于 06-04 15:33 ?743次閱讀
    <b class='flag-5'>RK</b>3568<b class='flag-5'>開發(fā)板</b>支持AMP雙系統(tǒng)

    RK3562開發(fā)板:安卓Linux開發(fā)從入門到精通()

    導讀對于初涉嵌入式軟件開發(fā)的探索者,掌握開發(fā)板并實戰(zhàn)項目是不可或缺的環(huán)。套系統(tǒng)詳盡的入門指南猶如明燈。若你鐘情于嵌入式軟件,那么這款
    的頭像 發(fā)表于 03-28 08:31 ?1057次閱讀
    <b class='flag-5'>RK</b>3562<b class='flag-5'>開發(fā)板</b>:安卓Linux<b class='flag-5'>開發(fā)</b>從入門到精通(<b class='flag-5'>一</b>)

    迅為RK3568開發(fā)板驅(qū)動開發(fā)指南-輸入子系統(tǒng)

    迅為RK3568開發(fā)板驅(qū)動開發(fā)指南-輸入子系統(tǒng)
    的頭像 發(fā)表于 02-23 15:11 ?902次閱讀
    迅為<b class='flag-5'>RK</b>3568<b class='flag-5'>開發(fā)板</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>開發(fā)指南</b>-輸入子系統(tǒng)