隨著網路技術和資訊家電的飛速發展,越來越多的家庭要求建立家用網路。家庭網關是整個家用網路的核心,它主要實現 Internet接入、遠端控制,以及串連家庭內部異構子網的功能。基於PC機方案的家庭網關不僅成本較高,而且要求電腦一直處於開機並可進行通訊的狀態,還不能在電腦上運行幹擾通訊任務的軟體和硬體。所以,為適應普通使用者,家庭網關應設計為基於廉價的非PC機裝置。但是,若採用8位、16位單片機,由於速度慢且資源有限,實現TCP/IP協議比較困難,所以也不太理想。
因此本文以ARM核的32位嵌入式微處理器作為硬體平台,結合無線通訊技術,通過移植嵌入式作業系統Clinux,並在其上開發相應的驅動程式、應用程式和嵌入式Web伺服器,實現了一個方便、實用的家庭網關。
系統的硬體設計
系統結構及工作原理
家庭網關的系統結構1所示,它以三星公司的32位RISC處理器S3C44B0X為核心,通過外擴儲存空間(Flash / SDRAM)、藍芽模組、液晶顯示屏、小鍵盤、乙太網路介面模組、電話語音控制模組和紅外收發模組等來構建硬體平台,並可實現多種控制方式。
圖1 家庭網關係統結構圖
1) 在本地用鍵盤及顯示器進行控制:系統設有16按鍵和一塊128×32點陣的液晶顯示器,便於使用者在本地進行狀態的設定和查詢,如資料查詢、電器控制等。
2) 在本地的紅外遙控:通過具有自學習功能的紅外遙控模組,能實現室內家電的紅外遙控。
3) 遠端電話語音控制:這是一種基於公用電話交換網(PSTN)的電話遠端控制,用於電話的指令控制,如遠端控制家電、電話警示等。
4) 基於Internet的遠端控制:採用瀏覽器端/伺服器端結構(B/S結構),使用者可直接用Windows內建的IE瀏覽器作為用戶端程式,以達到隨時隨地進行遠端控制的目的。
無線通訊技術是實現家用網路最理想的技術,它可以省去在家庭內部重新布線的麻煩。在本家庭網關的設計中,採用藍芽模組作為無線通訊模組與底層的各功能模組相互連訊。
硬體電路組成
本系統的硬體設計主要包括以S3C44B0X嵌入式微處理器為核心所搭建的基本硬體平台,以及藍芽通訊、電話語音控制和紅外遙控等模組的硬體設計。
以S3C44B0X為核心的基本硬體平台基本系統的硬體框圖2所示,各部分的功能與介面電路分析如下。
圖2 家庭網關基本硬體平台框圖
ARM微處理器S3C44B0X:S3C44B0X是三星公司生產的ARM7核心的SoC,通過在ARM7TDMI內容基礎上擴充一系列完整的通用外圍器件,令其很適合手持式裝置和普通嵌入式的應用。
Flash儲存空間介面電路:Flash晶片用來儲存家庭網關中的嵌入式作業系統、家用網路伺服器、CGI網關應用程式以及支援各種服務所需的檔案系統。在系統中採用一片HY29LV160構建16位的Flash儲存空間系統,其儲存容量為2MB。系統上電或複位後從此擷取指令並開始執行,因此將Flash 儲存空間配置到ROM/SRAM/FLASH Bank0。
SDRAM介面電路:嵌入式作業系統的存在需要有一定量的動態RAM,解壓縮後的作業系統將從Flash搬移至SDRAM,駐留記憶體;同時,使用者堆棧、運行資料也都會放在SDRAM中。S3C44B0X晶片提供的8K緩衝遠遠不能滿足要求。考慮到實際應用的需求,設計中選擇了三星的K4S281632D,它的資料寬度是16 位,由4 個Bank 組成,儲存容量為16 MB。S3C44B0X的Bank6和Bank7 支援SDRAM,因此可以方便串連。在匯流排寬度控制寄存器BWSCON 中設定Bank6 的資料寬度為16 位,在Bank6
控制寄存器BANKCON6中設定MT = 0x3, Trcd= 0x0,SCAN = 0x01,在儲存容量寄存器BANKSIZE中設定BK76MAP = 0x110 即可。
10/100M乙太網路介面電路: S3C44B0X內部已包含了乙太網路MAC控制,但並未提供物理層介面,因此,需外接一片物理層晶片以提供乙太網路的接入通道。在本設計中選用的是 RTL8201。由於S3C44B0X片內已有帶MII介面的MAC控制器,而RTL8201也提供了MII介面,各種訊號的定義也很明確,因此 RTL8201與S3C44B0X的串連比較簡單,在串連時只需將兩塊晶片的相應引腳互連即可。值得注意的是,使用CMOS工藝的RTL8201不能直接與RJ45介面相連,由於電平訊號的不同以及網路衝擊訊號的存在,兩者之間需要隔離及電平訊號轉換的元件,本設計中選用了網路變壓器HR61H58L。
串列介面電路:為完成和家庭內部網路的藍芽通訊模組、紅外發射與接收模組以及電話語音控制模組的通訊,家庭網關需要有非同步串列通訊介面,由於 S3C44B0X只有兩個非同步串口,因此需要對串口進行擴充。本設計中選用一片ST16C554 晶片進行串口擴充。由於S3C44B0X系統的LVTTL電路所定義的高、低電平訊號與RS-232-C標準所定義的高、低電平訊號不同,兩者間要進行通訊必須經過訊號電平的轉換。在這裡採用MAX202將串口資料訊號轉換成TTL電平,再通過ST16C554輸出插斷要求。4個串口的插斷要求進行或運算,產生IRQ訊號INTREQ,經CPLD再與CPU的終端控制器相連。
IIC介面電路:S3C44B0X內含一個IIC匯流排主控器,可方便地與各種帶有IIC介面的器件相連。在該系統中,外擴一片AT24C01作為IIC儲存空間。AT24C01提供128位元組的EEPROM儲存空間,可用於存放少量在系統掉電時需要儲存的資料,比如家庭網關的參數設定和使用者身分識別驗證碼等。
LCD顯示模組:該模組可採用夏普公司生產的LM057QC1T01,它是圖形點陣256色STN液晶模組,解析度為320×240。由於S3C44B0X和LM057QC1T01都具有很強的通用性,因此易於串連,但需要在控制器和LCD介面之間加裝能實現電壓偏轉功能的電路,來實現輸出LCD顯示所需的27V偏轉電壓。
鍵盤介面電路:用8個通用I/O口組成4×4鍵盤。
S3C44B0X所需的其他外圍電路:JTAG介面電路(用於JTAG調試)、複位電路和電源電路。
其他功能模組藍芽模組:在本方案中,藍芽硬體晶片採用愛立信公司的ROK 101008 模組。家庭網關採用在Clinux作業系統下安裝BlueZ以配合藍芽模組,並基於L2CAP層建立相關協議的方式進行開發。
電話語音控制模組:採用雙音頻撥號晶片DTMF8870、語音合成晶片ISD1420、鈴流檢測晶片電路以及89C51等來組成電話語音控制模組。
紅外遙控模組:系統中增加了紅外接收模組和紅外發射模組。紅外接收模組選用BA5302,紅外訊號從其頂部輸入,經過放大、整形、解調後,被轉換成 TTL電平的數字訊號;紅外發射模組將剛才學習到的紅外原碼進行調製並發送出去,在這裡採用軟體編碼的方法產生調製訊號,因此電路很簡單。
系統的軟體平台
建立Clinux開發環境基於Clinux作業系統的應用開發環境一般是由目標系統硬體開發板(S3C44B0X的開發板)和宿主PC機所構成。目標板所用到的作業系統的核心編譯、應用程式的開發和調試需要通過宿主PC機來完成。兩者之間一般通過串口、並口或乙太網路介面來建立串連關係。首先,要在宿主機上安裝標準Linux作業系統,之後就可以建立交叉開發環境。從網上下載工具鏈,並將交叉編譯器安裝到宿主機上。還要根據家庭網關的需要重新設定、編譯核心,進行Clinux移植。成功後可看到Clinux-Samsung/images目錄下有兩個核心檔案:image.ram和
image.rom。將image.rom燒寫入ROM/SRAM/FLASH Bank0對應的Flash儲存空間中,當系統複位或上電時,核心會自解壓到SDRAM,並開始運行。這樣一個嵌入式應用開發平台就搭建成功了。
硬體驅動和應用程式的開發也要在交叉編譯環境中進行,先在PC機上開發,然後移植到目標機上進行調試並最終固化到目標機上。本設計中需要開發的硬體驅動有:乙太網路卡控制器、串口、LCD驅動、藍芽模組、小鍵盤的驅動程式等。為Linux核心編寫驅動並不像其他動作系統那麼複雜,只需為相應的裝置編寫幾個基本函數並向VFS註冊即可,一般都是在一個現成的驅動程式基礎上針對特殊的硬體裝置作相應的改動。在嵌入式作業系統的基礎上還要開發微型GUI,編寫動態網頁和CGI程式來實現嵌入式WEB技術、安全認證、及無線通訊協議等。例如:基於Internet的遠端控制是通過瀏覽家庭網關中的Web
Server的動態網頁實現的,遠端控制程式需要從使用者訪問資訊中解出有用的控制命令資訊,然後按家庭控制網的內部協議組成命令幀,實現控制的關鍵是 CGI程式的編製,其流程3所示。
圖3 Internet 遠端控制程式流圖
結語
本文討論了一個基於ARM微處理器S3C44B0X及Clinux的無線家庭網關的軟硬體設計。該家庭網關控制方式多樣,並且能隨時隨地通過瀏覽網頁實現對家電的遠端控制。該家庭網關成本較低,易於升級,便於推廣應用。
轉自:http://blog.csdn.net/java211/article/details/3561544