本系統(tǒng)選用的處理器是SAMSUNG公司的一款中高端arm9內核的CPU-S3C2410,其內建有MMU(內存管理單元),主頻可達到203MHz,運行嵌入式Linux2.4系統(tǒng)正好如魚得水,不但保持了嵌入式系統(tǒng)小型化、低功耗、易攜帶的特點,又充分利用了Linux系統(tǒng)的內存、文件、線程管理功能,大大方便了程序的開發(fā)和程序中多任務功能的實現
1 嵌入式Linux系統(tǒng)
Linux本身作為一個桌面系統(tǒng),其最大的特點是操作系統(tǒng)源代碼公開并且遵循GPL協(xié)議,其內核采用模塊化的設計,易于裁減,特別適合嵌入式系統(tǒng)的小型化要求,在嵌入式系統(tǒng)中占據了半壁江山。
2 系統(tǒng)結構
系統(tǒng)一般可分為實時和觸發(fā)模式兩種,可以根據具體的情況設計合適的方式,如果采用實時,將占用較多網絡資源,成本相對較高,采用觸發(fā)模式的運行成本較低,這里采用觸發(fā)模式,系統(tǒng)結構見圖1。
當遇異常情況后,觸發(fā)終端拍攝圖片,同時其內部的嵌入式模塊和CDMA模塊協(xié)同運作,完成Internet的接入(包括撥號、PPP和CTP/IP協(xié)議的處理等),并把拍攝到的圖片數據經打包后發(fā)送給中心主機,或發(fā)送給指定的E-mail地址,中心主機登錄到Internet上后運行服務器端軟件就可以瀏覽由點發(fā)來的圖片。
3 硬件系統(tǒng)設計
要能夠正確運行一個操作系統(tǒng),硬件方面至少應該包括CPU、內存和固態(tài)存儲器、系統(tǒng)內部以及外設接口。
SAMSUNG公司的S3C2410 CPU具有3個UART、1個RTC和觸摸屏接口,還具有I2C、USB Host、USB Device等接口,充分滿足了系統(tǒng)的需要,而且性價比極高,是一個很不錯的選擇。
由于剪裁后的Linux系統(tǒng)所占得存儲空間非常小(只有幾MB),我們選擇Nor Flash作為固體存儲器,型號是E28F128J3A150,容量為16MB,通過16位數據與CPU交換數據,并利用其上端8MB空間(00800000H-00ffffffH)開辟了一個jffs2文件存儲系統(tǒng),存儲系統(tǒng)的配置文件。
64MB的SDRAM為2片K4S561632C,通過32位數據與CPU交換數據。
通過MAX3232C電平轉換芯片和RTL8019網絡芯片轉換成一個RS-232接口和一個以太網接口,用串口線和以太網網線與PC機相連,組成可以交叉編譯的開發(fā)環(huán)境。
通過CPU上集成的USB Host接口直接與USB攝像頭連接,考慮到監(jiān)控與控制模塊接口的要求,選用USB1.1接口的紅外線攝像頭。
通過CPU上集成的UART接口直接與CDMA Modem模塊相連接,選用價格適中的AnyData公司的DTGS-800 CDMA模塊。
4 軟件系統(tǒng)設計
4.1 控制終端程序設計
控制終端軟件的核心是嵌入式Linux操作系統(tǒng),一切功能的實現都基于Linux操作系統(tǒng)完成,Linux本身作為一個桌面系統(tǒng),進入嵌入式操作系統(tǒng)領域時,需要解決的問題主要包括硬件支持、提供二次開發(fā)的環(huán)境以及小型化(裁減內核)等,小型化的目的是在滿足操作系統(tǒng)基本功能和用戶特定需要的情況下,使內核盡可能小,作為一個操作系統(tǒng),Linux內核主要負責程序的管理與調度、內存的管理及對外設的驅動和管理等,由于Linux內核采用模塊化的設計,很多模塊可以獨立地加載或卸載,所以小型化就是對Linux內核重新編譯,在編譯時仔細地選擇嵌入式設備所需要的功能模塊,同時刪除不需要的功能,這里只需要串口驅動、USB攝像頭接口驅動(包含USB Host,USB Core和USB Device)還有撥號網絡應用,還要支持PPP、TCP/IP網絡協(xié)議,其他都可以刪除掉,使系統(tǒng)運行所需要的內核顯著減小至1Mb以內。
具體程序設計包括Bootloader啟動
代碼、設備驅動程序(USB攝像頭接口驅動程序、串口驅動程序)、撥號、PPP及TCP/IP協(xié)議處理,監(jiān)控接收轉發(fā)控制程序等。
a)系統(tǒng)加電后復位。
b)Bootloader初始化CPU、SDRAM、分配地址空間等。
c)Bootloader把Linux內核的壓縮文件解壓到SDRAM中,同時把控制權從Bootloader移交到Linux。Linux的內核有兩種運行方式可供選擇。可以在Flash存儲器上直接運行,也可以加載到內存中運行。Flash存儲器運行方式就是把內核的可執(zhí)行映像燒寫到Flash存儲器上,系統(tǒng)啟動時從Flash存儲器的某個地址開始運行內核,進入SDRAM繼續(xù)運行,這種做法能減少內存需要,實際上很多嵌入式系統(tǒng)都采用這種方法,內存加載方式把內核的壓縮文件存放在Flash存儲器上,系統(tǒng)啟動時自動讀取壓縮文件并在內存中解壓,然后開始執(zhí)行,這種方式相對較復雜,但運行速度更快,我們采用的就是這種方式。
d)開始執(zhí)行SDRAM中的代碼,Linux內核初始化,完成堆棧,中斷的分配等。
e)加載串口驅動模塊和USB攝像頭驅動模塊,完成串口和USB口的初始化。
f)運行PPP撥號程序,通過CDMA網絡與Internet進行連接,在Linux下的PPP包是專門為解決Modem撥號上網問題而編寫的,并且是公開源代碼的,PPP撥號腳本程序主要是通過調用pppd和chat這兩個應用程序,并通過AT指令實現對Modem的操作。
至此,已經建立了從圖像采集到圖像傳輸的完整的嵌入式監(jiān)控系統(tǒng),但是,作為一個嵌入式操作系統(tǒng),他是為某一專門的用途而設計的。運行不同的用戶應用程序,就可以實現用戶要求的不同功能,生動地體現了嵌入式系統(tǒng)的靈活性。
我們運行的用戶程序是一個無限循環(huán)的過程,控制終端在不斷等待拍照請求,通過比較識別認為有請求后,CPU通過USB攝像頭驅動控制攝像頭拍照,同時接收圖片并發(fā)送控制中心,或通過SMTP協(xié)議,發(fā)送到指定的Email地址,完成一次請求。
4.2 控制中心服務器程序設計
服務器端軟件實現的主要功能是接收、保存和重顯由嵌入式終端發(fā)送過來的監(jiān)控圖片,控制中心主機通過撥號、帶寬上網等方式登錄到Internet上,注意必須申請一個靜態(tài)IP地址,使主機每次登錄到Internet所獲得的IP地址(互聯網IP地址)不變,主機登錄Internet后,即可運行服務器端軟件,服務器端程序設計主要包括網絡通信、接收圖片、保存圖片、即時重顯圖片和察看圖片,用戶通過此軟件可以方便地瀏覽由控制終端發(fā)來的圖片。
另一種方案是不設置控制中心服務器,控制終端抓怕到的圖片直接發(fā)送到指定的Email地址,這種方案容易管理,只需定期查收Email,清除Email存儲空間即可,運行成本很低,但可靠性差。
5 結束語
利用無線網絡與IT技術對傳統(tǒng)監(jiān)控領域進行革新,是市場的需要,在這個過程中,嵌入式系統(tǒng)因其體積小、處理能力強、支持網絡服務等功能,無疑扮演了重要角色。