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

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

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

AMetal開發(fā)通用外設(shè)的流程與規(guī)范

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

上期講述了搭建工程讓MCU在AMetal平臺運(yùn)行起來,為后續(xù)開發(fā)外設(shè)驅(qū)動奠定基礎(chǔ)。接下來可以進(jìn)入下一步的通用驅(qū)動外設(shè)開發(fā)工作,本次向大家介紹開發(fā)通用外設(shè)的一般流程與規(guī)范。

外設(shè)驅(qū)動開發(fā)的過程主要包括硬件層驅(qū)動函數(shù)的編寫、驅(qū)動層函數(shù)的實(shí)現(xiàn)、通用示例程序的編寫及其相關(guān)外設(shè)的配置文件開發(fā)。

poYBAGJpBR2Ad8NiAAB4ZsU8Nl0907.png

圖1 AMetal架構(gòu)

基于AMetal驅(qū)動架構(gòu),帶大家來了解一下通用外設(shè)驅(qū)動開發(fā)的主要流程,如下所示:

了解標(biāo)準(zhǔn)函數(shù)接口

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

pYYBAGJpBSaAA90MAADQRaECtB0461.png

圖2 標(biāo)準(zhǔn)接口層文件

通用外設(shè)硬件層開發(fā)

通過對標(biāo)準(zhǔn)層的了解,我們知道標(biāo)準(zhǔn)層實(shí)現(xiàn)的函數(shù)功能,以及需要驅(qū)動層提供的函數(shù)。但驅(qū)動層并不是凌空搭建的,驅(qū)動層介乎于HW層和標(biāo)準(zhǔn)接口層之間,簡單來說就是調(diào)用HW層的函數(shù)來提供給標(biāo)準(zhǔn)層,所以在完成驅(qū)動層開發(fā)前,要先來實(shí)現(xiàn)HW層的接口函數(shù)。

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

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

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

編寫寄存器相關(guān)操作函數(shù):對該外設(shè)的所有寄存器提供操作函數(shù);

查漏補(bǔ)缺:檢查補(bǔ)充所需功能函數(shù);

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

以ZLG116為例,如下圖所示為開發(fā)通用外設(shè)過程中各個驅(qū)動文件所存放的位置。

pYYBAGJpBTOADO4iAAC1SlFkTZs093.png

圖3 芯片外設(shè)驅(qū)動文件

外設(shè)驅(qū)動層開發(fā)

通過對標(biāo)準(zhǔn)接口層文件的分析與理解,清楚了驅(qū)動層需要為標(biāo)準(zhǔn)接口層提供哪些具體內(nèi)容,加上驅(qū)動層本身應(yīng)該提供給用戶的初始化函數(shù)和解初始化函數(shù)。因此,外設(shè)驅(qū)動層需要編寫的總體內(nèi)容如下:

編寫好標(biāo)準(zhǔn)接口層需要使用的基本函數(shù);

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

驅(qū)動解初始化函數(shù);

外設(shè)用戶配置文件開發(fā)。

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

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

pYYBAGJpBTyAZiBgAACKIswUeo0032.png

圖4 驅(qū)動的可復(fù)用性

外設(shè)例程文件開發(fā)

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

以上就是基于AMetal開發(fā)通用外設(shè)的流程與規(guī)范的全部內(nèi)容,相信大家熟悉了AMetal平臺上開發(fā)MCU通用外設(shè)的流程。

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

    關(guān)注

    31

    文章

    5250

    瀏覽量

    119192
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4235

    瀏覽量

    61964
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4670

    瀏覽量

    67760
  • ametal
    +關(guān)注

    關(guān)注

    2

    文章

    24

    瀏覽量

    11374
收藏 人收藏

    評論

    相關(guān)推薦

    關(guān)于ametal_led通用接口的設(shè)計(jì)技巧分享

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

    學(xué)好ametal_通用數(shù)碼管接口技術(shù),做項(xiàng)目事半功倍

    第八章為深入理解AMetal,本文內(nèi)容為8.6 通用數(shù)碼管接口。
    的頭像 發(fā)表于 11-30 08:31 ?2925次閱讀
    學(xué)好<b class='flag-5'>ametal</b>_<b class='flag-5'>通用</b>數(shù)碼管接口技術(shù),做項(xiàng)目事半功倍

    硬件開發(fā)流程規(guī)范 11頁

    硬件開發(fā)流程規(guī)范 11頁
    發(fā)表于 12-19 10:23

    硬件開發(fā)流程規(guī)范 貝爾豐 48頁

    硬件開發(fā)流程規(guī)范 貝爾豐 48頁
    發(fā)表于 12-19 10:28

    硬件開發(fā)流程規(guī)范

    硬件開發(fā)流程規(guī)范
    發(fā)表于 12-19 10:31

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

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

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

    做最原始封裝;驅(qū)動層在硬件層的基礎(chǔ)上進(jìn)一步封裝,簡化對外設(shè)的操作;標(biāo)準(zhǔn)接口層提取出了一套標(biāo)準(zhǔn)API接口,不僅適用于AWorksOS開發(fā)平臺也適用于其他操作系統(tǒng)。圖1 AMetal構(gòu)架同時(shí)AMe
    發(fā)表于 05-22 17:04

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

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

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

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

    基于Ametal平臺開發(fā),快速完成開發(fā)設(shè)計(jì)!

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

    AMetal適配:以TIM為例來展示如何開發(fā)通用驅(qū)動外設(shè)代碼

    基于定時(shí)器、RTC、WDT本質(zhì)上均是計(jì)數(shù)器的共性,本次將這三種通用外設(shè)統(tǒng)一為TIM。以TIM為例,來展示如何開發(fā)通用驅(qū)動外設(shè)代碼。對于
    的頭像 發(fā)表于 05-12 17:08 ?1693次閱讀
    <b class='flag-5'>AMetal</b>適配:以TIM為例來展示如何<b class='flag-5'>開發(fā)</b><b class='flag-5'>通用</b>驅(qū)動<b class='flag-5'>外設(shè)</b>代碼

    AMetal開發(fā)通用外設(shè)GPIO驅(qū)動的開發(fā)

    上期講述了開發(fā)通用外設(shè)之實(shí)戰(zhàn)TIM的流程,讓大家逐步深入了解如何開發(fā)通用
    的頭像 發(fā)表于 05-31 17:28 ?1940次閱讀

    AMetal代碼倉庫使用說明

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

    AMetal中斷說明

    ?;诖四康?,在 AMetal 中,所有外設(shè)中斷的默認(rèn)優(yōu)先級是 相同的,無法嵌套,即一個中斷無法打斷正在運(yùn)行的另一個中斷。
    發(fā)表于 10-12 16:05 ?3次下載

    淺談硬件電路開發(fā)流程規(guī)范

    硬件電路開發(fā)流程是指導(dǎo)硬件工程師按規(guī)范化方式進(jìn)行開發(fā)的準(zhǔn)則,規(guī)范了硬件電路開發(fā)的全過程。
    的頭像 發(fā)表于 08-03 10:31 ?1122次閱讀
    淺談硬件電路<b class='flag-5'>開發(fā)</b><b class='flag-5'>流程</b><b class='flag-5'>規(guī)范</b>