本文導(dǎo)讀
上期講述了AMetal平臺驅(qū)動框架中的硬件層,介紹了硬件層的驅(qū)動是如何實現(xiàn)及其硬件層接口的定義,逐漸深入了解AMetal平臺。接下來向大家介紹配置文件和例程文件的使用,以此可靈活使用相應(yīng)外設(shè)的資源。
每一個MCU上都包含了眾多硬件外設(shè)資源,只要AMetal提供了對應(yīng)外設(shè)的驅(qū)動,就會提供一套相對應(yīng)的默認(rèn)配置信息。AMetal支持的任一型號的芯片均按照如下所示的格式來設(shè)置硬件外設(shè)資源所對應(yīng)的配置文件,其中xxx代表的是芯片型號。
圖1 硬件外設(shè)及對應(yīng)的配置文件
配置文件
配置文件的核心是定義一個設(shè)備實例和設(shè)備信息結(jié)構(gòu)體,并提供封裝好的實例初始化函數(shù)和實例解初始化函數(shù)。
設(shè)備實例為整個外設(shè)驅(qū)動提供必要的內(nèi)存空間,實際上就是使用相應(yīng)的設(shè)備結(jié)構(gòu)體類型定義的一個結(jié)構(gòu)體變量,無需用戶賦值。在配置文件中,設(shè)備實例均已定義,如下以GPIO設(shè)備實例為例:
圖2 GPIO設(shè)備實例
設(shè)備信息通常包含以下幾個部分:
寄存器基地址:每個片上外設(shè)都有對應(yīng)的寄存器,根據(jù)該寄存器的起始地址,就能夠操作到對應(yīng)的寄存器。
中斷號:中斷號對應(yīng)了外設(shè)的中斷服務(wù)入口,需要將該中斷號傳遞給驅(qū)動,以便驅(qū)動使用相應(yīng)的中斷資源。
時鐘ID號:時鐘ID對應(yīng)了外設(shè)的時鐘來源,需要將時鐘ID號傳遞給驅(qū)動,以便驅(qū)動中可以獲取外設(shè)的頻率及使能該外設(shè)的相關(guān)時鐘。
用戶根據(jù)實際需求分配內(nèi)存:由于系統(tǒng)部分資源會存在差異,用戶可根據(jù)實際情況來設(shè)置,避免造成資源浪費。
平臺初始化函數(shù):平臺初始化函數(shù)主要用于初始化與該外設(shè)相關(guān)的平臺資源,如使能外設(shè)的時鐘,配置相應(yīng)的引腳等。
平臺解初始化函數(shù):平臺解初始化函數(shù)與平臺初始化函數(shù)對應(yīng),平臺初始化使能了時鐘等,就可以通過平臺解初始化函數(shù)將其關(guān)閉。
通過設(shè)置外設(shè)相應(yīng)的配置文件,以此來實現(xiàn)設(shè)備實例化,便于后續(xù)驅(qū)動文件調(diào)用該外設(shè)的相關(guān)資源。如下所示為外設(shè)實例化的流程:
圖3 外設(shè)實例化流程
工程配置
與板級相關(guān)的資源有LED、蜂鳴器、按鍵、調(diào)試串口、延時、系統(tǒng)滴答、軟件定時器、標(biāo)準(zhǔn)庫、中斷延時等,如下所示。上述板級資源均可以通過配置對應(yīng)的使能/禁能宏來決定系統(tǒng)啟動時是否自動完成初始化操作。
圖4 板級資源初始化使能/禁能
除此之外,還有一些全局外設(shè),如CLK、GPIO、DMA、INT和NVRAM。由于需要在全局使用,因此在系統(tǒng)啟動時已默認(rèn)初始化,在應(yīng)用程序使用時,無需再重復(fù)初始化。若在某些特殊的應(yīng)用場合不希望在系統(tǒng)啟動時自動初始化某些特定的資源,可設(shè)置宏來關(guān)閉。如果確定系統(tǒng)不使用GPIO資源或希望由應(yīng)用程序自行完成初始化操作,則可以將該宏的值修改為0。
圖5 部分外設(shè)初始化使能/禁能
通用例程文件
AMetal中examples文件下的demo分為四類,分別放到board、components、soc、std這四個文件中的demo源程序是給用戶的一個使用范疇,同時頭文件包含了詳盡的注釋說明,操作步驟,實驗現(xiàn)象等。因此,大家在使用相關(guān)內(nèi)容的時候可以先查看對應(yīng)的demo文件,就可以快速上手相應(yīng)的外設(shè)資源。
board文件下對應(yīng)板級例程,調(diào)用驅(qū)動層和硬件層的例程,控制評估板的各個硬件外設(shè);
components文件下對應(yīng)組件例程,包含一些常用芯片(如MX25xx、EP24Cxx等)的例程和服務(wù)組件例程;
soc文件下對應(yīng)硬件層例程,通過調(diào)用硬件層函數(shù)實現(xiàn),不同系列的soc對應(yīng)不同的相關(guān)硬件層例程;
std文件下對應(yīng)驅(qū)動層例程,調(diào)用驅(qū)動層的函數(shù)和標(biāo)準(zhǔn)接口來實現(xiàn)的。
除board、soc外,其他文件中(components、std)的demo是通用的,不與具體的硬件綁定,可以應(yīng)用在多個硬件平臺中,其正常運行時需要將入口函數(shù)的參數(shù)傳入即可。如下所示為通用demo的示例:
圖6 通用demo示例
board文件下的demo可以直接在相應(yīng)的硬件評估板上運行,其實現(xiàn)往往直接調(diào)用通用demo的入口函數(shù),并根據(jù)硬件板的實際情況,準(zhǔn)備好通用demo的必要條件。如下所示為可以直接在ZLG116上運行的demo:
圖7 可以在硬件板直接運行的demo
以上就是AMetal驅(qū)動框架詳解之配置文件與例程文件的全部內(nèi)容,主要為大家介紹配置文件和例程文件的使用,也便于后續(xù)可以熟練使用AMetal提供的示例文件。
-
芯片
+關(guān)注
關(guān)注
455文章
50812瀏覽量
423573 -
硬件
+關(guān)注
關(guān)注
11文章
3328瀏覽量
66218 -
驅(qū)動框架
+關(guān)注
關(guān)注
0文章
14瀏覽量
4035
發(fā)布評論請先 登錄
相關(guān)推薦
評論