基于μc/OS-II的多傳感器測(cè)控系統(tǒng)研究
3 軟件設(shè)計(jì)
本文引用地址:http://m.butianyuan.cn/article/266073.htm3.1 系統(tǒng)任務(wù)分配
為了充分發(fā)揮操作系統(tǒng)在任務(wù)調(diào)度、任務(wù)管理、任務(wù)通信、時(shí)間管理和內(nèi)存管理等方面的優(yōu)勢(shì),首先必須根據(jù)需要實(shí)現(xiàn)的功能,合理的劃分任務(wù)和分配任務(wù)的優(yōu)先級(jí)。按溫濕度測(cè)控系統(tǒng)所要求實(shí)現(xiàn)的功能,將整個(gè)系統(tǒng)劃分為并行存在的任務(wù)層和中斷程序。μC/OS-II嵌入式實(shí)時(shí)操作系統(tǒng)中的任務(wù)狀態(tài)轉(zhuǎn)換如圖2所示。
圖2 μC/OS-II任務(wù)狀態(tài)轉(zhuǎn)換示意圖
多任務(wù)系統(tǒng)在運(yùn)行時(shí)每個(gè)任務(wù)好像獨(dú)立占用CPU一樣,因此系統(tǒng)必須為每個(gè)任務(wù)開辟一塊內(nèi)存空間作為該任務(wù)的任務(wù)堆棧。該堆棧的作用是保存任務(wù)被切換前時(shí)CPU各寄存器的值以及系統(tǒng)堆棧的數(shù)據(jù)。在進(jìn)行任務(wù)切換時(shí)需要完成工作的主要步驟如下:①將當(dāng)前任務(wù)CPU所有的寄存器壓棧;②將CPU系統(tǒng)堆棧的數(shù)據(jù)全部拷貝到當(dāng)前任務(wù)的任務(wù)堆棧中;③ 得到下一個(gè)處于運(yùn)行態(tài)優(yōu)先級(jí)最高的任務(wù)的任務(wù)堆棧的指針;④ 恢復(fù)下一個(gè)任務(wù)的CPU寄存器的值;⑤ 恢復(fù)下一個(gè)任務(wù)的系統(tǒng)堆棧中的數(shù)據(jù);⑥ 通過中斷返回指令或函數(shù)返回指令,間接修改PC寄存器的值來(lái)進(jìn)行任務(wù)切換。在為μC/OS-II編寫任務(wù)切換代碼時(shí)需要注意的是:μC/OS-II在每次發(fā)生中斷后都會(huì)產(chǎn)生任務(wù)調(diào)度,但在中斷結(jié)束后進(jìn)行的任務(wù)切換,不能調(diào)用普通任務(wù)切換函數(shù),這是因?yàn)樵谥袛噙^程中往往伴隨將CPU的狀態(tài)寄存器壓棧操作。
任務(wù)切換方法:凌陽(yáng)SPACE061A單片機(jī)有R1-R5 五個(gè)通用寄存器,還有1個(gè)SR(CPU狀態(tài)寄存器),再加上PC,總共有7個(gè)CPU內(nèi)部寄存器在任務(wù)切換時(shí)需要保存。μC/OS-II系統(tǒng)調(diào)用OSCtxSw( )來(lái)實(shí)現(xiàn)任務(wù)的切換。系統(tǒng)中并行存在的幾個(gè)任務(wù)按優(yōu)先級(jí)從高到低依次是:系統(tǒng)監(jiān)視任務(wù)、數(shù)據(jù)采集任務(wù)、數(shù)據(jù)處理任務(wù)、數(shù)據(jù)輸出任務(wù)、顯示任務(wù)。在實(shí)際系統(tǒng)中,每個(gè)任務(wù)都是無(wú)限循環(huán)的,分別實(shí)現(xiàn)某一特定的功能,由μC/OS-II內(nèi)核來(lái)進(jìn)行調(diào)度。系統(tǒng)監(jiān)視任務(wù)主要完成系統(tǒng)可靠性的監(jiān)管;數(shù)據(jù)采集任務(wù)主要完成溫度濕度氧濃度的檢測(cè)和A/D轉(zhuǎn)換;數(shù)據(jù)處理任務(wù)主要完成采集數(shù)據(jù)和設(shè)定數(shù)據(jù)的比較判定;數(shù)據(jù)輸出任務(wù)主要完成數(shù)據(jù)輸出給LCD、通過RS232傳輸給主機(jī)、以及輸出控制信號(hào)給繼電器電路,完成通風(fēng)、加熱、加濕等功能;顯示任務(wù)主要完成溫度濕度氧濃度參數(shù)的顯示。系統(tǒng)主程序任務(wù)流程圖如圖3所示。
圖3 系統(tǒng)主程序任務(wù)流程圖
3.2 μc/OS-II的移植
μC/OS-II是一種專門為微控制器設(shè)計(jì)的搶占式實(shí)時(shí)多任務(wù)操作系統(tǒng),它以源代碼的形式給出。其內(nèi)核主要提供進(jìn)程管理、時(shí)間管理、內(nèi)存管理等服務(wù)。系統(tǒng)最多支持56個(gè)任務(wù),每個(gè)任務(wù)均有一個(gè)獨(dú)有的優(yōu)先級(jí)。由于其內(nèi)核為搶先式,所以總是處于運(yùn)行態(tài)最高優(yōu)先級(jí)的任務(wù)占用CPU。系統(tǒng)提供了豐富的API函數(shù),實(shí)現(xiàn)進(jìn)程之間的通信以及進(jìn)程狀態(tài)的轉(zhuǎn)化。
μC/OS-II的軟件體系結(jié)構(gòu)如圖4所示。從圖4中可以看到,如果要使用μC/OS-II, 必須為其編寫OS_CPU.H、OS_CPU_C.C、OS_CPU_A.ASM三個(gè)文件。這三個(gè)文件是與芯片的硬件特性有關(guān)的,它們主要提供任務(wù)切換與系統(tǒng)時(shí)鐘的功能。其它文件用C寫成,它們?yōu)橄到y(tǒng)提供任務(wù)管理、任務(wù)之間通信、時(shí)間管理以及內(nèi)存管理等功能。
圖4 μC/OS-II 軟件體系結(jié)構(gòu)示意圖
μC/OS-II系統(tǒng)時(shí)鐘:以凌陽(yáng)SPCE061A單片機(jī)的TMB2時(shí)基信號(hào)作為系統(tǒng)時(shí)鐘,每經(jīng)歷一個(gè)時(shí)鐘節(jié)拍的時(shí)間將產(chǎn)生一次中斷,在中斷服務(wù)子程序中會(huì)調(diào)用OSTickISR()函數(shù)。
移植工作的主要內(nèi)容:用#define 設(shè)置一個(gè)常量值(OS_CPU.H);聲明10個(gè)數(shù)據(jù)類型(OS_CPU.H); 用#define 聲明3個(gè)宏(OS_CPU.H);用C語(yǔ)言編寫6個(gè)簡(jiǎn)單的函數(shù)(OS_CPU_C.C);編寫4個(gè)匯編語(yǔ)言函數(shù)(OS_CPU_A.ASM)。
4 結(jié)論
μC/OS-II RTOS是當(dāng)今嵌入式應(yīng)用的熱點(diǎn)之一,應(yīng)用RTOS提高了測(cè)控系統(tǒng)系統(tǒng)的可靠性、實(shí)時(shí)性,降低了研發(fā)周期。本文基于μC/OS-II構(gòu)建的測(cè)控系統(tǒng)應(yīng)用在漯河農(nóng)業(yè)局2000萬(wàn)公斤紅薯儲(chǔ)藏保鮮工程項(xiàng)目中,完全達(dá)到了設(shè)計(jì)的控制指標(biāo):溫度10-14℃±0.5℃ ,濕度80—95%RH±2%,氧濃度≮4.5%。降低了紅薯因?yàn)闇囟葷穸妊鯘舛炔徽T斐傻淖冑|(zhì),完好率100%,與不使用本系統(tǒng)的倉(cāng)儲(chǔ)對(duì)比減少損耗25%,約500萬(wàn)公斤,直接經(jīng)濟(jì)效益500多萬(wàn)元,同時(shí)也取得了較好的社會(huì)效益。另外,該系統(tǒng)具有較好的可擴(kuò)展性,很容易擴(kuò)展到其它對(duì)溫度、濕度或者氧濃度有一定要求的領(lǐng)域。經(jīng)試驗(yàn),溫度測(cè)定范圍可以達(dá)到-20-85℃±0.5℃;濕度20—98%RH±2%;氧濃度≮1.5%。所以,該測(cè)控系統(tǒng)具有較廣的應(yīng)用前景。
本文創(chuàng)新點(diǎn):采用高性能SPCE061A單片機(jī)和高精度溫度傳感器、濕度傳感器和氧濃度傳感器,通過移植μC/OS-II多任務(wù)實(shí)時(shí)操作系統(tǒng),構(gòu)建了高精度、高可靠性的多傳感器嵌入式測(cè)控系統(tǒng)。實(shí)際工程應(yīng)用表明,系統(tǒng)擴(kuò)展性好、測(cè)控精度高、性能穩(wěn)定。
傳感器相關(guān)文章:傳感器工作原理
風(fēng)速傳感器相關(guān)文章:風(fēng)速傳感器原理 電容傳感器相關(guān)文章:電容傳感器原理 土壤濕度傳感器相關(guān)文章:土壤濕度傳感器原理
評(píng)論