- 相關(guān)推薦
嵌入式家庭網(wǎng)關(guān)中SPI接口的軟件模擬
摘要:介紹嵌入式家庭網(wǎng)關(guān)的基本框架和信息流程,及其CPU S3C4510B的體系結構和內部資源;說(shuō)明在所選用uClinux操作系統下,添加SPI接口驅動(dòng)程序的詳細過(guò)程。引言
隨著(zhù)信息社會(huì )的發(fā)展,網(wǎng)絡(luò )和信息家電越來(lái)越地出現在人們的生活中。人們普通要求將家庭內的所有家用電器與Internet連接起來(lái),實(shí)現主人在遠方用計算機或電話(huà)通過(guò)Internet對象家庭電設施進(jìn)行監控。家用電器制造商可以通過(guò)網(wǎng)絡(luò )對其生產(chǎn)的設備進(jìn)行售后跟蹤服務(wù);家用電器是故障時(shí)能自動(dòng)按預設的郵件地址來(lái)發(fā)送電子郵件進(jìn)行報警。這就需要有一個(gè)“家庭網(wǎng)絡(luò )中央控制器”。它對外與Internet連接,對內通過(guò)家庭內部無(wú)線(xiàn)局域網(wǎng)將所有家用電器連接成一體,從而確保信息家電安全地接入Internet。當前,多數研究單位推出的家庭網(wǎng)絡(luò )智能控制器,均以PC或準PC機作為硬件平臺,由于價(jià)位高而均未被市場(chǎng)容納。
嵌入式Internet是近幾年發(fā)展起來(lái)的一項新興技術(shù)。以32位ARM嵌入式微處理器為硬件平臺,通過(guò)移植嵌入式操作系統uClinux內核,開(kāi)發(fā)相應的硬件驅動(dòng)、微型GUI和上層應用軟件,最終實(shí)現產(chǎn)品化的嵌入式家庭網(wǎng)絡(luò )中央控制器。該系統具有體積小、功耗低、價(jià)格便宜的特點(diǎn)。
1 系統的硬件組成
本系統以高性能、低價(jià)格的S3C4510B為主CPU。它是Samsung公司推出的基于A(yíng)RM7TDMI核,精簡(jiǎn)指令系統的32位高速微處理器。工作電壓為3.3V,內核ARM7TDMI的工作電壓為2.5V,大大降低了芯片的功耗。S3C4510B片上資源:一個(gè)總線(xiàn)仲裁器可以根據總線(xiàn)仲裁優(yōu)先級在片上功能模塊和外圍設備之間進(jìn)行系統總線(xiàn)控制權分配;8KB指令、數據復用Cache,每128bit為1頁(yè),并可全部或部分設置為SRAM;1個(gè)主I2C總線(xiàn)控制器,可作為主發(fā)送器或主接收器,能連接多個(gè)從設備;2個(gè)通用DMA;18個(gè)通用I/O口; 2路4線(xiàn)UART口,其中一個(gè)支持IrDA 1.0,可用于紅外通信;6組ROM/SRAM/Flash用于管理外部存儲器。另外,可擴展4組動(dòng)態(tài)存儲器和4 BANK擴展I/O設備;2通道帶有DMA傳送方式的HDLC口;1個(gè)10M/100M自適應以太網(wǎng)控制器。
圖1為家庭網(wǎng)關(guān)的硬件框圖,以S3C4510B為基本核心系統,外圍擴展一系列功能模塊。有4×4鍵盤(pán)及以屏幕LCD顯示構成良好的人機界面,用于手動(dòng)本地參數查詢(xún)和設定。家庭網(wǎng)關(guān)基本系統以SPI接口與PTR3000無(wú)線(xiàn)收發(fā)模塊相連,同時(shí)家庭內部家電控制器也通過(guò)SPI接口擴展PTR3000無(wú)線(xiàn)模塊。這樣,家庭網(wǎng)關(guān)的無(wú)線(xiàn)模塊以輪詢(xún)的方式與家庭內各家電控制器上無(wú)線(xiàn)模塊進(jìn)行通信,從而組成家庭內部無(wú)線(xiàn)子網(wǎng)。家庭網(wǎng)關(guān)基本系統只需對SPI口進(jìn)行操作即可實(shí)現與家電通信。實(shí)現了家電以家庭網(wǎng)關(guān)為中介與Internet在物理層互聯(lián)的三個(gè)通路:PC通過(guò)LAN經(jīng)由Internet連接到基本系統的以太網(wǎng)口、PC通過(guò)Modem經(jīng)由公司電話(huà)網(wǎng)與嵌入式Modem相連再到UART1、電話(huà)機經(jīng)過(guò)公用電話(huà)網(wǎng)經(jīng)語(yǔ)音卡連到UART1。
2 uClinux嵌入式操作系統
操作系統選用uClinux。它是一個(gè)完全符合GNU(GNU’s Not Unix,自由軟件基金會(huì ))/GPL(General Pulic License,通用公共許可證)公約的完全開(kāi)放代碼項目,是標準Linux的一個(gè)分支,現在由Lineo公司支持維護。它專(zhuān)門(mén)針對沒(méi)有MMU的CPU,并且專(zhuān)為嵌入式系統做了許多小型化的工作。
UClinux經(jīng)過(guò)對標準Linux內核的改動(dòng),形成了一個(gè)高度優(yōu)化的、代碼緊湊的嵌入式Linux。雖然它的體積很小,但uClinux仍然保留了Linux的大多數的優(yōu)點(diǎn),穩定、良好的移植性、優(yōu)秀的網(wǎng)絡(luò )功能、完備的對各種文件系統的支持以及標準豐富的API。它的主要特片如下:
①在linux-2.4.x/driver/char/Makefile添加1行:obj_$(CONFIG_SPI) =SPI.0。在24行obj-y =mem.o tty_io.o后加PI.o。
②在linux-2.4.x/driver/char/Config.in,添加1行:bool'SPI'CONFIG_SPI便于在make me nuconfig時(shí)選擇。
③在linux-2.4.x/driver/char/mem.c在文件頭部添加:#ifdef CONFIG_SPI /*編譯時(shí)選擇該項就執行SPI的初始化函數*/
extern void SPI_init(void);
#endif
在chr_dev_init()函數添加:#ifdef CONFIT_SPI
SPI_init();
#endif
④修改vendor/Samsung/4510b/Makefile,建立起設備節點(diǎn)。
在12~35行間,DEVICE部分添加內容SPI,c,29,0。SPI是設備名,c代表字符設備,29是SPI的主設備號,0是SPI的次設備號。⑤make menuconfig時(shí)選中SPI編譯,然后直載。
啟動(dòng)后,會(huì )看到/proc/devinces中字符設備多了一項SPI 29。
S3C4510B有18個(gè)通用I/O口,其中高10位可設置為其它功能口。在該系統中,設置P8為中斷接收線(xiàn),P11模擬主機輸出線(xiàn)MOSI,P12模擬主機時(shí)鐘SCK,P13模擬主機輸入線(xiàn)MISO。P8口用于接收PTR3000的發(fā)送請求信號。當P8口接收到請求信號時(shí),系統進(jìn)入中斷處理。中斷處理進(jìn)程喚醒睡在睡眠隊列SPI_WAIT上的讀進(jìn)程,讀進(jìn)程由P12口輸出SCK信號并由P13口讀入數據。值得說(shuō)明的是,SPI不帶中斷線(xiàn),在此用P8口做中斷接收線(xiàn)是為了避免操作系統在沒(méi)有進(jìn)行SPI操作時(shí)不斷向SCK線(xiàn)發(fā)時(shí)鐘信號。因此,MSP430F147IPM必須另外與S3C4510B連一個(gè)引腳在請求發(fā)送數據時(shí)發(fā)出中斷接收線(xiàn)是為了避免操作系統在沒(méi)有進(jìn)行SPI操作時(shí)不斷向SCK線(xiàn)發(fā)時(shí)鐘信號。因此,MSP430F147IPM必須另外與S3C4510B連一個(gè)引腳在請求發(fā)送數據時(shí)發(fā)出中斷請求信號。實(shí)現過(guò)程如下:
Static wait_queue_head_wait; //休眠隊列
【嵌入式家庭網(wǎng)關(guān)中SPI接口的軟件模擬】相關(guān)文章:
基于串行外設接口(SPI)的CAN總線(xiàn)隔離擴展設計03-18
嵌入式系統中的PS/2接口設計11-22
嵌入式軟件的覆蓋測試03-18
嵌入式WEB傳感器的網(wǎng)絡(luò )化接口設計03-18
基于SIP的嵌入式終端軟件系統03-07
基于復雜度的嵌入式軟件功耗模型03-18