日韩欧美自拍在线观看-欧美精品在线看片一区二区-高清性视频一区二区播放-欧美日韩女优制服另类-国产精品久久久久久av蜜臀-成人在线黄色av网站-肥臀熟妇一区二区三区-亚洲视频在线播放老色-在线成人激情自拍视频

基于μC/OS-II的總線式數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)

出處:電子技術(shù)應(yīng)用 發(fā)布于:2011-09-02 18:39:15

  μC/OS-II 介紹

  μC /OS-II是一個(gè)完整的、可移植、可固化、可裁剪的占先式實(shí)時(shí)多任務(wù)內(nèi)核。μC/OS-II絕大部分的代碼是用ANSI的C語言編寫的,包含一小部分匯編代碼,使之可供不同架構(gòu)的微處理器使用。至今,從8位到64位,μC/OS-II已在超過40種不同架構(gòu)上的微處理器上運(yùn)行。μC/OS-II已經(jīng)在世界范圍內(nèi)得到廣泛應(yīng)用,包括很多領(lǐng)域, 如手機(jī)、路由器、集線器、不間斷電源、飛行器、醫(yī)療設(shè)備及工業(yè)控制上。實(shí)際上,μC/OS-II已經(jīng)通過了非常嚴(yán)格的測試,并且得到了美國航空管 理局(Federal Aviation Administration)的,可以用在飛行器上。這說明μC/OS-II是穩(wěn)定可靠的,可用于與人性命攸關(guān)的安全緊要(safety critical)系統(tǒng)。除此以外,μC/OS-II 的鮮明特點(diǎn)就是源碼公開,便于移植和維護(hù)。

  μC/OS-II 是一種基于優(yōu)先級的搶占式多任務(wù)實(shí)時(shí)操作系統(tǒng),包含了實(shí)時(shí)內(nèi)核、任務(wù)管理、時(shí)間管理、任務(wù)間通信同步(信號量,郵箱,消息 隊(duì)列)和內(nèi)存管理等功能。它可以使各個(gè)任務(wù)獨(dú)立工作,互不干涉,很容易實(shí)現(xiàn)準(zhǔn)時(shí)而且無誤執(zhí)行,使實(shí)時(shí)應(yīng)用程序的設(shè)計(jì)和擴(kuò)展變得容易,使應(yīng)用程序的設(shè)計(jì)過程大為減化。 

  1 總線式數(shù)據(jù)采集系統(tǒng)的組成與功能

  μC/OS-II采用總線巡檢方式系統(tǒng),硬件以模塊化結(jié)構(gòu),實(shí)現(xiàn)32/64/128路模擬或數(shù)字量的集中監(jiān)測,整機(jī)采用微機(jī)處理技術(shù)和通信控制技術(shù),并采用嵌入式內(nèi)核,智能化程度高,工作性能穩(wěn)定,測量高,通用性強(qiáng)。

  1.1 系統(tǒng)組成

    該系統(tǒng)的硬件組成如圖1所示。

  現(xiàn)場監(jiān)測通道狀態(tài)以總線方式,通過總線處理單元傳送到中央控制單元進(jìn)行數(shù)據(jù)采集與處理,其中MCU采用具有10位A/D轉(zhuǎn)換器的80C196KB。

  1.2 系統(tǒng)功能

    μC/OS-II可以對各通道的工作參數(shù)、狀態(tài)進(jìn)行即時(shí)修改設(shè)定,并可以通過面板LED實(shí)時(shí)顯示32/64/128路通道的工作狀態(tài),同時(shí)各通道的實(shí)時(shí)參數(shù)通過LCD進(jìn)行逐屏顯示。對發(fā)生報(bào)警的信道可以通過打印處理單元進(jìn)行打印輸出、聲光報(bào)警及顯示。μC/OS-II采用總線巡檢方式,對各信道工作狀態(tài)進(jìn)行遠(yuǎn)程數(shù)據(jù)采集并進(jìn)行集中數(shù)據(jù)處理。為進(jìn)一步滿足智能化管理的需要,具有和計(jì)算機(jī)通信的功能,可以實(shí)現(xiàn)監(jiān)測數(shù)據(jù)的共享。同時(shí),也可以通過計(jì)算機(jī)對各信道的工作狀態(tài)進(jìn)行設(shè)置,進(jìn)一步增強(qiáng)了該系統(tǒng)的智能化管理能力。

  2 μC/OS-II在系統(tǒng)中的應(yīng)用

  μC/OS-II是一個(gè)源碼開放的實(shí)時(shí)內(nèi)核,且又有許多成功的先例可供參考,可針對不同的MCU/MPU,通過條件編譯裁減其內(nèi)核的大小,以滿足系統(tǒng)要求。μC/OS-II是占先式內(nèi)核,總是運(yùn)行就緒條件下優(yōu)先級的任務(wù)。可以管理64個(gè)任務(wù),其中保留8個(gè)給系統(tǒng),故應(yīng)用程序多可以有56個(gè)任務(wù)。鑒于許多成功先例和系統(tǒng)成本,采用了80C196KB作為系統(tǒng)的MCU。通過實(shí)驗(yàn),基本滿足了系統(tǒng)所要求的實(shí)時(shí)性。

  2.1 開發(fā)實(shí)時(shí)內(nèi)核的流程

    開發(fā)實(shí)時(shí)內(nèi)核的流程如圖2所示。

  2.2 內(nèi)核的移植

    內(nèi)核的移植也就是使實(shí)時(shí)內(nèi)核能夠在某個(gè)微處理器或微控制器上正常運(yùn)行。移植工作包括以下幾個(gè)內(nèi)容:

    (1)在OS_CPU.H中用#define定義三個(gè)宏,聲明C96中能夠識別的數(shù)據(jù)類型和堆棧的增長方向。

    (2)在OS_CPU.C中用C語言重新編寫以下幾個(gè)函數(shù):OSTaskStkInit、OSStartHighRdy、OSTaskCreateHook、OSTaskSwHook、OSTaskDelHook、OSTaskStatHook、OSTimeTickHook。

    (3)在OS_CPU.ASM中編寫幾個(gè)匯編語言函數(shù)LoadCtx()、OSCtxSw()、OSIntCtxSw()、OSTickISR()。

  2.3 實(shí)時(shí)內(nèi)核在應(yīng)用中應(yīng)注意的問題

    一個(gè)實(shí)時(shí)系統(tǒng)的軟件由操作系統(tǒng)和應(yīng)用程序構(gòu)成。應(yīng)用程序與操作系統(tǒng)的接口通過系統(tǒng)調(diào)用來實(shí)現(xiàn)。用80C196KB作為系統(tǒng)的MCU,只能用內(nèi)部RAM作為TCB和所有系統(tǒng)存儲器以及各個(gè)任務(wù)的工作和數(shù)據(jù)單元。因此一定要注意以下幾點(diǎn):

    (1)為各個(gè)任務(wù)分配各自的堆棧區(qū),該堆棧區(qū)既作為任務(wù)的工作單元,也作為任務(wù)控制塊的保護(hù)單元。

    (2)系統(tǒng)的任務(wù)控制塊只存放各任務(wù)的堆棧指針,而任務(wù)的狀態(tài)均存放于任務(wù)堆棧中。在一個(gè)任務(wù)退出運(yùn)行時(shí),通過中斷把它的狀態(tài)進(jìn)棧,然后把它的堆棧指針保存于系統(tǒng)的TCB中;再根據(jù)優(yōu)先級取出優(yōu)先級的已就緒任務(wù)的堆棧指針SP映象值送入SP中;執(zhí)行中斷返回指令轉(zhuǎn)去執(zhí)行新任務(wù)。

    (3)各任務(wù)的數(shù)據(jù)和工作單元盡量用堆棧實(shí)現(xiàn),這樣可以允許各任務(wù)使用同一個(gè)子程序。使用堆棧實(shí)現(xiàn)參數(shù)傳遞并作為工作單元,而不使用地址的RAM,可實(shí)現(xiàn)可重入子程序。該子程序既可為各個(gè)任務(wù)所調(diào)用,也可以實(shí)現(xiàn)遞歸調(diào)用。

  2.4 應(yīng)用μC/OS-II實(shí)時(shí)內(nèi)核的主要部分

    (1)任務(wù)的分配

    實(shí)時(shí)系統(tǒng)中的任務(wù)是個(gè)動態(tài)的概念。μC/OS-II相對于其它產(chǎn)品不同點(diǎn)在于允許多個(gè)任務(wù)并行。根據(jù)該系統(tǒng)的性能指標(biāo)和技術(shù)要求,將系統(tǒng)劃分成八個(gè)任務(wù)。

    (2)任務(wù)的調(diào)度

    μC/OS-II的任務(wù)調(diào)度是按優(yōu)先級進(jìn)行的,根據(jù)各任務(wù)的實(shí)時(shí)性要求及重要程度,分別置它們的優(yōu)先級為4、9、8、7、6、11、10、5。其中0、1、2、3、OS_LOWEST_PRIO-3、OS_LOWEST_PRIO-2、OS_LOWEST_PRIO-1、OS_LOWEST_PRIO這幾個(gè)優(yōu)先級保留以被系統(tǒng)使用。優(yōu)先級號越低,任務(wù)的優(yōu)先級越高。這樣程序之間的通信可以通過按鍵中斷置標(biāo)志來實(shí)現(xiàn),其中按鍵中斷的優(yōu)先級。當(dāng)其它任務(wù)運(yùn)行時(shí),按鍵中斷將使得系統(tǒng)服務(wù)轉(zhuǎn)向運(yùn)行按鍵中斷處理子程序ISR。當(dāng)中斷處理子程序運(yùn)行完后,轉(zhuǎn)向判斷就緒狀態(tài)任務(wù)的優(yōu)先級別。如果發(fā)現(xiàn)有比中斷前任務(wù)優(yōu)先級更高的任務(wù),則轉(zhuǎn)向執(zhí)行該任務(wù)。先判斷其運(yùn)行標(biāo)志,如果是‘非’,再重復(fù)上述過程。如果在執(zhí)行完ISR后發(fā)現(xiàn)沒有比中斷前任務(wù)優(yōu)先級更高的,則轉(zhuǎn)向中斷前的子程序繼續(xù)運(yùn)行。該系統(tǒng)的軟件處理沒有采用優(yōu)先級轉(zhuǎn)換的方法,而是采用狀態(tài)置位判斷的方法,這樣可以減少程序的復(fù)雜性。

    (3)任務(wù)間的通信

    任務(wù)間通信簡便的方法是使用共享數(shù)據(jù)結(jié)構(gòu)。雖然共享數(shù)據(jù)區(qū)法簡化了任務(wù)間的信息交換,但是必須保證每個(gè)任務(wù)在處理共享數(shù)據(jù)時(shí)的排它性,以避免競爭和數(shù)據(jù)的破壞。通常與共享資源打交道時(shí),使之滿足互斥條件一般的方法有以下幾種:

    ·關(guān)中斷;

    ·使用測試并置位;

    ·禁止任務(wù)切換;

    ·利用信號量。

    在本系統(tǒng)中采用了前兩種。關(guān)中斷是一種簡單快捷的方式,也是在中斷服務(wù)子程序中處理共享數(shù)據(jù)結(jié)構(gòu)的方法。要注意的是:關(guān)中斷的時(shí)間要盡量短,以免影響操作系統(tǒng)的中斷處理。其應(yīng)用模式如下:

    void Function(void)

    {

        OS_ENTER_CRITICAL();

        ……        /*在此處理共享數(shù)據(jù)*/

        OS_EXIT_CRITICAL();

    }

    測試并置位方式需要有一個(gè)全局變量,約定好先測試該變量;如果是約定的數(shù)值,則執(zhí)行該任務(wù),否則不執(zhí)行該任務(wù)。這種方法稱測試并置位,或TAS。其應(yīng)用程序如下:

    Disable interrupts      /*關(guān)中斷*/

    If  ('Access Variable' is  0){ /*若資源不可用,標(biāo)志為0*/

         Set  variable  to  1; /*置資源不可用,標(biāo)志為1*/

         Reenable  interrupts; /*重開中斷*/

         Access   the   resource; /*處理該資源*/

         Disable   interrupts;   /*關(guān)中斷*/

         Set   the  'Access  Variable'  back  to  0;/*清資源不可使用,標(biāo)志為0*/

         Reenable  interrupts;   /*重新開中斷*/

    }else   {                   /*否則*/

         Reenable interrupts;    /*開中斷*/

                               /*資源不可使用,以后再試*/

    }

    (4)時(shí)鐘節(jié)拍

    時(shí)鐘節(jié)拍是特定的周期性中斷,根據(jù)本系統(tǒng)的性能指標(biāo),取1毫秒。時(shí)鐘的節(jié)拍式中斷使得內(nèi)核可以將任務(wù)延時(shí)若干個(gè)整數(shù)時(shí)鐘節(jié)拍,以及當(dāng)任務(wù)等待事件發(fā)生時(shí),提供等待超時(shí)的依據(jù)。另外,系統(tǒng)信息的定時(shí)顯示需要系統(tǒng)每隔一定的時(shí)鐘節(jié)拍顯示。

    (5)存儲空間的分配

    為了減少操作系統(tǒng)的體積,只應(yīng)用操作系統(tǒng)的任務(wù)調(diào)度、任務(wù)切換、信號量處理、延時(shí)及超時(shí)服務(wù)幾部分。這樣可使該操作系統(tǒng)的大小減小到3~5KB,再加上應(yīng)用程序可達(dá)50KB左右。

    因?yàn)槊總€(gè)任務(wù)都是獨(dú)立運(yùn)行的,每個(gè)任務(wù)都具有自己的棧空間。這樣可以根據(jù)任務(wù)本身的需求來分配其RAM空間。

  3 系統(tǒng)運(yùn)行的實(shí)時(shí)性分析

    在該系統(tǒng)中應(yīng)用μC/OS-II實(shí)時(shí)內(nèi)核,一是增強(qiáng)了系統(tǒng)運(yùn)行的穩(wěn)定性,更重要的是滿足了系統(tǒng)測量所需的實(shí)時(shí)性要求。系統(tǒng)采用12MHz晶振,一條指令的周期是1微秒。以下時(shí)間的統(tǒng)計(jì)是將C語言編譯為匯編語言后,根據(jù)其指令的多少而計(jì)算出來的。經(jīng)統(tǒng)計(jì)如下:

    ·中斷管理:共需3毫秒;

    ·內(nèi)存管理:共需800微秒;

    ·信號量管理:共約4.5毫秒; 

    ·任務(wù)管理:共需8毫秒;

    ·時(shí)鐘管理:共需約20毫秒;

    ·雜項(xiàng):約需1毫秒。

    上述時(shí)間均是運(yùn)行時(shí)間的大概統(tǒng)計(jì),也就是均考慮有任務(wù)切換情況下的時(shí)間統(tǒng)計(jì)結(jié)果。在整個(gè)內(nèi)核的應(yīng)用上對一些函數(shù)進(jìn)行了裁減,沒有用的服務(wù)在預(yù)編譯時(shí)屏蔽掉了,因此未計(jì)入統(tǒng)計(jì)時(shí)間。

    用戶定義函數(shù):按鍵中斷處理15毫秒,LCD顯示一屏30毫秒,串行通信10毫秒,打印及聲光報(bào)警400毫秒,信道巡檢A/D采樣與數(shù)據(jù)處理20毫秒,系統(tǒng)信息顯示10毫秒,系統(tǒng)工作參數(shù)測量150毫秒,電源的切換與充電50毫秒。通過采用實(shí)時(shí)內(nèi)核,在很大程度上保證了實(shí)時(shí)性要求。

  μC/OS-II相對于其它產(chǎn)品具有明顯的優(yōu)勢,相信它將會在未來大展宏圖。


  

參考文獻(xiàn):

[1]. 80C196KB datasheet http://www.hbjingang.com/datasheet/80C196KB_103574.html.


關(guān)鍵詞:總線

版權(quán)與免責(zé)聲明

凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://www.hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。

如涉及作品內(nèi)容、版權(quán)等問題,請?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

廣告
OEM清單文件: OEM清單文件
*公司名:
*聯(lián)系人:
*手機(jī)號碼:
QQ:
有效期:

掃碼下載APP,
一鍵連接廣大的電子世界。

在線人工客服

買家服務(wù):
賣家服務(wù):
技術(shù)客服:

0571-85317607

網(wǎng)站技術(shù)支持

13606545031

客服在線時(shí)間周一至周五
9:00-17:30

關(guān)注官方微信號,
第一時(shí)間獲取資訊。

建議反饋

聯(lián)系人:

聯(lián)系方式:

按住滑塊,拖拽到最右邊
>>
感謝您向阿庫提出的寶貴意見,您的參與是維庫提升服務(wù)的動力!意見一經(jīng)采納,將有感恩紅包奉上哦!