基于 ARM 內核的嵌入式系統在遠程監控報警系統中的設計實現與應用。核心部分主要包 括 ARM 嵌入式平臺設計及 µC-OS 嵌入式實時操作系統移植;人機交互界面 µCGUI 的設計與實現;遠程通 訊及自動報警等;系統的設計還考慮到了擴展性和通用性以及與其他監控設備無縫連接等問題。
關鍵詞: ARM;µC/OS-II; µCGUI ;遠程監控
1 引言
監控系統現已成為現代化生產、生活中不可缺少的重要組成部分。目前,監控系列產品 種類繁多,大部分廣泛應用于交通、醫院、銀行、家居、學校等安防領域。
隨著嵌入式系統的出現,尤其是基于 ARM 內核芯片的嵌入式系統的出現,使得監控系統的應用領域更為廣泛。本文設計的遠程監控報警系統除了作為安防功能外,還可以應用于 以下領域:通訊領域:遠程通訊、視頻會議和視頻點播、證券、遠程教育等。醫療領域:病 房監護、遠程診斷等。工業領域:遠程設備診斷、維護、維修,遠程生產監控等。家用領域:
家用電器遠程維護;電、氣、火等重大事故自動報警等。
2 系統設計
2.1、系統組成 本文設計的遠程監控系統主要由中心控制器、數據終端、傳感器模塊、通訊模塊、接口模塊等幾部分組成。系統組成圖(如圖 1) 。
2.2、中心控制器 系統核心,負責數據采集判斷處理。為了提高系統工作效率,這里使用的是三星公司的 S3C2410 芯片作為處理器。S3C2410 芯片是一款高性價比的 ARM 芯片,非常適合作手機、
PDA 等手持設備。主要特性包括: ARM920T 內核,最高工作頻率 203MHz, LCD 控制器: 可直接驅動真彩液晶屏,最高支持 2048×1024 真彩液晶屏, 2 個 USB Host 端口 ,1 個 USB Device 端口,支持 Nand flash 啟動模式,SD 卡接口, UART、IIC、SPI、IIS 等多種類 型串行接口, 4 通道 DMA。
本文的監控系統的 CPU 核心部分使用的是標準的 SO-DIMM200 金手指接口,便于后期 維護和升級。如果該監控系統的使用環境較為苛刻,可以將 CPU 替換為 S3C2440 芯片。 S3C2440 完全兼容 S3C2410 全部特性(注意:芯片引腳不完全兼容)。與 S3C2410 芯片相比, S3C2440 的性能更為優越:最高工作頻率可達 500MHz,內部集成 CMOS 攝像頭接口,但價 格較昂貴。
圖 1 監控系統組成框圖
2.3、數據終端 數據終端的主要功能是對監控數據進行分析、處理,及時將數據匯報給監控人員。同時, 監控人員可以根據現場情況,使用數據終端對監控的設備進行遠程控制。數據終端最大優勢 就是安全、可靠、便于攜帶。 一般情況下為了節約成本,可以將手機、PDA 等移動通訊設 備作為數據終端使用。但是如果作為對高危環境或精密儀器的監控系統,數據終端需要專業 定制。這里使用的是中心控制器的作為數據終端,即中心控制器既作為數據采集發送中心, 也可數據接收處理中心使用。
2.4、通訊模塊
通訊模塊主要負責遠程數據通訊。帶有 RS232/485、GPRS、CDMA 等一種或多種通訊 方式。需要根據現場環境和用戶需要進行定制。通訊模塊與控制器通過接口總線連接,連接 方式為 TTL/RS232/RS485 等
2.5、傳感器模塊 傳感器模塊的主要功能是感知外部環境,對外部環境進行實時監測。由人體紅外傳感器、 振動傳感器、超聲波傳感器、可燃氣體傳感器、溫度傳感器、濕度傳感器等一種或多種傳感 器組成。可根據現場監測環境不同進行定制。
2.6、接口模塊
接口模塊主要作為系統擴展功能使用,將控制器的 A/D 轉換、I2C、SPI 等多種接口進行 外部擴展。接口模塊沒有特定的功能,但可以根據需要與其他設備連接,例如可以與工業儀 器儀表或設備連接,實時對儀器或設備進行監控。
接口模塊雖然不是監控系統的主要部分,但是對于整個系統來說卻是不可缺少。因為本文的監控系統主要考慮到了系統的可擴展性和與其它系統無縫連接。通過接口模塊可以很方 便的對監控系統進行升級,并且可以實現與其他系統或設備的無縫連接。這也是本系統區優 于其他監控系統的主要功能。
3 軟件設計
3.1、工作軟件
系統的軟件設計較為復雜,這里只給出了整個工作軟件流程(如圖 2)。
圖 2 軟件流程圖
3.2、操作系統移植
S3C2410 芯片支持多種嵌入式操作系統,如 WINCE、uCLinux 等。但考慮到監控系統 的實時性要求,這里使用的是 µC/OS-II 嵌入式實時操作系統。µC/OS-II 是一個源碼公開、可 移植、可固化、可裁剪、占先式的實時多任務操作系統。其絕大部分源碼是用 ANSI C 寫的。 整個嵌入式系統分為兩大層:硬件層和軟件層。這里主要研究軟件層的架構。軟件層主 要分為四個部分:實時操作系統內核,與處理器相關部分,與應用程序相關部分,用戶的應 用程序。
移植 µC/OS-II 系統需要修改的文件有:應用程序相關文件: OS_CFG.H INCLUDE.H; 處理器相關文件: OS_CPU.H、 OS_CPU_A.ASM、OS_CPU_C.C 。
3.2.1 與處理器相關的代碼 這是移植中最關鍵的部分。內核將應用系統和底層硬件有機的結合成一個實時系統,要 使同一個內核能適用于不同的硬件體系,就需要在內核和硬件之間有一個中間層,這就是與 處理器相關的代碼。處理器不同。這部分代碼也不同。我們在移植時需要自己移植這部分代 碼。
a)OS_CPU.H
包括了用#define 定義的與處理器相關的常量,宏和類型定義,有系統數據類型定義,棧 增長方向定義,關中斷和開中斷定義,系統軟中斷的定義等等。
b)OS_CPU_A.ASM
這部分需要對處理器的寄存器進行操作,所以必須用匯編語言來編寫。包括四個子函數: OSStartHighRdy(),OSCtxSw(),OSIntCtxSw(),OSTickISR()。OSStartHighRdy()在多任務 系統啟動函數 OSStart()中調用。完成的功能是:設置系統運行標志位 OSRunning = TRUE; 將就緒表中最高優先級任務的棧指針 Load 到 SP 中,并強制中斷返回。這樣就緒的最高優先 級任務就如同從中斷里返回到運行態一樣,使得整個系統得以運轉。OSCtxSw()在任務級任 務切換函數中調用的。任務級切換是通過 SWI 或者 TRAP 人為制造的中斷來實現的。ISR 的向 量地址必須指向 OSCtxSw()。這一中斷完成的功能:保存任務的環境變量(主要是寄存器的值, 通過入棧來實現),將當前 SP 存入任務 TCB 中,載入就緒最高優先級任務的 SP,恢復就緒最高 優先級任務的環境變量,中斷返回。這樣就完成了任務級的切換。OSIntCtxSw()在退出中斷
服務函數 OSIntExit()中調用,實現中斷級任務切換.由于是在中斷里調用,所以處理器的寄 存器入棧工作已經做完,就不用作這部分工作了。具體完成的任務;調整棧指針(因為調用 函數會使任務棧結構與系統任務切換時堆棧標準結構不一致),保存當前任務 SP,載入就緒 最高優先級任務的 SP,恢復就緒最高優先級任務的環境變量,中斷返回。這樣就完成了中斷 級任務切換。OSTickISR()系統時鐘節拍中斷服務函數,這是一個周期性中斷,為內核提供
時鐘節拍。頻率越高系統負荷越重。其周期的大小決定了內核所能給應用系統提供的最小時 間間隔服務。一般只限于 ms 級(跟 MCU 有關),對于要求更加苛刻的任務需要用戶自己建立中 斷來解決.該函數具體內容:保存寄存器(如果硬件自動完成就可以省略),調 OSIntEnter(), 調用 OSTimeTick(),調用 OSIntExit(),恢復寄存器,中斷返回。
c) OS_CPU_C.C
該文件中共定義了 6 個函數,但是最重要的是 OSTaskStkInit().其他都是對系統內核的擴展 時用的. OSTaskStkInit()是在用戶建立任務時系統內部自己調用的,對用戶任務的堆棧 進行初始化。使建立好的進入就緒態任務的堆棧與系統發生中斷并且將環境變量保存完畢時 的棧結構一致。這樣就可以用中斷返回指令使就緒的任務運行起來。
3.2.2 與應用相關的代碼
這部分包括兩個文件:OS_CFG.H, INCLUDES.H。 用戶根據自己的應用系統來定制合適 的內核服務功能。 OS_CFG.H 來配置內核,用戶根據需要對內核進行定制,留下需要的部 分,去掉不需要的部分,設置系統的基本情況。比如系統可提供的最大任務數量,是否定制 郵箱服務,是否需要系統提供任務掛起功能,是否提供任務優先級動態改變功能等等。 INCLUDES.H 系統頭文件,整個實時系統程序所需要的文件,包括了內核和用戶的頭文件。
3.3、用戶圖形接口
雖然 µC/OS-II 操作系統具有很高的實時性,但不像 WINCE、uCLinux 等操作系統那樣 有良好的圖形界面支持。所以,在使用液晶和觸摸屏的情況下需要移植用戶圖形接口程序。
這里使用的是 µC/GUI。µC/GUI 是一個軟件模塊集合,通過該模塊可以在我們的嵌入式產品 中加入用戶圖形接口(GUI)。µC/GUI 具有很高的執行效率,并且與處理器和 LCD 控制器相 獨立。該模塊可以工作在單任務或者多任務環境,可以支持不同大小的顯示方式。
通過 µC/GUI 我們可以很方便的在液晶屏繪制圖形和界面。如果需要多種字體支持,必 須自己將相應的字體字庫加入到 µC/GUI 中。為了避免出現亂碼,盡量使用 GB2312 國標字 庫。
3.4、關于字庫的兼容性問題
我們國內通常使用的漢字字庫是 GB 碼,但國際上使用的是 UNICODE 碼 ,所以如果數
據終端使用的是手機、PDA 等移動通信設備,那么在數據發送前必須進行字碼轉換,即 GB 碼 轉換為 UNICODE 碼或者 UNICODE 碼轉換為 GB 碼。
由于 GB 碼與 UNICODE 碼在排列組合上沒有任何規律,所以通常字碼轉換的方法就是 查表法。
4 、結束語
基于 ARM9 嵌入式系統的遠程監控系統與以往的監控系統不同,高性能的處理器芯片大 大提高了系統的性能。使監控系統能夠工作在比較惡劣的環境中。并且在設計上充分考慮到 了系統的可擴展性和兼容性問題,實現了本系統與其他系統的無縫連接。以滿足不同工作環 境的需要。
作者創新觀點:本文設計的遠程監控系統應用范圍更廣,更靈活、方便。通過各個功能模塊 的不同組合,可以十分方便快速的應用于各個領系域,真正實現智能化、自動化且具有較高 的性價比。