采用Realtek公司的以太網(wǎng)接口芯片RTL80l9AS和Philips公司的USB主從控制芯片ISP1161A1,為用戶提供網(wǎng)絡(luò)接入和數(shù)據(jù)存儲(chǔ)功能。
ISPll6lAl是Philips公司生產(chǎn)的一種單片通用串行總線(USB)控制器,遵循USBv2.0規(guī)范,為USB HC提供了2個(gè)下行端口,為USB DC提供1個(gè)上行端口。每一個(gè)下行端口都有自己的過流(OC)檢測(cè)輸入端和電源轉(zhuǎn)換控制輸出端;上行端口有自己的VBUS檢測(cè)輸入端。內(nèi)建4 KB的FIFO緩存RAM供HC使用,2 462字節(jié)的FIFO緩存RAM供DC使用。在ISP116lAl作為USB主機(jī)時(shí),根據(jù)硬件資源的分配,其數(shù)據(jù)地址是0x015000000,命令地址為0x01500002。HC的編程接口時(shí)序最小值不超過300ns,在VG2接14.318 MHz晶振、ISP1161外接12 MHz晶振時(shí),可以滿足VG2和ISP1161協(xié)調(diào)工作的時(shí)序要求。
RTL8019AS網(wǎng)絡(luò)接口芯片具有16位數(shù)據(jù)總線和24位地址總線,具有曼徹斯特編碼、沖突檢測(cè)和重發(fā)的功能;可以與很少的外圍電路一起完成數(shù)據(jù)的發(fā)送和接收,全雙工,收發(fā)速率可同時(shí)達(dá)到10Mbps;內(nèi)置16KB的SRAM用于數(shù)據(jù)收發(fā)的緩沖,支持跳線和免跳線,即插即用的上作模式。圖4是數(shù)據(jù)傳輸及數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)圖。RTL8019AS工作在跳線方式下,IOS3~I(xiàn)OSO為低電平,設(shè)置其I/O基地址為Ox300,RTL8019AS只對(duì)地址為0x300~0x31F的信號(hào)產(chǎn)生響應(yīng);IRQS2~I(xiàn)RQS0為低電平,INT0被選中作為中斷請(qǐng)求的輸出,PLl、PLO為低電平.設(shè)置具有自動(dòng)檢測(cè)接口類型的功能。
3 軟件設(shè)計(jì)
本文采用μC/OS-II(v2.51)嵌入式操作系統(tǒng)作為家居控制器的軟件平臺(tái)。μC/OS-II是一個(gè)占先式多任務(wù)操作系統(tǒng),可固化、可裁剪,易于移植,具有良好的可靠性和穩(wěn)定性;支持多達(dá)64個(gè)任務(wù),以及信號(hào)量、消息郵箱、消息隊(duì)列等多種進(jìn)程問通信機(jī)制。由于沒有TCP/IP和USB協(xié)議棧,因此移植了1wIP和USB HOST協(xié)議來實(shí)現(xiàn)網(wǎng)絡(luò)通信和USR數(shù)據(jù)傳輸。
3.1 μC/OS-II在VG2上的移植
采用Cygwin作為編譯平臺(tái)的EISC STUDIO集成開發(fā)環(huán)境,用戶可以在C程序中插入匯編語言(可擴(kuò)展指令集),在移植過程中修改了OS_CPU.H和OS_CPU_C.C,4個(gè)與處理器相關(guān)的函數(shù)在OS_CPU_C.C中實(shí)現(xiàn)。堆棧的增長(zhǎng)方向?yàn)橄蛳拢肟趯挾葹?2位。初始化后數(shù)據(jù)結(jié)構(gòu)依次為opt,ptos,pdata,0x0,task,0x3000,0xe,0x7,0x6,Ox5,0x4,0x3,0x2,0xl,0x0。OSStartHighRdy()在OS_CPU_C.C中的實(shí)現(xiàn)實(shí)例如下(限于篇幅,其他函數(shù)不再一一列出):
3.2 1wIP協(xié)議在μC/OS-II上的移植
1wIP是一個(gè)比較完備的嵌入式TCP/IP協(xié)議棧,有與操作系統(tǒng)接口的封裝層。1wIP的移植主要包括4個(gè)方面的工作:
◇處理與編譯器和硬件相關(guān)的include文件;
◇實(shí)現(xiàn)與操作系統(tǒng)相關(guān)的結(jié)構(gòu)和函數(shù);
◇實(shí)現(xiàn)lib_arch中的庫函數(shù);
◇實(shí)現(xiàn)RTL8019As驅(qū)動(dòng)程序。
RTL8019AS與Ne2k芯片兼容,可參照ethernetif.c網(wǎng)絡(luò)驅(qū)動(dòng)模板實(shí)現(xiàn)網(wǎng)絡(luò)設(shè)備的驅(qū)動(dòng)。
3.3 USB主機(jī)系統(tǒng)的實(shí)現(xiàn)
USB主機(jī)系統(tǒng)的實(shí)現(xiàn)主要是核心驅(qū)動(dòng)程序(USBD)和主控制器驅(qū)動(dòng)程序(HCD)的實(shí)現(xiàn)。HCD是協(xié)議棧最底層對(duì)主機(jī)控制器硬件和數(shù)據(jù)傳輸?shù)某橄螅蛏蠟閁SBD提供一個(gè)軟件接口(HCDI),向下管理和檢測(cè)主機(jī)控制器硬件的行為。USBD是USB體系的中樞,用于檢測(cè)和管理USB系統(tǒng)的所有活動(dòng),向上接收USB設(shè)備驅(qū)動(dòng)程序和用戶程序的各種命令和數(shù)據(jù),向下把處理好的各種數(shù)據(jù)發(fā)送給HCD,并最終與設(shè)備進(jìn)行通信。主機(jī)要支持設(shè)備類,就要建立特定的設(shè)備類協(xié)議,本設(shè)計(jì)實(shí)現(xiàn)了USB Mass Storage類,移植了ZLG/FS文件系統(tǒng)。
3.4 智能家居控制器的軟件設(shè)計(jì)
軟件設(shè)計(jì)采用模塊化、與內(nèi)核相分離的原則,可保證程序具有良好的可移植性和可重用性,主要有網(wǎng)絡(luò)模塊、USB模塊、市話控制模塊、顯示模塊、鍵盤模塊和抄表模塊等。每個(gè)模塊都有相應(yīng)的功能.其中一些模塊還包含一些子模塊,各個(gè)模塊相互獨(dú)立又相互聯(lián)系,它們的有機(jī)組合為用戶提供相應(yīng)的功能。按照軟件所屬層次可劃分為3層:內(nèi)層是實(shí)時(shí)操作系統(tǒng)內(nèi)核;中間件層主要是芯片的驅(qū)動(dòng)和通信協(xié)議的移植;外層是應(yīng)用層,為用戶提供具體的功能應(yīng)用。系統(tǒng)復(fù)位后,主程序首先對(duì)進(jìn)行系統(tǒng)進(jìn)行初始化,獲取系統(tǒng)狀態(tài)信息。VG2自帶看門狗設(shè)置,在程序正常執(zhí)行過程中每隔一段時(shí)間觸發(fā)看門狗電路,進(jìn)行喂狗。
4 小結(jié)
本文采用ADChips公司的多媒體處理器VG2作為主控芯片,網(wǎng)絡(luò)的接入和USB技術(shù)的應(yīng)用保證了大數(shù)據(jù)量傳輸和存儲(chǔ)的穩(wěn)定性以及功能的可擴(kuò)展性,兼顧了傳統(tǒng)電話網(wǎng)絡(luò)遠(yuǎn)程控制方式。智能家居控制器操作簡(jiǎn)單,使用方便,達(dá)到了預(yù)期的設(shè)計(jì)目的。
評(píng)論
查看更多