基于ARM芯片LPC2214和μCOS-II的家庭智能終端的設計與實現
2.1 家庭智能終端軟件的總體規劃
本文引用地址:http://www.104case.com/article/272393.htm家庭智能終端軟件部分包括遠程通信模塊、RS-485通信模塊、無線通信模塊、232通信模塊、報警檢測模塊、聯動控制模塊以及電話和語音控制模塊。根據以上劃分,在μCOS-Ⅱ操作系統中定義了遠程通信任務、485通信任務、232通信任務、報警檢測任務、聯動控制任務、電話語音控制任務以及藍牙通信任務。各任務的優先級和堆棧空間分配如表l。

軟件設計采用模塊化設計,保證程序具有良好的可移植性和可重用性,各種軟件模塊分別屬于不同的程序層。如圖3所示,筆者將軟件模塊分為三個程序集合,即軟件的程序層。內層是μCOS-Ⅱ內核,承擔任務管理、內存管理和時間管理功能。應用程序層主要完成數據處理和請求內核服務的功能。中間件層移植和編寫各部分通信協議和底層接口芯片的驅動程序。圖3中最外圍層為硬件接口層,它不是實際的軟件層,并不做軟件編寫工作。智能終端的軟件部分非常復雜,由于篇幅所限,本文重點介紹操作系統的移植和遠程監控及控制。

2.2 μCOS-Ⅱ操作系統在LPC2214上的移植
將μCOS-Ⅱ操作系統移植到LPC2214上需要0S_CPU.H、OS_CPEL_C.C、OS_CPU_A.ASM三個文件。OS_CPU.H主要定義不依賴于編譯的數據類型、指定堆棧的生長方式以及定義底層接口。
為了具有良好的可移植性,μCOS-Ⅱ并不使用C語言中的short、im、long等數據類型,而是以整數數據類型代替。LPC2214有四種堆棧形式:滿遞減、滿遞增、空遞減、空遞增,但是ADS1.2編譯器只支持滿遞減堆棧,即選擇由上向下增長方式。
定義底層接口是為了在C語言中調用匯編代碼高效地完成某些系統服務功能。本文采用軟中斷指令實現底層接口。底層接口代碼如下:

OS_CPU_C.C文件首先根據LPC2214體系結構和ADSl.2編譯器定義任務的堆棧結構。在定義堆棧結構的函數:OS_STK OSTaskStkInit(void(*task)void(*pd).void*plat,OS_STK**ptos,INT16U opt)中定義了一個全局變量OsEnterSum,主要用于對關中斷次數進行計數,這樣可以實現開中斷和關中斷的嵌套。此文件也包括實現軟中斷的詳細代碼。

此外,本文件還包括運行多任務時系統啟動前調用最高優先級任務的函數void0SStartHighRdy(void)以及幾個供用戶編寫的Hook函數。
OS_CPU_A.ASM包括四個簡單的匯編語言函數:調用啟動前最高優先級任務函數OSStartHigh Rdy(),從低優先級任務切換到高優先級任務的函數OSCtxSw()、OS-IntCtxSw(),時鐘節拍中斷處理函數OSTickISR()。任務切換函數在任務切換之前要利用堆棧保存被切換任務的有用狀態。LPC2214具有17個寄存器,但并不是所有的寄存器都需要進入堆棧。為了節省堆棧空問和減少切換時的時間開銷,建立了一個任務切換時的堆棧結構,如圖4所示。

2.3 遠程監控和遠程控制
遠程監控與遠程控制的軟件設計采用客戶端一服務器方式。TCP/IP協議的傳輸層有兩個數據傳輸協議:傳輸控制協議TCP和用戶數據報傳輸協議UDP,二者各有特點。UDP協議是提供最少服務和費用的協議,它不基于連接來傳輸數據,因此UDP的傳送數據是不可靠的。TCP協議是基于連接的雙向傳輸的可靠數據傳輸協議,但是TCP協議的使用費用較高。在智能終端的設計中,充分考慮了數據傳輸的便利性和可靠性,并且鑒于ARM系統能夠提供足夠的資源,根據數據的不同要求,采用了不同的傳輸層協議。在軟件設計中使用Socket API函數來編寫UDP和TCP通信任務。TCP和UDP通信時,Socket API的應用流程如圖5所示。

家庭智能終端是家庭內外信息交換和家電控制的平臺。本文采用Philipes公司的ARM7芯片LPC2214和μCOS-Ⅱ操作系統設計了硬件和軟件,克服了8位單片機處理速度慢、接口資源和存儲資源不足的限制。利用RS-485和藍牙網絡作為家庭內部網絡,局域網和電話網絡作為外部網絡,保證了大數據量傳輸的穩定性和可靠性,并且兼顧了傳統的電話網絡遠程控制方式。實踐表明。系統具有良好的實時性和穩定性,在高端家庭智能終端領域具有巨大的發展潛力。
tcp/ip相關文章:tcp/ip是什么
藍牙技術相關文章:藍牙技術原理
評論