一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

基于HCS12X系列單片機中的XGATE協(xié)處理器提高應(yīng)用系統(tǒng)定時的精度

牽手一起夢 ? 來源:單片機與嵌入式系統(tǒng)應(yīng)用 ? 作者:馮澤東 , 邵貝貝 ? 2020-10-04 14:34 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

μC/OS-II最多支持63個任務(wù),并支持信號量、郵箱、消息隊列等多種進程間通信機制;同時,用戶可以根據(jù)需求對內(nèi)核中的功能模塊進行裁剪。將μC/OS-II應(yīng)用到嵌入式系統(tǒng)中,對于提高產(chǎn)品的質(zhì)量、縮短開發(fā)周期和降低成本都有重要的意義。

為了保證系統(tǒng)的實時性,μC/OS-II采用查表策略,使優(yōu)先級最高的任務(wù)一旦進入就緒態(tài)就立刻可以運行。這種查表算法與應(yīng)用系統(tǒng)的任務(wù)數(shù)目無關(guān),執(zhí)行時間是固定值,從而保證了系統(tǒng)的硬實時性。μC/OS-II實時內(nèi)核中唯一一個執(zhí)行時間受任務(wù)數(shù)目影響的函數(shù)是時鐘節(jié)拍,時鐘節(jié)拍的中斷服務(wù)子程序需要遍歷所有使用延遲函數(shù)的任務(wù),故執(zhí)行時間與任務(wù)數(shù)目有關(guān),為非固定值。此外,時鐘節(jié)拍的頻率也不能太高,否則會因為CPU頻繁加載中斷服務(wù)子程序,導(dǎo)致加重了CPU負(fù)荷,影響μC/OS-II的實時性。

Freescale公司的16位HCS12X(簡稱“S12X”)系列單片機引入了一個協(xié)處理器,名為“XGATE”。與普通意義上的浮點協(xié)處理器不同,這個協(xié)處理器主要用來處理中斷。如果采用協(xié)處理器來處理μC/OS-II時鐘節(jié)拍的中斷,那么主CPU無需頻繁加載中斷服務(wù)子程序,從而保證μC/OS-II內(nèi)核的所有函數(shù)執(zhí)行時間都為固定值。這樣,μC/OS-II的實時性就得到了保證,還能以提高時鐘節(jié)拍中斷頻率的方法提高應(yīng)用系統(tǒng)定時的精度。

1 單片機中的協(xié)處理器

HCS12X系列單片機中的XGATE協(xié)處理器是精簡指令集(RISC)結(jié)構(gòu)的處理器,它的工作時鐘頻率是S12X主CPU的2倍。主CPU初始化系統(tǒng)時可決定使用或禁用XGATE。若使用,則XGATE在初始化后就獨立地運行,并通過雙端口RAM與CPU交換數(shù)據(jù),必要時向主CPU發(fā)中斷請求。

XGATE處理完所有的中斷后進入休眠態(tài),停止運行,直到下一次中斷發(fā)生。XGATE比較適合響應(yīng)的中斷主要是加載頻率高的中斷,或不帶通信緩沖區(qū)的I/O中斷,例如SCI發(fā)送或接收中斷、PWM輸出中斷等。而對于本身帶發(fā)送、接收緩沖區(qū)的中斷(如CAN中斷、USB中斷等),采用協(xié)處理器處理中斷優(yōu)勢不明顯。

μC/OS-II的時鐘節(jié)拍中斷是一個頻繁發(fā)生的中斷,所以很適合采用XGATE來響應(yīng)。以下重點介紹如何用XGATE協(xié)處理器響應(yīng)μC/0S—II的時鐘節(jié)拍中斷。

2 用XGATE實現(xiàn)μC/OS-II的時鐘節(jié)拍

μC/0S-II的時鐘節(jié)拍中斷可以采用單片機的實時中斷(Real-Time Interrupt,RTI)來實現(xiàn)。當(dāng)然也可以使用定時器中的計數(shù)器來產(chǎn)生時鐘節(jié)拍,原理相同,方法近似。使用XGATE來響應(yīng)RTI中斷,實現(xiàn)時鐘節(jié)拍時,XGATE協(xié)處理器和主CPU的分工如表1所列。

基于HCS12X系列單片機中的XGATE協(xié)處理器提高應(yīng)用系統(tǒng)定時的精度

XGATE負(fù)責(zé)響應(yīng)RTI中斷,實現(xiàn)時鐘節(jié)拍,并完成任務(wù)延時計數(shù);在任務(wù)延時完成后,通知CPU進行任務(wù)調(diào)度。另外,XGATE還用來響應(yīng)其他中斷,在需要任務(wù)調(diào)度時通知CPU。主CPU則只負(fù)責(zé)運行任務(wù)(包括系統(tǒng)任務(wù))和任務(wù)調(diào)度,只有在需要任務(wù)調(diào)度時才會加載中斷服務(wù)子程序。使用XGATE來實現(xiàn)時鐘節(jié)拍的具體設(shè)置步驟如下所述。

2.1 將RTI中斷的控制權(quán)交給XGATE

為了將RTI中斷交由XGATE來處理,系統(tǒng)初始化時需要設(shè)置S12X單片機中RTI中斷對應(yīng)的中斷控制寄存器。中斷控制寄存器組成如下:

在S12X單片機中,每一個I/O中斷都有一個中斷控制寄存器與之對應(yīng)。中斷控制寄存器控制相應(yīng)的中斷是由S12X CPU響應(yīng)還是由XGATE來響應(yīng),以及該中斷的優(yōu)先級。

中斷控制寄存器中,RQST位為1時,中斷由XGATE來響應(yīng);為0時,中斷由S12X CPU響應(yīng)。為了使用XGATE來響應(yīng)RTI中斷,需要將RTI中斷對應(yīng)的中斷控制寄存器的RQST位置1。PRIOLVL[2:0]保存的是對應(yīng)中斷的優(yōu)先級,值越大,對應(yīng)中斷的優(yōu)先級越高。如果這3位均為0,那么對應(yīng)中斷會被禁用。

設(shè)置中斷控制寄存器可以調(diào)用編譯器提供的一個函數(shù)ROUTE_INTERRUPT。這個函數(shù)需要的參數(shù)是對應(yīng)中斷的中斷向量相對中斷向量表基址(0xFF00)的偏移量,以及中斷控制寄存器的值。設(shè)置RTI中斷控制寄存器的代碼如下:

RUUTE_INTERRUPT (0xF0,0x81);

其中,0xF0是RTI中斷向量相對中斷向量表基址的偏移量,0x81是要設(shè)置的中斷控制寄存器的值。

2.2 XGATE與S12X CPU的數(shù)據(jù)共享

XGATE實現(xiàn)μC/OS-II的時鐘節(jié)拍和S12X CPU實現(xiàn)任務(wù)調(diào)度,都需要訪問與系統(tǒng)的任務(wù)控制塊鏈表相關(guān)的變量,因此這些變量需要聲明為XGATE和S12X CPU的共享變量。共享變量的聲明需要加上“volatile”類型聲明,并使用“#pragma”預(yù)處理命令將其放在共享內(nèi)存中。

S12 CPU的程序中聲明如下:

在XGATE的程序中,需要使用extern聲明這些變量,具體語句如下:

2.3 XGATE與S12X CPU的指針變量變換

因為XGATE的內(nèi)存空間編址與S12X CPU的內(nèi)存空間編址不一樣,所以在指針變量共享時會存在問題。CPU的內(nèi)存空間和XGATE的內(nèi)存空間的差別如圖1所示。

從圖1中可以看出,在S12X CPU的尋址空間中,0x1000~0x3FFF為RAM空間;而對XGATE來說,RAM空間的地址范圍為Ox8000~0xFFFF。如果XGATE的程序直接使用CPU的指針變量,則會導(dǎo)致XGATE訪問地址空間0x1000~0x3FFF,該區(qū)域?qū)τ赬GATE是Flash,從而出錯。為了正確地共享指針變量,在XGATE中使用S12x CPU的指針變量時,需要對指針變量進行變換。S12X系列中不同單片機成員的地址分配可能有所不同。以MC9S12XDT512單片機為例,其內(nèi)部共有8 KB非分頁RAM,可全都設(shè)為S12X CPU和XGATE的共享內(nèi)存。這8 KB RAM在S12X CPU中的地址為0x2000~0x3FFF;而在XGATE中的地址為0xE000~0xFFFF,地址偏差為0xC000。因此,在XGATE使用S12X CPU的指針變量時,將指針變量的值加偏移量0xC000,就可以在XGATE程序中正常使用。

下面是XGATE程序中一個指針變量變換的代碼:

在XGATE協(xié)處理器中有8個寄存器,編譯器使用其中的R1來傳遞參數(shù),上面程序中的R2、R3是8個寄存器中的另外2個。

2.4 XGATE與S12X CPU的通信

XGATE處理RTI中斷時先完成指針變換,然后遍歷μC/OS-II的所有任務(wù)控制塊鏈表,對需要延時的任務(wù)進行延時計數(shù)器減1操作。若無需任務(wù)調(diào)度,則XGATE回到休眠態(tài),直到響應(yīng)下一次中斷。僅當(dāng)某任務(wù)延時計數(shù)器遞減到零時,該任務(wù)進入就緒態(tài),需要任務(wù)調(diào)度時才通知S12X CPU進行任務(wù)切換。

在XGATE的中斷服務(wù)子程序中,中斷標(biāo)志指令SIF用于向S12X CPU發(fā)出中斷請求。該指令置位中斷標(biāo)志位,請求S12X CPU繼續(xù)響應(yīng)本次RTI中斷。在XGATE的中斷服務(wù)子程序中使用SIF 指令的代碼如下(其中R5是協(xié)處理器XGATE的8個寄存器之一):

由于遍歷任務(wù)控制塊鏈表和各任務(wù)延時計數(shù)器減1的操作,以及無需任務(wù)調(diào)度的RTI中斷響應(yīng)都由XGATE完成了,S12X CPU只需要響應(yīng)確實需要進行任務(wù)調(diào)度的RTI中斷,使其中斷服務(wù)子程序大大簡化:

這樣,CPU的RTI中斷服務(wù)子程序所要執(zhí)行的代碼是固定的,每次的運行時間也是固定值,因而μC/OS-II的實時性得到了確切的保證。

S12X CPU和XGATE的程序流程如圖2所示。

2.5 設(shè)置XGATE向量表

為了使XGATE正常響應(yīng)中斷,需要把XGATE的RTI中斷服務(wù)子程序地址寫到XGATE的中斷向量表中。XGATE的中斷向量表的寫法與CPU的中斷向量寫法類似,只是XGATE的中斷子程序可代入一個參數(shù),需要將這個參數(shù)也寫入中斷向量表。

在XGATE中斷向量表的確定位置,寫入RTI中斷服務(wù)子程序地址和參數(shù)變量,就可以使XGATE在響應(yīng)RTI中斷時進入RTI中斷服務(wù)子程序。

XGATE的中斷向量表的寫法如下:

其中,OSTCBList是XGATE響應(yīng)RTI中斷時需要帶入的參數(shù),這里這個參數(shù)是μC/OS-II任務(wù)控制塊鏈表的首地址;XGATE_TableEntry是一個編譯器自定義的結(jié)構(gòu)體變量類型;XGATE_VectorTable[]是XGATE的中斷向量表。寫好XGATE的中斷向量表后,使用XGATE實現(xiàn)μC/OS-II時鐘節(jié)拍的設(shè)置過程就完成了。

3 效果測試與分析

為了驗證用協(xié)處理器處理時鐘節(jié)拍中斷的效果,進行如下測試:在同-S12x單片機上,分別使用和不使用XGATE處理μC/OS-II的時鐘節(jié)拍中斷。在兩種情況下,建立同樣的10個任務(wù),時鐘節(jié)拍中斷服務(wù)子程序中同樣只進行任務(wù)控制塊鏈表遍歷和延時計數(shù)器減1,不做任務(wù)調(diào)度。這樣,μC/OS-II中會有一個任務(wù)總處于就緒態(tài)并一直運行,這個一直運行的任務(wù)會通過循環(huán)計數(shù)的方法在一個I/O端口上輸出一個方波。在同樣的總線時鐘和同樣頻率的時鐘節(jié)拍下,比較兩種μC/OS-II輸出的方波周期的差別。

測試的目的是,觀察μC/OS-II的時鐘節(jié)拍中斷服務(wù)子程序的加載,對正在系統(tǒng)中運行的任務(wù)的影響。為了與XGATE處理任務(wù)控制塊鏈表遍歷和延時計數(shù)器減1進行對比,未使用XGATE的μC/OS-II中,S12X CPU的時鐘節(jié)拍中斷服務(wù)子程序只保留與XGATE同樣的操作。沒有任務(wù)調(diào)度,也方便對系統(tǒng)中正在運行的任務(wù)輸出的方波進行觀察。

在不使用的XGATE的μC/OS-II中,S12X CPU的RTI中斷的中斷服務(wù)子程序代碼如下:

以上S12X CPU中斷服務(wù)子程序共有220條指令,需運行538個周期。測試中采用了16 MHz的總線時鐘和16 kHz的μC/OS-II時鐘節(jié)拍。可以估算出,每次中斷服務(wù)子程序在S12X CPU中的運行時間為33.6 μs,約相當(dāng)于62.5μs時鐘節(jié)拍的53%,即S12X CPU需要用一多半的時間響應(yīng)時鐘節(jié)拍中斷,這顯然是不可取的。

在μC/OS-II中用XGATE處理時鐘節(jié)拍中斷時,當(dāng)無需做任務(wù)調(diào)度時,XGATE遍歷10個任務(wù)的控制塊鏈表,執(zhí)行延時計數(shù)器減1操作,共需要148條指令。由于XGATE是RISC結(jié)構(gòu)的處理器,指令執(zhí)行時間多為1~2個周期,故執(zhí)行148條指令共需要218個周期。在32MHz時鐘頻率下,執(zhí)行時間大約7μs,僅相當(dāng)于62.5 μs時鐘節(jié)拍的11%。這說明,即使使用短至62.5μs的時鐘節(jié)拍,對XGATE的占用率也并不高。

通過以上測試可看出,由單一CPU運行μC/OS-II,16 kHz的時鐘節(jié)拍導(dǎo)致S12X CPU頻繁地加載中斷服務(wù)子程序,占用超過了50%,嚴(yán)重地影響了任務(wù)的實時運行。故對于單一CPU,一般采用的時鐘節(jié)拍頻率不高于100 Hz,此時計時精度為±10 ms,以避免時鐘節(jié)拍中斷占用大量CPU運行時間。

在用XGATE處理μC/OS-II的時鐘節(jié)拍時,16 kHz的時鐘節(jié)拍并未對S12X CPU的任務(wù)運行產(chǎn)生影響,這個頻率的時鐘節(jié)拍使μC/OS-II的定時精度高于±62.5 μs。利用協(xié)處理器XGATE來處理μC/OS-II的時鐘節(jié)拍,使主CPU的執(zhí)行時間為固定值,因而保證了任務(wù)的實時運行,提升了系統(tǒng)實時性,高頻率的時鐘節(jié)拍也提高了計時精度。

4 結(jié) 論

μC/OS-II中,時鐘節(jié)拍中斷服務(wù)子程序需要遍歷整個任務(wù)控制塊鏈表,不同應(yīng)用中任務(wù)數(shù)目不同,遍歷整個任務(wù)控制塊鏈表所花費的時間就不同。時鐘節(jié)拍中斷所帶來的不確定性是影響μC/OS-II實時性指標(biāo)的唯一因素。采用協(xié)處理器來實現(xiàn)μC/OS-II的時鐘節(jié)拍可以很好地解決這個問題。

如果使用協(xié)處理器來響應(yīng)μC/OS-II的時鐘節(jié)拍中斷,那么μC/OS—II任務(wù)控制塊鏈表的遍歷和延時計數(shù)器減1操作均由協(xié)處理器完成。主CPU只有在需要做任務(wù)調(diào)度時才會進入相應(yīng)的中斷服務(wù)子程序,因此主CPU運行中斷服務(wù)子程序的時間是固定值。由于主CPU的運行時間不會被時鐘節(jié)拍中斷占用,因而可以采用很高頻率的時鐘節(jié)拍來提高μC/OS-II的計時精度。

責(zé)任編輯:gt

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

    關(guān)注

    68

    文章

    19896

    瀏覽量

    235286
  • 單片機
    +關(guān)注

    關(guān)注

    6067

    文章

    44992

    瀏覽量

    650572
  • 嵌入式
    +關(guān)注

    關(guān)注

    5152

    文章

    19675

    瀏覽量

    317642
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    freescale單片機區(qū)別

    最高可到25M,非常好用.rs08是簡化版本的s08內(nèi)核,主要是和microchip的6腳/8腳單片機競爭,很便宜,在4塊人民幣左右。hc12:有hc12hcs12以及
    發(fā)表于 07-07 22:51

    如何利用S12X單片機去實現(xiàn)串口空閑中斷接收呢

    利用飛思卡爾S12X系列單片機雙核功能實現(xiàn)串口空閑中斷接收【詳解】1. 關(guān)于XGATE2. XGATE的工作模式3. 軟件實現(xiàn)3.1
    發(fā)表于 12-10 06:48

    HCS12X系列存儲配置操作指南

    The HCS12X family is the successor to the HCS12family, with many additional features. One new
    發(fā)表于 01-11 17:55 ?37次下載

    ARM處理器單片機性能比較

    ARM處理器單片機性能比較 ARM32位處理器并沒有想象的那樣昂貴,相反的ARM處理器不但便宜而且性能較傳統(tǒng)的51
    發(fā)表于 02-09 17:41 ?98次下載

    如何使用S12X MCU上的外設(shè)協(xié)處理器XGATE

    如何使用S12X MCU 上的外設(shè)協(xié)處理器XGATE XGATE 是一個16 位的精簡指令集內(nèi)核(見圖1-1
    發(fā)表于 04-01 17:46 ?62次下載

    HCS08系列單片機的低功耗特性

    摘要:本文主要介紹了飛思卡爾HCS08系列8位單片機的低功耗特性。丈章對比HC08系列單片機,介紹了HC
    發(fā)表于 09-19 21:07 ?40次下載

    協(xié)處理器提高μC/OS-II的實時性

    協(xié)處理器提高μC/OS-II的實時性 μC/OS-II是一種可移植、可固化、可裁剪及可剝奪型的多任務(wù)實時操作系統(tǒng)(RTOS)。本文提出用雙核單片
    發(fā)表于 03-29 15:10 ?852次閱讀
    用<b class='flag-5'>協(xié)</b><b class='flag-5'>處理器</b><b class='flag-5'>提高</b>μC/OS-II的實時性

    S12XD系列XGATE協(xié)處理器的原理及應(yīng)用

    S12XD系列XGATE協(xié)處理器的原理及應(yīng)用 主要介紹美國Freescale公司開發(fā)的功能強
    發(fā)表于 03-29 15:11 ?1708次閱讀
    S<b class='flag-5'>12</b>XD<b class='flag-5'>系列</b><b class='flag-5'>中</b><b class='flag-5'>XGATE</b><b class='flag-5'>協(xié)</b><b class='flag-5'>處理器</b>的原理及應(yīng)用

    如何在S12X上配置及使用XGATE

    The HCS12X microcontroller family offers many enhancements over the HCS12 family; principal among
    發(fā)表于 04-11 16:55 ?57次下載
    如何在S<b class='flag-5'>12X</b>上配置及使用<b class='flag-5'>XGATE</b>

    利用XGATE進行Manchester譯碼

    the XGATE programmable peripheralon the HCS12X microcontroller family as a Manchesterdecoder for radio frequency (RF) receiver applicat
    發(fā)表于 11-11 11:04 ?28次下載
    利用<b class='flag-5'>XGATE</b>進行Manchester譯碼

    HCS12微控制原理及應(yīng)用_王威

    HCS12微控制原理及應(yīng)用》介紹Freescale Hcs12系列16位微控制的中央處理器
    發(fā)表于 11-30 16:44 ?0次下載
    <b class='flag-5'>HCS12</b>微控制<b class='flag-5'>器</b>原理及應(yīng)用_王威

    飛思卡爾9S12X系列雙核協(xié)處理器XGATE使用方法

    與經(jīng)典的微處理器S12 系列相比,飛思卡爾新一代的16 位微處理器系列S12X(E)的性能有深入
    發(fā)表于 12-22 11:29 ?196次下載
    飛思卡爾9S<b class='flag-5'>12X</b><b class='flag-5'>系列</b>雙核<b class='flag-5'>中</b>的<b class='flag-5'>協(xié)</b><b class='flag-5'>處理器</b><b class='flag-5'>XGATE</b>使用方法

    MC9S12X系列 雙核MCU協(xié)處理器(Xgate) 學(xué)習(xí)筆記

    首先對Xgate的專業(yè)術(shù)語解讀XGATE Request(請求)來自外圍模塊的服務(wù)請求,由S12X_INT模塊指向XGATE(見圖10-1)。 每個
    發(fā)表于 11-06 11:21 ?8次下載
    MC9S<b class='flag-5'>12X</b><b class='flag-5'>系列</b> 雙核MCU<b class='flag-5'>協(xié)</b><b class='flag-5'>處理器</b>(<b class='flag-5'>Xgate</b>) 學(xué)習(xí)筆記

    51單片機——定時器的原理和使用

    周期 完成一條指令所占用的全部周期2. 51單片機有兩組定時器/計數(shù),它們的執(zhí)行不需要cpu的參與,獨立。3.51單片機定時器和計數(shù)
    發(fā)表于 11-10 18:50 ?72次下載
    51<b class='flag-5'>單片機</b>——<b class='flag-5'>定時器</b>的原理和使用

    單片機處理器

    和AMD的處理器就是基于復(fù)雜指令集的。精簡指令集中常見處理器有IBM和ARM兩類。具體單片機處理器舉例:80C51單片機 ——intel (
    發(fā)表于 11-19 12:06 ?10次下載
    <b class='flag-5'>單片機</b>的<b class='flag-5'>處理器</b>