那曲檬骨新材料有限公司

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

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

3天內不再提示

【OpenHarmony技術峰會】生態與互聯分論壇 | 梁開祝:OpenHarmony驅動開發實踐

HiHope社區官方號 ? 2023-03-28 16:54 ? 次閱讀

在2月25日剛剛圓滿閉幕的首屆開放原子開源基金會OpenHarmony技術峰會(2023)生態與互聯分論壇上,潤和軟件旗下子公司江蘇潤開鴻數字科技有限公司(簡稱:潤開鴻)資深軟件開發工程師梁開祝發表了題為《OpenHarmony的驅動框架原理和實踐》的主題演講,從實踐角度重點講解了OpenHarmony驅動框架的具體實現細節和“一次開發,多系統部署”的驅動開發實踐,幫助OpenHarmony設備驅動開發者深入理解驅動框架工作流程和工作細節。

70e87e16-cd37-11ed-ad0d-dac502259ad0.jpg

技術背景

OpenHarmony引入全新驅動開發理念和框架

7108c342-cd37-11ed-ad0d-dac502259ad0.png

OpenHarmony是一個面向萬物互聯/萬物智聯大場景的分布式操作系統,它面對的是硬件性能和功能需求千差萬別的設備,比如智能手環與手機之間的硬件差異。為了統一適配能力差別巨大的設備,OpenHarmony設計了一個多內核的架構,能力弱的設備選用簡單的內核(如LiteOS)、能力強的設備選用復雜的內核(如Linux),這意味著生態圈中的硬件產品在系統內核層面上就存在巨大的差異。然而這些產品很有可能會用到相近甚至相同的外圍硬件,比如,家里的智能門禁系統、智能電視、平板電腦、手機上所使用的攝像頭模組都可能是同一個型號或同系列的,而在設備端運行不同內核的操作系統,就需要為不同內核開發各自的驅動程序,這會造成驅動程序的復用性、可移植性、可維護性較差,不利于產品開發和維護,也不利于硬件生態圈的成長。

作為一個全新的操作系統,OpenHarmony必須要開發一套更優秀的驅動開發框架,幫助開發者、企業更便捷地開發和管理硬件設備的驅動程序,助力打造自己的硬件生態。OpenHarmony的驅動框架,采用C語言面向對象編程模型構建,通過平臺解耦、內核解耦,來達到兼容不同內核,統一平臺底座的目的,從而幫助開發者實現驅動一次開發,多系統部署的效果。

7124153e-cd37-11ed-ad0d-dac502259ad0.png

OpenHarmony的內核子系統(多內核)與驅動子系統(統一的驅動框架)是松耦合的關系,僅通過一個OSAL(Operating System Abstraction Layer,操作系統抽象層)進行交互。OSAL只為驅動框架提供內核部分關鍵能力的抽象接口,而隱藏了接口在不同內核中的實現細節。驅動框架通過OSAL來適配不同的內核,而具體的設備則完全基于驅動框架提供的能力來實現驅動程序并通過HDI(Hardware Driver Interface,硬件驅動接口)對上層提供驅動服務,設備驅動完全不需要知道(也不會知道)自己運行在什么樣的內核之上。

技術干貨

OpenHarmony中的驅動框架實現詳解

代碼結構

712dfdb0-cd37-11ed-ad0d-dac502259ad0.png

圖為OpenHarmony的驅動框架以及與驅動開發相關代碼部署。驅動框架主要在//drivers/hdf_core/目錄下實現。

lframework/目錄是C語言實現的驅動框架核心源代碼(包括驅動框架、配置管理、配置解析、驅動通用模型、硬件通用平臺能力接口等),

注意點:這里的部分代碼是內核態驅動框架與用戶態驅動框架共用的,需要大家在閱讀代碼時區分清楚;

l adapter/目錄下是驅動框架適配不同內核的適配代碼和編譯腳本,也包括用戶態驅動框架適配不同系統類型(輕量系統和標準系統)的適配代碼和編譯腳本。

l //drivers/peripheral/目錄下是部署在OpenHarmony用戶空間的各種外圍設備驅動相關的HDI、HAL、驅動模型及測試用例等的實現代碼和編譯配置。

l //drivers/interface/目錄下是用于管理各驅動模塊的HDI接口定義,這些接口定義使用IDL語言描述并以.idl文件形式保存。

l 其他與驅動開發相關的代碼目錄還包括//device/目錄和//vendor/目錄下的相關部分目錄,它們是具體的芯片方案、產品方案、產品定義、產品配置等相關信息和適配代碼的匯總,為設備驅動的實現提供一定的支持。

編譯與鏈接

驅動框架適配不同內核的編譯配置,在代碼結構的//drivers/hdf_core/adapter/目錄下,主要還是通過對應的BUILD.gn和Makefile文件將相關的源代碼進行串聯和依賴,以完成驅動框架整體的編譯與鏈接。

對于不同的內核,則在對應內核的編譯腳本中加入編譯驅動框架的入口和鏈接描述。

715195a4-cd37-11ed-ad0d-dac502259ad0.png

圖中代碼示例是在LiteOS_A內核的編譯腳本中include驅動框架的編譯入口,同時也在鏈接腳本中加入一個hdf.driver的只讀數據段,用以描述驅動框架專用的數據結構。

715f42f8-cd37-11ed-ad0d-dac502259ad0.png

圖中代碼示例是在Linux內核的編譯腳本中,將驅動框架的關鍵代碼以patch的形式打入Linux源代碼中(實際仍是代碼目錄的軟鏈接形式加入Linux內核中),同時也在鏈接腳本vmlinux.lds.S中加入一個hdf.driver的只讀數據段,用以描述驅動框架專用的數據結構。

當編譯到OpenHarmony內核時,編譯工具鏈通過上述腳本的描述一并將驅動框架編譯成中間文件,然后鏈接和打包到內核鏡像中使用。

內核態驅動框架及用戶態驅動框架啟動流程

內核態驅動框架的啟動流程

718e6bd2-cd37-11ed-ad0d-dac502259ad0.png

如圖所示,部署在內核態的驅動框架作為一個相對獨立的部分,要么因為內核(LiteOS_A內核)的其他模塊的直接調用而啟動,要么作為內核(Linux內核)的一個模塊(module)而自動加載和啟動。在進入驅動框架的啟動入口之后,驅動框架就會進入一個與內核無關的工作流程中(與內核相關部分會通過OSAL接口對接到內核提供的功能)。

用戶態驅動框架的啟動流程

71a5eeb0-cd37-11ed-ad0d-dac502259ad0.png

如圖所示,部署在用戶態的驅動框架則分為若干個獨立的服務進程,在系統啟動到用戶態階段時,由Init進程根據啟動配置文件的描述逐一拉起,各進程之間通過IPC進行交互并逐步建立起各自的數據結構關系。

以上兩張示意圖均為以功能模塊劃分的啟動流程概略圖,梁開祝老師在閱讀理解OpenHarmony驅動框架的代碼時,以API為粒度整理了一份詳細的啟動流程圖,以及在驅動框架啟動過程中一步步建立起來的數據結構關系圖,感興趣的讀者可到資源倉庫下載、閱讀。

用戶態與內核態的交互

71d16d42-cd37-11ed-ad0d-dac502259ad0.png

內核態的驅動框架與用戶態的驅動框架是各自獨立的兩部分,內核態驅動框架直接管理具體硬件設備的驅動,并以服務的形式向用戶態提供服務接口,而用戶態驅動框架則通過HDI接口使用內核態驅動框架提供的驅動服務。

HDI接口使用IO Service和IO Dispatcher機制為驅動框架提供進行統一的交互接口,其實現主要有兩種形式:

l 當驅動以內核態組件形式部署時,客戶端程序需要通過系統調用(system call)方式訪問驅動程序。驅動接口通過IO Service請求將消息通過系統調用陷入內核,并將消息分發到IO Dispatcher進行處理。

l 當驅動以用戶態服務形式部署時,客戶端進程需要通過IPC方式訪問驅動服務進程,IO Service完成IPC 通信的客戶端消息請求封裝,IO Dispatcher完成驅動服務端消息請求封裝,客戶端消息通過IPC送達服務端再分發給IO Dispatcher處理。

注意點:該交互過程涉及比較復雜的數據處理流程,需要結合代碼進行深入理解。

通用的驅動示例程序

以一個通用的驅動示例程序來簡單驗證基于OpenHarmony驅動框架的設備驅動開發基本要點。

71f71d30-cd37-11ed-ad0d-dac502259ad0.png

本驅動示例程序,包含了驅動框架的一些基本要素,如上層的應用程序、內核的驅動程序、硬件的驅動配置信息、適配不同內核和不同類型系統的編譯腳本等。小伙伴們可以跟著里面的README文檔的操作說明,從簡單到復雜一步步去驗證前文提到的驅動框架知識要點,也可以非常方便地將這個示例程序移植到不同的開發板上進行驗證,以此體驗OpenHarmony驅動框架“一次開發,多系統部署”的好處。

“以技術賦能開源共建,持續發揮生態引領作用”。潤和軟件將深入貫徹“2+N”行業戰略(深耕金融、能源“2”大行業,廣泛賦能智慧城市、醫療、教育、工業等“N”個行業),圍繞行業場景落地不斷夯實軟硬件底座,推動應用創新,助力體驗提升;吸引更多企業及個人開發者融入生態、參與共建,持續為OpenHarmony繁榮發展貢獻力量。

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

    關注

    12

    文章

    1851

    瀏覽量

    85640
  • OpenHarmony
    +關注

    關注

    25

    文章

    3744

    瀏覽量

    16580
收藏 人收藏

    評論

    相關推薦

    華秋電子 | 電子發燒友亮相OpenHarmony人才生態大會2024

    公開課直播,為開發者提供了豐富的技術資源與學習機會。在談到生態合作與市場推廣時,劉勇表示,電子發燒友社區致力于為OpenHarmony生態
    發表于 12-02 09:45

    OpenHarmony人才生態大會南向生態社區發展論壇在武漢圓滿舉辦

    11月27日,OpenHarmony人才生態大會2024在武漢隆重舉行。當日下午的 OpenHarmony南向生態社區發展論壇(以下簡稱“
    的頭像 發表于 11-29 10:06 ?237次閱讀
    <b class='flag-5'>OpenHarmony</b>人才<b class='flag-5'>生態</b>大會南向<b class='flag-5'>生態</b>社區發展<b class='flag-5'>論壇</b>在武漢圓滿舉辦

    OpenHarmony人才生態大會南向生態社區發展論壇在武漢圓滿舉辦

    11月27日,OpenHarmony人才生態大會2024在武漢隆重舉行。當日下午的 OpenHarmony南向生態社區發展論壇(以下簡稱“
    發表于 11-29 09:54

    鴻亮相OpenHarmony人才生態大會,打造人才生態“強引擎”

    11月27日,OpenHarmony人才生態大會2024(以下簡稱“大會”)在武漢隆重舉行。本次大會設立主題演講及多場教育論壇、南向社區論壇、外設
    的頭像 發表于 11-28 01:03 ?340次閱讀
    深<b class='flag-5'>開</b>鴻亮相<b class='flag-5'>OpenHarmony</b>人才<b class='flag-5'>生態</b>大會,打造人才<b class='flag-5'>生態</b>“強引擎”

    第三屆OpenHarmony技術大會 “OpenHarmony開發者激勵計劃”授牌儀式圓滿舉行

    10月12日,以“技術引領筑生態,萬物智聯創未來”為主題的第三屆OpenHarmony技術大會隆重舉行,“OpenHarmony
    的頭像 發表于 10-21 11:48 ?325次閱讀
    第三屆<b class='flag-5'>OpenHarmony</b><b class='flag-5'>技術</b>大會 “<b class='flag-5'>OpenHarmony</b><b class='flag-5'>開發</b>者激勵計劃”授牌儀式圓滿舉行

    鴻亮相第三屆OpenHarmony技術大會,以技術驅動OpenHarmony生態發展

    10月12-13日,第三屆OpenHarmony技術大會(以下簡稱“大會”)在上海順利舉行。本屆大會以“技術引領筑生態,萬物智聯創未來”為主題,設置1場主
    的頭像 發表于 10-15 08:07 ?596次閱讀
    深<b class='flag-5'>開</b>鴻亮相第三屆<b class='flag-5'>OpenHarmony</b><b class='flag-5'>技術</b>大會,以<b class='flag-5'>技術</b><b class='flag-5'>驅動</b><b class='flag-5'>OpenHarmony</b><b class='flag-5'>生態</b>發展

    第三屆OpenHarmony技術大會在上海成功舉辦

    了來自全球的開源操作系統技術精英、前沿實踐專家、廣大開發者以及學術界大咖,面向全球展示了OpenHarmony的最新技術
    發表于 10-13 11:14

    九聯鴻閃耀HDC2024,展示OpenHarmony生態創新

    的最新進展以及OpenHarmony原生應用的開發實踐。作為華為OpenHarmony使能伙伴以及開放原子開源基金會OpenHarmony
    的頭像 發表于 06-24 10:15 ?1223次閱讀

    鴻出席OpenHarmony開發者大會2024,共建技術革新

    2024年5月25日,“OpenHarmony開發者大會2024”在深圳隆重召開。作為開放原子開源基金會黃金捐贈人,OpenHarmony項目群初始成員單位、A類捐贈人、核心共建單位,江蘇潤
    的頭像 發表于 05-30 10:24 ?1281次閱讀

    鴻智谷與OpenHarmony的創新對話

    OpenHarmony4.1Release版本根技術特性解讀為契機,聚集廣大開發者、生態伙伴、行業領袖與百位技術專家共同討論
    的頭像 發表于 05-29 08:30 ?551次閱讀
    <b class='flag-5'>開</b>鴻智谷與<b class='flag-5'>OpenHarmony</b>的創新對話

    芯海科技亮相OpenHarmony開發者大會 共探開源鴻蒙互聯新標準

    智能生態的宏偉藍圖。芯海科技(股票代碼:688595)作為OpenAtom OpenHarmony項目群的B類捐贈人受邀出席此次盛會。 此次大會上,芯海科技作為OpenHarmony項目群生態
    發表于 05-28 15:16 ?274次閱讀
    芯海科技亮相<b class='flag-5'>OpenHarmony</b><b class='flag-5'>開發</b>者大會 共探開源鴻蒙<b class='flag-5'>互聯</b>新標準

    鴻攜手中軟國際亮相OpenHarmony開發者大會2024,智創開源生態新篇

    5月25日,以“鴻心聚力,智引未來”為主題的OpenHarmony開發者大會2024在深圳舉辦。大會以0penHarmony4.1Release版本根技術特性解讀為契機,以“1場主論壇
    的頭像 發表于 05-27 15:06 ?753次閱讀
    深<b class='flag-5'>開</b>鴻攜手中軟國際亮相<b class='flag-5'>OpenHarmony</b><b class='flag-5'>開發</b>者大會2024,智創開源<b class='flag-5'>生態</b>新篇

    鴻智谷亮相OpenHarmony開發者大會,與生態共創開源新篇章!

    5月25日,以“鴻心聚力智引未來”為主題的OpenHarmony開發者大會2024(以下簡稱大會)在深圳成功舉辦。鴻智谷獲得多項獎項及授牌,并全程參與6場
    的頭像 發表于 05-26 08:30 ?800次閱讀
    <b class='flag-5'>開</b>鴻智谷亮相<b class='flag-5'>OpenHarmony</b><b class='flag-5'>開發</b>者大會,與<b class='flag-5'>生態</b>共創開源新篇章!

    報名開啟!第二屆OpenHarmony開發者大會2024重磅來襲!

    OpenHarmony 開發者大會2024,為開發者、產業組織、生態伙伴和行業用戶搭建一個交流、分享和學習的平臺。大會以 OpenHarmony
    發表于 05-14 15:23

    鴻升為OpenHarmony項目群A類捐贈人,引領開源生態新篇章!

    近日,深鴻作為OpenHarmony核心共建單位、OpenHarmony生態委員會委員單位、OpenHarmony代碼Top10貢獻單位,
    的頭像 發表于 04-18 08:33 ?862次閱讀
    深<b class='flag-5'>開</b>鴻升為<b class='flag-5'>OpenHarmony</b>項目群A類捐贈人,引領開源<b class='flag-5'>生態</b>新篇章!
    百家乐看点打法| 大发888使用条款| 乐宝百家乐官网娱乐城| 有看做生意风水的大师吗| 大发888扑克下载| 百家乐官网桌子轮盘| 百家乐程序开户发| 百家乐官网真人投注网站| 狮威百家乐娱乐网| 百家乐官网怎么刷反水| 新世纪百家乐娱乐城| 克东县| 澳门百家乐游戏说明书| 常山县| 百家乐三国| 百家乐官网二十一点游戏| 状元百家乐的玩法技巧和规则| 大发888为什么卡| 摩纳哥百家乐官网娱乐城| 百家乐发牌靴8| 百家乐官网筹码套装| 太阳城音乐广场| 网页百家乐官网的玩法技巧和规则| 大发888在线娱乐城| 玩百家乐官网都是什么人| 明升88娱乐城| 新思维百家乐投注法| 百家乐官网5式直缆打法| 威尼斯人娱乐场骗人| 百家乐官网娱乐分析软件v| 皇冠网h| 百家乐高级技巧| 百家乐官网游乐园| 博彩网站排名| 澳门百家乐打法百家乐破解方法| 百家乐官网关键词| 缅甸赌场| 太阳百家乐官网管理网| 云鼎百家乐官网现金网| 威尼斯人娱乐城网上赌场| 百家乐官网桌布动物|