精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

AMetal開發通用外設的流程與規范

科技綠洲 ? 來源:立功科技 ? 作者:立功科技 ? 2022-04-27 16:58 ? 次閱讀

上期講述了搭建工程讓MCU在AMetal平臺運行起來,為后續開發外設驅動奠定基礎。接下來可以進入下一步的通用驅動外設開發工作,本次向大家介紹開發通用外設的一般流程與規范。

外設驅動開發的過程主要包括硬件層驅動函數的編寫、驅動層函數的實現、通用示例程序的編寫及其相關外設的配置文件開發。

poYBAGJpBR2Ad8NiAAB4ZsU8Nl0907.png

圖1 AMetal架構

基于AMetal驅動架構,帶大家來了解一下通用外設驅動開發的主要流程,如下所示:

了解標準函數接口

對于通用MCU而言,AMetal提供了各個通用外設的標準層接口開發者不需要額外開發,只需了解標準外設的接口函數即可。通用外設一般是多實例設備,標準接口層函數的第一個參數均為外設標準服務操作句柄handle。雖然標準函數接口不需要用戶編寫,但用戶還是需要充分了解標準接口層,才能夠清楚驅動層需要開發的內容——即如何實現函數接口等。AMetal提供的所有標準層驅動文件均在{SDK}\interface路徑下,標準接口層包含的文件如下所示:

pYYBAGJpBSaAA90MAADQRaECtB0461.png

圖2 標準接口層文件

通用外設硬件層開發

通過對標準層的了解,我們知道標準層實現的函數功能,以及需要驅動層提供的函數。但驅動層并不是凌空搭建的,驅動層介乎于HW層和標準接口層之間,簡單來說就是調用HW層的函數來提供給標準層,所以在完成驅動層開發前,要先來實現HW層的接口函數。

HW層對應到具體的外設,其提供的API基本上是直接操作寄存器的內聯函數,其效率最高,內聯函數直接定義在.h文件中。硬件層中所有的符號及函數命名均以amhw_/AMHW_開頭。通常情況下,HW層只有.h文件,只有當某些硬件功能設置較為復雜時,才提供對應的非內聯函數,存放在.c文件中。

開發HW層前,我們需要根據芯片用戶手冊,來大概了解一下該芯片外設的寄存器。從而對外設功能有一定的了解之后再開始開發,其流程如下:

添加寄存器列表,以確保硬件層接口的完整和準確性;

編寫寄存器相關操作函數:對該外設的所有寄存器提供操作函數;

查漏補缺:檢查補充所需功能函數;

添加指向寄存器塊的指針,方便用戶或驅動層使用。

以ZLG116為例,如下圖所示為開發通用外設過程中各個驅動文件所存放的位置。

pYYBAGJpBTOADO4iAAC1SlFkTZs093.png

圖3 芯片外設驅動文件

外設驅動層開發

通過對標準接口層文件的分析與理解,清楚了驅動層需要為標準接口層提供哪些具體內容,加上驅動層本身應該提供給用戶的初始化函數和解初始化函數。因此,外設驅動層需要編寫的總體內容如下:

編寫好標準接口層需要使用的基本函數;

驅動初始化函數;

驅動解初始化函數;

外設用戶配置文件開發。

由于用戶調用驅動層的初始化函數時,需要傳入設備地址和設備信息地址作為參數。為了方便用戶使用,我們需要將設備變量和設備信息常量定義好;從而用戶調用驅動的初始化函數時,只需要使用已經定義好的設備變量和設備信息常量即可,不需要再額外定義。因此,我們把這個用于存放設備變量和設備常量信息和驅動初始化函數的文件稱之為外設用戶配置文件。通常情況下,AMetal平臺為每一個外設均提供了一個獨立的用戶配置文件。

開發完驅動層我們知道,用戶使用一個外設的過程是,先調用驅動初始化函數,該函數返回一個handle,后續的所有操作,用戶直接使用該handle作為參數調用標準接口層函數即可。這樣一來,可以實現數據與代碼的分離,即達到驅動復用的效果。以I2C外設為例,在操作該外設時,四個I2C的操作方式完全一樣,僅僅是引腳、中斷號、寄存器基地址不同的區別而已:

pYYBAGJpBTyAZiBgAACKIswUeo0032.png

圖4 驅動的可復用性

外設例程文件開發

開發完驅動文件之后,最后是編寫例程文件。例程文件開發主要分為兩個部分:基于硬件層實現的HW例程、基于標準層實現的STD例程以及在板測試的板級例程。為了將外設所有的例程(包括HW例程和STD例程)統一管理,例程統一存放{SDK}\examples\board\xxx_core\peripheral_name路徑。HW層的實現與標準層的實現,在文件上的命名,分別采用hw與std作為關鍵字。到了這一步,我們就需要依托硬件測試驗證我們的代碼功能,最終即可實現通用外設的開發。

以上就是基于AMetal開發通用外設的流程與規范的全部內容,相信大家熟悉了AMetal平臺上開發MCU通用外設的流程。

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

    關注

    31

    文章

    5317

    瀏覽量

    120002
  • 函數
    +關注

    關注

    3

    文章

    4304

    瀏覽量

    62427
  • 代碼
    +關注

    關注

    30

    文章

    4744

    瀏覽量

    68345
  • ametal
    +關注

    關注

    2

    文章

    24

    瀏覽量

    11392
收藏 人收藏

    評論

    相關推薦

    關于ametal_led通用接口的設計技巧分享

    第八章為深入理解AMetal,本文內容為8.1 LED 通用接口。
    的頭像 發表于 11-23 07:52 ?6612次閱讀
    關于<b class='flag-5'>ametal</b>_led<b class='flag-5'>通用</b>接口的設計技巧分享

    學好ametal_通用數碼管接口技術,做項目事半功倍

    第八章為深入理解AMetal,本文內容為8.6 通用數碼管接口。
    的頭像 發表于 11-30 08:31 ?3024次閱讀
    學好<b class='flag-5'>ametal</b>_<b class='flag-5'>通用</b>數碼管接口技術,做項目事半功倍

    硬件開發流程規范 11頁

    硬件開發流程規范 11頁
    發表于 12-19 10:23

    硬件開發流程規范 貝爾豐 48頁

    硬件開發流程規范 貝爾豐 48頁
    發表于 12-19 10:28

    硬件開發流程規范

    硬件開發流程規范
    發表于 12-19 10:31

    靈動微電子MM32 MCU正式入駐AMetal平臺

    ,后續將支持MM32全系列MCU,歡迎您的試用。靈動微電子成立于2011年,是中國本土領先的通用32位MCU產品及解決方案供應商。公司基于Arm Cortex-M系列內核開發的MM32 MCU產品擁有F
    發表于 01-16 11:38

    靈動微課堂 (第122講) | 基于MM32 MCU的OS移植與應用:AMetal平臺新建工程

    做最原始封裝;驅動層在硬件層的基礎上進一步封裝,簡化對外設的操作;標準接口層提取出了一套標準API接口,不僅適用于AWorksOS開發平臺也適用于其他操作系統。圖1 AMetal構架同時AMe
    發表于 05-22 17:04

    靈動微課堂 (第123講) | 基于MM32 MCU的OS移植與應用:AMetal LED燈控制

    MDK5.18安裝指南》或立功科技的《面向AMetal框架和接口的C編程》的1.2 搭建開發環境章節,在這里就不做過多的贅述。在 AMetal 軟件包中,目前已經支持的硬件平臺,官方提供了對應的模板工程
    發表于 05-28 16:19

    靈動微課堂 (第123講) | 基于MM32 MCU的OS移植與應用:AMetal LED燈控制

    MDK5.18安裝指南》或立功科技的《面向AMetal框架和接口的C編程》的1.2 搭建開發環境章節,在這里就不做過多的贅述。在 AMetal 軟件包中,目前已經支持的硬件平臺,官方提供了對應的模板工程
    發表于 05-28 16:19

    基于Ametal平臺開發,快速完成開發設計!

    傳統旋鈕采用機械式結構,面板上需要開孔,長時間使用易磨損、進灰塵等,采用新型吸附式磁旋鈕可以輕松解決上述問題。此磁旋鈕采用ZLG品牌的32位ARM單片機ZLG116做主控,并且基于Ametal平臺開發,能夠快速完成開發設計。
    的頭像 發表于 05-04 09:11 ?7121次閱讀

    AMetal適配:以TIM為例來展示如何開發通用驅動外設代碼

    基于定時器、RTC、WDT本質上均是計數器的共性,本次將這三種通用外設統一為TIM。以TIM為例,來展示如何開發通用驅動外設代碼。對于
    的頭像 發表于 05-12 17:08 ?1811次閱讀
    <b class='flag-5'>AMetal</b>適配:以TIM為例來展示如何<b class='flag-5'>開發</b><b class='flag-5'>通用</b>驅動<b class='flag-5'>外設</b>代碼

    AMetal開發通用外設GPIO驅動的開發

    上期講述了開發通用外設之實戰TIM的流程,讓大家逐步深入了解如何開發通用
    的頭像 發表于 05-31 17:28 ?2086次閱讀

    AMetal代碼倉庫使用說明

    本文檔簡述了 AMetal 代碼倉庫的使用、 TortoiseGit 的使用以及版本控制等。AMetal 是芯片級的裸機軟件包,定義了跨平臺的通用接口(使得基于 AMetal 的應用程
    發表于 10-12 16:06 ?1次下載

    AMetal中斷說明

    。基于此目的,在 AMetal 中,所有外設中斷的默認優先級是 相同的,無法嵌套,即一個中斷無法打斷正在運行的另一個中斷。
    發表于 10-12 16:05 ?3次下載

    淺談硬件電路開發流程規范

    硬件電路開發流程是指導硬件工程師按規范化方式進行開發的準則,規范了硬件電路開發的全過程。
    的頭像 發表于 08-03 10:31 ?1227次閱讀
    淺談硬件電路<b class='flag-5'>開發</b><b class='flag-5'>流程</b><b class='flag-5'>規范</b>