基于ARM芯片LPC2214和μCOS-II的家庭智能終端的設(shè)計(jì)與實(shí)現(xiàn)
2.1 家庭智能終端軟件的總體規(guī)劃
本文引用地址:http://butianyuan.cn/article/272393.htm家庭智能終端軟件部分包括遠(yuǎn)程通信模塊、RS-485通信模塊、無(wú)線通信模塊、232通信模塊、報(bào)警檢測(cè)模塊、聯(lián)動(dòng)控制模塊以及電話和語(yǔ)音控制模塊。根據(jù)以上劃分,在μCOS-Ⅱ操作系統(tǒng)中定義了遠(yuǎn)程通信任務(wù)、485通信任務(wù)、232通信任務(wù)、報(bào)警檢測(cè)任務(wù)、聯(lián)動(dòng)控制任務(wù)、電話語(yǔ)音控制任務(wù)以及藍(lán)牙通信任務(wù)。各任務(wù)的優(yōu)先級(jí)和堆棧空間分配如表l。
軟件設(shè)計(jì)采用模塊化設(shè)計(jì),保證程序具有良好的可移植性和可重用性,各種軟件模塊分別屬于不同的程序?qū)?。如圖3所示,筆者將軟件模塊分為三個(gè)程序集合,即軟件的程序?qū)?。?nèi)層是μCOS-Ⅱ內(nèi)核,承擔(dān)任務(wù)管理、內(nèi)存管理和時(shí)間管理功能。應(yīng)用程序?qū)又饕瓿蓴?shù)據(jù)處理和請(qǐng)求內(nèi)核服務(wù)的功能。中間件層移植和編寫各部分通信協(xié)議和底層接口芯片的驅(qū)動(dòng)程序。圖3中最外圍層為硬件接口層,它不是實(shí)際的軟件層,并不做軟件編寫工作。智能終端的軟件部分非常復(fù)雜,由于篇幅所限,本文重點(diǎn)介紹操作系統(tǒng)的移植和遠(yuǎn)程監(jiān)控及控制。
2.2 μCOS-Ⅱ操作系統(tǒng)在LPC2214上的移植
將μCOS-Ⅱ操作系統(tǒng)移植到LPC2214上需要0S_CPU.H、OS_CPEL_C.C、OS_CPU_A.ASM三個(gè)文件。OS_CPU.H主要定義不依賴于編譯的數(shù)據(jù)類型、指定堆棧的生長(zhǎng)方式以及定義底層接口。
為了具有良好的可移植性,μCOS-Ⅱ并不使用C語(yǔ)言中的short、im、long等數(shù)據(jù)類型,而是以整數(shù)數(shù)據(jù)類型代替。LPC2214有四種堆棧形式:滿遞減、滿遞增、空遞減、空遞增,但是ADS1.2編譯器只支持滿遞減堆棧,即選擇由上向下增長(zhǎng)方式。
定義底層接口是為了在C語(yǔ)言中調(diào)用匯編代碼高效地完成某些系統(tǒng)服務(wù)功能。本文采用軟中斷指令實(shí)現(xiàn)底層接口。底層接口代碼如下:
OS_CPU_C.C文件首先根據(jù)LPC2214體系結(jié)構(gòu)和ADSl.2編譯器定義任務(wù)的堆棧結(jié)構(gòu)。在定義堆棧結(jié)構(gòu)的函數(shù):OS_STK OSTaskStkInit(void(*task)void(*pd).void*plat,OS_STK**ptos,INT16U opt)中定義了一個(gè)全局變量OsEnterSum,主要用于對(duì)關(guān)中斷次數(shù)進(jìn)行計(jì)數(shù),這樣可以實(shí)現(xiàn)開中斷和關(guān)中斷的嵌套。此文件也包括實(shí)現(xiàn)軟中斷的詳細(xì)代碼。
此外,本文件還包括運(yùn)行多任務(wù)時(shí)系統(tǒng)啟動(dòng)前調(diào)用最高優(yōu)先級(jí)任務(wù)的函數(shù)void0SStartHighRdy(void)以及幾個(gè)供用戶編寫的Hook函數(shù)。
OS_CPU_A.ASM包括四個(gè)簡(jiǎn)單的匯編語(yǔ)言函數(shù):調(diào)用啟動(dòng)前最高優(yōu)先級(jí)任務(wù)函數(shù)OSStartHigh Rdy(),從低優(yōu)先級(jí)任務(wù)切換到高優(yōu)先級(jí)任務(wù)的函數(shù)OSCtxSw()、OS-IntCtxSw(),時(shí)鐘節(jié)拍中斷處理函數(shù)OSTickISR()。任務(wù)切換函數(shù)在任務(wù)切換之前要利用堆棧保存被切換任務(wù)的有用狀態(tài)。LPC2214具有17個(gè)寄存器,但并不是所有的寄存器都需要進(jìn)入堆棧。為了節(jié)省堆棧空問(wèn)和減少切換時(shí)的時(shí)間開銷,建立了一個(gè)任務(wù)切換時(shí)的堆棧結(jié)構(gòu),如圖4所示。
2.3 遠(yuǎn)程監(jiān)控和遠(yuǎn)程控制
遠(yuǎn)程監(jiān)控與遠(yuǎn)程控制的軟件設(shè)計(jì)采用客戶端一服務(wù)器方式。TCP/IP協(xié)議的傳輸層有兩個(gè)數(shù)據(jù)傳輸協(xié)議:傳輸控制協(xié)議TCP和用戶數(shù)據(jù)報(bào)傳輸協(xié)議UDP,二者各有特點(diǎn)。UDP協(xié)議是提供最少服務(wù)和費(fèi)用的協(xié)議,它不基于連接來(lái)傳輸數(shù)據(jù),因此UDP的傳送數(shù)據(jù)是不可靠的。TCP協(xié)議是基于連接的雙向傳輸?shù)目煽繑?shù)據(jù)傳輸協(xié)議,但是TCP協(xié)議的使用費(fèi)用較高。在智能終端的設(shè)計(jì)中,充分考慮了數(shù)據(jù)傳輸?shù)谋憷院涂煽啃?,并且鑒于ARM系統(tǒng)能夠提供足夠的資源,根據(jù)數(shù)據(jù)的不同要求,采用了不同的傳輸層協(xié)議。在軟件設(shè)計(jì)中使用Socket API函數(shù)來(lái)編寫UDP和TCP通信任務(wù)。TCP和UDP通信時(shí),Socket API的應(yīng)用流程如圖5所示。
家庭智能終端是家庭內(nèi)外信息交換和家電控制的平臺(tái)。本文采用Philipes公司的ARM7芯片LPC2214和μCOS-Ⅱ操作系統(tǒng)設(shè)計(jì)了硬件和軟件,克服了8位單片機(jī)處理速度慢、接口資源和存儲(chǔ)資源不足的限制。利用RS-485和藍(lán)牙網(wǎng)絡(luò)作為家庭內(nèi)部網(wǎng)絡(luò),局域網(wǎng)和電話網(wǎng)絡(luò)作為外部網(wǎng)絡(luò),保證了大數(shù)據(jù)量傳輸?shù)姆€(wěn)定性和可靠性,并且兼顧了傳統(tǒng)的電話網(wǎng)絡(luò)遠(yuǎn)程控制方式。實(shí)踐表明。系統(tǒng)具有良好的實(shí)時(shí)性和穩(wěn)定性,在高端家庭智能終端領(lǐng)域具有巨大的發(fā)展?jié)摿Α?/p>
tcp/ip相關(guān)文章:tcp/ip是什么
藍(lán)牙技術(shù)相關(guān)文章:藍(lán)牙技術(shù)原理
評(píng)論