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