當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式教程
[導(dǎo)讀]AT91RM9200平臺(tái)的輔助時(shí)鐘研究

引 言
    在VxWorlks中,定時(shí)器機(jī)制的實(shí)現(xiàn)是建立在時(shí)鐘基礎(chǔ)之上的??筛鶕?jù)不同的要求選用不同的定時(shí)機(jī)制,如taskDelay()、WatchDog、輔助時(shí)鐘。前兩種定時(shí)都是基于系統(tǒng)時(shí)鐘的。
    taskDelay()是最簡(jiǎn)單的延時(shí)方法。它的單位是tick,所以其延時(shí)精度并不高,但對(duì)于延時(shí)10 ms以上的系統(tǒng)足夠了。利用taskDelay(),可以將調(diào)用的任務(wù)從就緒態(tài)轉(zhuǎn)到睡眠態(tài),但是不能用于中斷服務(wù)程序中。另外,可以通過調(diào)用taskDelay(0),將CPU交給系統(tǒng)中其他相同優(yōu)先級(jí)的任務(wù)。
    看門狗定時(shí)器作為系統(tǒng)時(shí)鐘中斷服務(wù)程序的一部分來維護(hù)。因此,與看門狗定時(shí)器相聯(lián)系的函數(shù)運(yùn)行在系統(tǒng)時(shí)鐘中斷級(jí),延時(shí)單位為tick。如果應(yīng)用程序需要多個(gè)看門狗函數(shù),則可使用wdCreate()為每個(gè)需求產(chǎn)生獨(dú)立的看門狗ID,因?yàn)閷?duì)于給定的看門狗ID,只有最近的wdStart()有效。利用看門狗定時(shí)器,調(diào)用的任務(wù)不會(huì)被阻塞,因?yàn)閣dStart()調(diào)用是立即返回的。但它也一般只適用于延時(shí)10ms以上的系統(tǒng)。
    如果在實(shí)際時(shí)需要更高精度的定時(shí)(如1 ms),那么采用輔助時(shí)鐘就是非??扇〉囊环N方法。一般在VxWorks系統(tǒng)的BSP中,都沒有配置輔助時(shí)鐘,本文詳細(xì)介紹輔助時(shí)鐘的配置及使用方法,以便在實(shí)際中靈活運(yùn)用。


1 AT91RM9200工業(yè)平臺(tái)的時(shí)鐘和定時(shí)器
    本文的研究是基于AT91RM9200工業(yè)平臺(tái)的,因此首先需要對(duì)此平臺(tái)下的時(shí)鐘及定時(shí)器進(jìn)行介紹。
    AT91RM9200提供了2個(gè)3通道16位定時(shí)器/計(jì)數(shù)器(TC)。3個(gè)通道雖然獨(dú)立,但操作相同,每個(gè)通道均為用戶可配置,包括3個(gè)外部時(shí)鐘輸入(XC0、XCl或XC2),5個(gè)內(nèi)部時(shí)鐘輸入(TIMER_CLOCKl、TIMER_CLOCK2、TIMER CLOCK3、TIMER_CL0CK4、TIMER_CLOCK5),以及2個(gè)可由用戶配置的多功能輸入/輸出信號(hào)。另外,每個(gè)通道可工作在兩種不同模式下,即捕獲模式和波形模式。其中,捕獲模式提供信號(hào)測(cè)量,波形模式用來產(chǎn)生波形,可由TC通道模式寄存器的WAVE位編程設(shè)定。定時(shí)器/計(jì)數(shù)器框圖如圖1所示。

    其中,如果選擇通道信號(hào)時(shí),XCO、XCl、XC2表示3個(gè)外部時(shí)鐘輸入;TIOA、TIOB表示作用于每個(gè)通道的2個(gè)多功能輸入/輸出信號(hào);INT表示中斷信號(hào)輸出;SYNC表示同步輸入信號(hào)。如果選擇塊信號(hào)時(shí),TCLKO、TCLKl、TCLK2表示3個(gè)外部時(shí)鐘輸入;TIOAO~TIOA2,表示通道0~2的TIOA信號(hào),TIOB0~TIOB2表示通道0~2的TI0B信號(hào)。
    其中,5個(gè)內(nèi)部時(shí)鐘輸入與主時(shí)鐘(MCK)、慢速時(shí)鐘(SLCK)及主時(shí)鐘分頻后時(shí)鐘相關(guān),如表1所列。

2 在VxWorks中輔助時(shí)鐘的配置
   
在VxWorks操作系統(tǒng)中如果要使用輔助時(shí)鐘,必須經(jīng)過一定的配置才能使用。首先,需要在Vxworks組件或config.h中進(jìn)行定義:
    #define INCLUDE_AUX_CLK
    如果不定義,那么輔助時(shí)鐘是無法使用的。另外,在sysLib.C的sysHwlnit2函數(shù)中需要進(jìn)行輔助時(shí)鐘的初始化,即中斷連接配置:
(void)intConnect(AUX_TIMER_INT_VEC,sysAuxClkInt,O)
    輔助時(shí)鐘和系統(tǒng)時(shí)鐘的區(qū)別是:輔助時(shí)鐘必須由用戶提供ISR,但不允許在ISR中調(diào)用tickAnnounce(),否則會(huì)擾亂系統(tǒng)時(shí)鐘的機(jī)制。
    輔助時(shí)鐘的配置可以按照installDir/target/drv/tim—er/templateTimer.C中的函數(shù)模板來進(jìn)行修改,在本文中使用的驅(qū)動(dòng)程序是At91Rm9200timer.c,頭文件為At91Rm9200timer.h。在此文件中進(jìn)行的修改需要根據(jù)所依賴的具體芯片來進(jìn)行,即需要參考AT91RM9200芯片數(shù)據(jù)手冊(cè)。
    與輔助時(shí)鐘相關(guān)的函數(shù)有:sysAuxClkInt()、sysAux—ClkConnect()、sysAuxClkDisable()、sysAuxClkEnable()、sysAuxClkRateGet()和sysAuxClkRateSet()。其中,sysAuxClkRateGet()可以和sysAuxClkRateSet()視為一組。sysAuxClkRateGet()是通過sysAuxClkRateSet()函數(shù)設(shè)定的時(shí)鐘頻率進(jìn)行讀取的,而sysAuxClkRateSet()函數(shù)中時(shí)鐘頻率的設(shè)定則受AUX_CLK_RATE_MIN和AUX_CLK_RATE_MAX的限制。這個(gè)最大值和最小值需要進(jìn)行定義,定義的位置可能不同,有的放在eonfig.h中,有的放在bsp.h中,本文的最大值和最小值放在Inte—grator.h中定義。接下來需要重點(diǎn)討論的是sysAux-ClkInt()和sysAuxClkEnabel()這兩個(gè)函數(shù)。
    sysAuxClkInt()函數(shù)調(diào)用用戶定義的中斷處理函數(shù),而用戶調(diào)用的中斷處理函數(shù)是由sysAuxClkConnect()函數(shù)來連接的。在調(diào)用中斷處理函數(shù)之前,一定要先進(jìn)行清除中斷操作,如:
AMBA_TIMER_READ(AMBA_TIMER_T2SR(AMBA_TIMER_BASE),temp);
    不然,CPU將一直陷入中斷,不能做別的事情了。
    其他大量的工作都是放在sysAuxClkEnble()函數(shù)中進(jìn)行的。根據(jù)AT91RM9200的具體情況,選擇5個(gè)內(nèi)部時(shí)鐘的其中之一,在此選擇TIMER_CLOCK2;根據(jù)前面所提到的通道概念,選取第2個(gè)通道。必須和系統(tǒng)時(shí)鐘區(qū)分開,不能同時(shí)選擇一個(gè)內(nèi)部時(shí)鐘和同一個(gè)通道。
    首先,需要判斷電源管理對(duì)輔助時(shí)鐘是否進(jìn)行了配置,可以查看相關(guān)文件。如果沒有進(jìn)行配置,則需要如進(jìn)行如下配置:
    AT9l_SYS→PMC_PCER=l<<AT9lC_ID_TCl;
    其次,必須先對(duì)AIC編程,再配置TC。
    然后,需要對(duì)具體的寄存器進(jìn)行控制操作,首先需要選擇內(nèi)部時(shí)鐘,如圖2所示。

    對(duì)通道模式寄存器進(jìn)行控制:
    AMBA_TIMER_WRITE(AMBA_TIMER_T2MR(AMBA_TIMER_BASE),TIMER_CLOCK2| TC_CPCTRG);
    通過TCCLKS位選擇第2個(gè)內(nèi)部時(shí)鐘,并根據(jù)寫入RC寄存器的定時(shí)器值進(jìn)行RC比較觸發(fā)使能。同時(shí),需要對(duì)TC通道控制寄存器進(jìn)行控制,寫入計(jì)數(shù)器時(shí)鐘使能命令和軟件觸發(fā)命令,如:

AMBA_TIMER_WRITE(AMBA_TIMER_T2CR(AMBA_TIMER_BASE),TC_CLKEN);
AMBA_TIMER_WRITE(AMBA_TIMER_T2CR(AMBA_TIMER_BASE),TC_SWTRG);
    另外,由于采用RC寄存器觸發(fā)使能,因此還需要對(duì)TC中斷使能寄存器進(jìn)行控制,寫入RC比較中斷使能信號(hào),如:
AMBA_TIMER_WRITE(AMBA_TIMER_T2IER(AMBA_TIMER_BASE),TC_CPCS);

    最后,需要執(zhí)行中斷使能操作,如:
AMBA_TIMER_INT_ENABLE(AUX_TIMER_INT_LVL);
    一切配置好后,重新編譯bootroFll和VxWorks鏡像,啟動(dòng)VxWorks鏡像;然后編寫測(cè)試程序進(jìn)行測(cè)試,驗(yàn)證輔助時(shí)鐘是否配置成功。另外,可以通過邏輯分析儀查看輔助時(shí)鐘的中斷情況。輔助時(shí)鐘驅(qū)動(dòng)后,在應(yīng)用程序中可以用sysAuxClkRateSet()函數(shù)動(dòng)態(tài)設(shè)置系統(tǒng)輔助時(shí)鐘每秒的中斷數(shù);sysAuxClkConnect()函數(shù)為系統(tǒng)輔助時(shí)鐘中斷指定ISR,并且由sysAuxClkEnable()函數(shù)使能時(shí)鐘中斷,去調(diào)用指定的ISR。

結(jié) 語
    VxWorks提供系統(tǒng)輔助時(shí)鐘機(jī)制的主要目的,是使用戶在系統(tǒng)時(shí)鐘之外多一種定時(shí)資源選擇,并提供了管理手段。另外,VxWorks的某些輔助調(diào)試工具也可能要求使用系統(tǒng)輔助時(shí)鐘。
    輔助時(shí)鐘的使用是通過提高節(jié)拍率來實(shí)現(xiàn)的,而提高節(jié)拍率意味著時(shí)鐘中斷產(chǎn)生得更加頻繁,所以中斷處理程序也會(huì)更頻繁地執(zhí)行。如此一來會(huì)給整個(gè)系統(tǒng)帶來如下好處:
    ①更高的時(shí)鐘中斷解析度(resolution)可提高時(shí)間驅(qū)動(dòng)事件的解析度;
    ②提高了時(shí)間驅(qū)動(dòng)事件的準(zhǔn)確度(accuracy)。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉