網(wǎng)絡(luò )處理器IP2022及其在嵌入式牌照識別系統中的應用設計
介紹了Ubicom公司的最新網(wǎng)絡(luò )處理器IP2022以及專(zhuān)為網(wǎng)絡(luò )優(yōu)化而設計的嵌入式實(shí)時(shí)操作系統ipOS的特點(diǎn)。描述了如何在中ipOS下編制以太網(wǎng)應用程序。給出IP2022在一個(gè)嵌入式牌照識別系統中的應用實(shí)例。
隨著(zhù)Internet技術(shù)的廣泛應用,許多專(zhuān)家預測Internet技術(shù)將會(huì )無(wú)所不在,且是一個(gè)嵌入式技術(shù)。這就導致了一個(gè)需求,即在某些電子、電器設備中,以低成本去執行物理層(PHY)與TCP/IP函數集。嵌入式互聯(lián)網(wǎng)技術(shù)可廣泛應用于家電產(chǎn)品、安全設備、自動(dòng)售貨機、遠程抄表以及工業(yè)控制等領(lǐng)域。
在大量的嵌入式應用中,為物理層提供網(wǎng)絡(luò )連接是一個(gè)關(guān)鍵。然而TCP/IP網(wǎng)絡(luò )協(xié)議棧的供應商并沒(méi)有意識到這一點(diǎn)。通常,即使協(xié)議棧是以軟件形式執行,接口也是以某種專(zhuān)用的硬件形式提供。Ubicom的網(wǎng)絡(luò )處理器IP2022已經(jīng)能夠執行TCP/IP協(xié)議模塊,也能以軟件形式執行物理口,例如UART、I2C等。隨著(zhù)以太網(wǎng)MAC/PHY物理層接口需求的增長(cháng),專(zhuān)為執行以太網(wǎng)協(xié)議的軟件模塊(ipModule)已經(jīng)實(shí)現。
1 1P2022介紹
IP2022是Ubicom公司的最新產(chǎn)品。IP2022芯片為網(wǎng)絡(luò )連接應用進(jìn)行了優(yōu)化,十分適用于Internet基礎設備和網(wǎng)橋/網(wǎng)關(guān)部分。使用Ubicom的預制軟件模塊和配置工具可以對芯片編程和重新編程,為多種設備間和人機間通訊應用創(chuàng )建了真正的單芯片解決方案。
IP2022內含兩個(gè)全雙工串化器/解串器(Ser/Des)硬件單元,能直接與各種常用網(wǎng)絡(luò )接口相連。這種功能使其能夠實(shí)現片內10 Base-T以太網(wǎng)、USB以及其它各種快速串行協(xié)議。由于擁有Ser/Des硬件單元,IP2022也便于從一種協(xié)議轉換到另一種協(xié)議,因而也能作為協(xié)議轉換器。
IP2022的軟件模塊包括10base-T以太網(wǎng)、USB、UART、I2C、SPI、并行從設備物理接口以及一個(gè)完整的TCP/IP堆棧。正在開(kāi)發(fā)的多種附加軟件可用于構建完整的端到端連接解決方案。Ubicom的Internet處理器體系結構和軟件模塊的組合創(chuàng )建了一個(gè)強大靈活的平臺,使設計人員能夠有信心跟上標準的更新與市場(chǎng)需求的變化,設計出用于未來(lái)的產(chǎn)品。
IP2022具有100MIPS的處理能力,并為通訊應用進(jìn)行了優(yōu)化。它能夠在執行應用程序的同時(shí),提供高速計算、靈活的I/O控制和高效的數據處理功能,因此可用于高性能物理接口和網(wǎng)絡(luò )協(xié)議的軟件實(shí)現。IP2022的工作電壓為2.5V,芯片上帶有內置的電荷泵,因此不需要為閃存編程而提供高電壓。
2 IP2022操作系統中OS簡(jiǎn)介
ipOS是Ubicom設計的可配置的嵌入式實(shí)時(shí)操作系統。它是專(zhuān)為網(wǎng)絡(luò )應用而優(yōu)化的,然而不論在哪兒執行通信網(wǎng)絡(luò )協(xié)議,都存在一個(gè)問(wèn)題,就是如何最好地支持各種不同通信緩沖區/包(Buffer/Packet)的協(xié)議層。ipOS所采用的數據結構、網(wǎng)絡(luò )緩沖區(Netbuf)為此類(lèi)問(wèn)題提供了一個(gè)有力且靈活的解決方案,與此同時(shí)達到了最少使用存儲器的目的。
ipOS支持單任務(wù)與多任務(wù)操作模式。要使用單任務(wù)模式可在配置工具中關(guān)閉多任務(wù)選項。在單任務(wù)模式下,需要盡可能快地輪詢(xún)調用每個(gè)物理接口和一些操作系統函數。由于僅有一個(gè)任務(wù),在輪詢(xún)循環(huán)(Polling loop)中,任何被直接或間接調用的函數必須盡可能快地返回,因為這些函數阻礙了其它系統進(jìn)程的繼續進(jìn)行。函數在等待I/0時(shí),不能阻塞進(jìn)程的執行,這是最重要的。
3 10Base-T以太網(wǎng)的軟件執行
3.1硬件需求
要給10Base-T以太網(wǎng)設置串化器/解串器(Ser/Des),來(lái)自差分線(xiàn)接收器或片上比較器的輸人數據端應連接到IP2022 Ser/Des接收器的輸入端,以太網(wǎng)的接收/發(fā)送信號要匹配Ser/Des指定的管腳。這些管腳通過(guò)一個(gè)帶有終端的變壓器連接到一個(gè)RJ45插座。IP2022與以太網(wǎng)接口連接示意圖如圖1所示。
在這個(gè)實(shí)現中,IP2022在單個(gè)芯片上從以太網(wǎng)MAC/PHY層到應用層完成了網(wǎng)絡(luò )互連的所有方面。10Base-T以太網(wǎng)的實(shí)現利用了IP2022片內Ser/Des單元,從而使外圍器件最少。
IP2022工作電壓為2.5V。在這個(gè)設計中,以太網(wǎng)接口需要5V電壓而IP2022 I/0卻工作在2.5V上,因此必須選擇一個(gè)正確轉換匝數的以太網(wǎng)變壓器。所選的變壓器或者能接受2.5V輸入,或者可在電路中插入一個(gè)5V的TTL緩沖器來(lái)允許使用1:1的變壓器。另一種方法是使IP2022的I/0工作在3.3V上,使用一個(gè)5V的CMOS緩沖器。在這個(gè)設計中,選擇了一個(gè)1:1的變壓器,因為它們更易購買(mǎi),且價(jià)格合算;還有,大多數帶有內置變壓器的RJ45連接器僅在較為流行的1:1轉換配置中有用,通過(guò)去掉電路中的緩沖器,可進(jìn)一步簡(jiǎn)化電路。
3.2軟件功能
以太網(wǎng)軟件執行以下操作
(1)極性檢測與反轉;
(2)載波偵聽(tīng);
(3)超時(shí)檢測;
(4)連接完整性測試與連接脈沖產(chǎn)生;
(5)一旦沖突,隨機后退;
(6)檢測到?jīng)_突時(shí),發(fā)送一個(gè)32 bit的jam序列;
(7)以太網(wǎng)包的形成,通過(guò)把報頭、目的地址、源地址、長(cháng)度/類(lèi)型、MAC客戶(hù)數據放人到發(fā)送緩沖區,軟件必須計算幀校驗;
(8)MAC層函數。
發(fā)送連接通過(guò)把Ser/Des的發(fā)送管腳改為通用I/0腳,產(chǎn)生一個(gè)連接脈沖。它使用實(shí)時(shí)時(shí)鐘定時(shí)器產(chǎn)生一16ms的時(shí)基。發(fā)送后,連接脈沖定時(shí)器復位為0。
接收連接刷新一個(gè)定時(shí)器,上界檢查是在24ms,不執行下界檢查。連接脈沖寬度由硬件檢測。
在發(fā)送幀,包含了駐留在IP2022 PRAM中硬編碼的數據。幀包括目的/源地址、幀長(cháng)、數據和32 bit的CRC。如果通道不忙,則開(kāi)始傳送幀。若檢測到?jīng)_突,發(fā)送ISR執行以下操作:
(1)停止傳送;
(2)發(fā)送32bit的jam序列;
(3)等待載波空閑;
(4)產(chǎn)生隨機延遲;
(5)返回,重傳條件集。
在接收幀,每個(gè)接收ISR檢查接收到的包尾EOP(End Of Packet)。一幀接收到時(shí),接收函數執行以下操作:
(1)幀校驗序列;
(2)地址檢查,單址通信和多址通信;
(3)檢查保留地址;
(4)幀長(cháng)度(太長(cháng)或太短)檢查。
沖突檢測是通過(guò)監聽(tīng)載波偵聽(tīng)指示位來(lái)進(jìn)行的。最大的延遲為16bit的時(shí)間。
在MAC層應用程序接口,MAC客戶(hù)(上層)通過(guò)初始化數據指針和緩沖區長(cháng)度發(fā)送一個(gè)包。然后調用“Transmit_Packet”函數,返回值是發(fā)送的結果。主程序通過(guò)輪詢(xún)調用一個(gè)“Receive_ Packet”函數接收一個(gè)包。非零返回值指示接收到一個(gè)有效的包。
在網(wǎng)絡(luò )緩沖區(Netbuffer),較高層定義一個(gè)叫netbuffer的數據結構。這是訪(fǎng)問(wèn)TCP/UDP數據報不同元素的最好方法。與原始IP包一起,有一些分配給數據包元素(例如:源IP地址、目的IP地址、選項等)的指針。這些指針是靜態(tài)的。與指針相關(guān)的還有長(cháng)度域,這樣很容易改變netbuffer的選項數目。為了構成一個(gè)MAC幀,發(fā)送程序必須根據指針和長(cháng)度域從netbuffer中把數據級聯(lián)起來(lái)。
4 ipOS應用程序的編寫(xiě)
ipOS操作系統可工作在單任務(wù)模式或多任務(wù)模式下。在大多數情況下單任務(wù)模式的程序足以滿(mǎn)足實(shí)時(shí)應用需求。利用Ubicom的Unity IDE開(kāi)發(fā)環(huán)境生成的一個(gè)工程,最基本的有3個(gè)文件:entry.s、isr.s和main.c。
4.1引導程序代碼
所有引導程序代碼都放在entry.s文件中。這段代碼在復位向量處加載了一個(gè)占位程序。當IP2022上電時(shí),IP2022跳到復位向量處執行引導程序代碼。該代碼完成以下功能:
(1)更新FCFG寄存器,這樣代碼執行速度對時(shí)鐘頻率而言是優(yōu)化的;
(2)設置堆棧指針指向數據存儲器的末端;
(3)通用寄存器初始化為0;
(4)把.data段從FLASH中加載到數據存儲器的開(kāi)始處;
(5)將.data段之后的數據存儲器區域設置為0來(lái)容納.bss段;
(6)把.pram段從FLASH加載到程序SRAM的開(kāi)始處;
(7)將程序SRAM區域設置為0來(lái)容納.pram_data段;
(8)引導程序完成,跳到main()主函數。
注意:用戶(hù)的任何初始化代碼應該加入到main()函數中,不應該加到entry.s文件中。
4.2中斷服務(wù)函數
isr.s是中斷服務(wù)函數(1SR)文件。當一個(gè)異步事件發(fā)生時(shí),就會(huì )執行對應的ISR。在大多數使用虛擬外設的應用中,都要用到定時(shí)器timer0中斷來(lái)控制周期性的進(jìn)程。有兩種ISR模板用于幫助基于timer0虛擬外設的開(kāi)發(fā)。第一種是“Simple ISR template using timer0”,另一種是“Complex ISR Template”。
如果僅有一個(gè)虛擬外設或所有的虛擬外設需要以同樣的頻率執行,那么使用第一個(gè)模板是很合適的。對于較為復雜的應用,可以使用“Complex ISR template”模板。詳細的例子可參考其SDK幫助文件。
4.3主體結構
main.c文件是應用程序的主體結構,主要包括配置塊(CONFIC_BLOCK)和main()函數。
配置塊是系統配置參數的信息,它存儲在IP2022的FLASH存儲器中,控制著(zhù)系統時(shí)鐘、PLL分頻系數和其它的一些系統參數。
在main()函數中,主程序的結構非常簡(jiǎn)單。首先是調用debug_init()、heap add()和timer_init()這3個(gè)函數對操作系統進(jìn)行初始化;然后是創(chuàng )建虛擬外設實(shí)例進(jìn)行監聽(tīng),用戶(hù)的回調函數(Callback Function)作為監聽(tīng)函數的參數;接著(zhù)是設置中斷服務(wù)函數并使其開(kāi)始運行;最后是對虛擬外設的端口進(jìn)行輪詢(xún)。當輪詢(xún)函數檢測到相應的狀態(tài)時(shí),就會(huì )調用相應的回調函數。一般來(lái)說(shuō),這些叵調函數是用戶(hù)自己設計的處理函數。
下面是一個(gè)使用UART虛擬外設的例子:
其它諸如以太網(wǎng)、USB等通信程序,結構與此基本上相同,只是通信協(xié)議不同,程序的基本思想是一致的。
5 應用實(shí)例
高德威智能交通系統有限公司開(kāi)發(fā)的新一代嵌入式牌照識別器(License Plate Recognition)功能框圖如圖2所示。通信接口芯片采用Ubicom的網(wǎng)絡(luò )處理器IP2022,其片上虛擬外設包括UART、USB和以太網(wǎng)等接口,可以方便地接人Internet,從而實(shí)現遠程程序更新和數據下載等功能。DSP采用TI的定點(diǎn)處理器TMS320C6204,完全滿(mǎn)足實(shí)時(shí)處理的要求。視頻處理器為Philips的SAA711lA,FPGA使用Altera的EPlK300QC,FLASH為SST的SST39LV016,SDRAM為ICSI的IS42S16400。
下面簡(jiǎn)要介紹一下牌照識別器的工作流程。系統上電,IP2022復位并進(jìn)行網(wǎng)絡(luò )操作系統初始化工作。初始化完成后,IP2022取得對FLASH操作的總線(xiàn)控制權,開(kāi)始讀取FLASH中的FPGA程序配置邏輯。FPGA電路配置完成后,IP2022向FPGA中的控制寄存器的相應控制位寫(xiě)一跳變脈沖復位DSP,并釋放對FLASH的操作控制權。IP2022開(kāi)始等待DSP啟動(dòng)的完成。
DSP的Reset腳連接到FPGA控制寄存器的對應控制位。DSP通過(guò)FPGA控制邏輯以DMA方式從FLASH中讀取64K字節的程序。這64K程序中的引導程序負責把余下的DSP程序調度到SDRAM中。程序調度完成后,DSP釋放對FLASH的總線(xiàn)控制權,并通知IP2022自己?jiǎn)?dòng)完成。DSP進(jìn)入正常工作狀態(tài),通過(guò)12C總線(xiàn)設置SAA7111A,然后循環(huán)檢查FPGA控制寄存器的狀態(tài)位以等待汽車(chē)的到來(lái)。
DSP啟動(dòng)完成后,IP2022重新取得對FLASH的控制權,進(jìn)入輪詢(xún)狀態(tài)監聽(tīng)以太網(wǎng)和UART口。此時(shí),遠程主機可以通過(guò)以太網(wǎng)口對系統進(jìn)行調試,更新DSP或FPGA程序。
當汽車(chē)到來(lái)時(shí),埋在地下的線(xiàn)圈便會(huì )觸發(fā),FPGA的控制寄存器的相應狀態(tài)位發(fā)生變化。DSP檢測到該變化時(shí)便向攝像機發(fā)送抓圖命令。攝像機輸出的模擬視頻信號通過(guò)視頻處理器進(jìn)行A/D變換后,形成YUV數字視頻信號,再通過(guò)FPGA邏輯傳輸到DSP的SDRAM中。DSP開(kāi)始執行牌照識別算法,所識別的牌照號可通過(guò)串口或網(wǎng)口傳送到主機。而抓拍的圖像經(jīng)過(guò)JPEG壓縮后也可通過(guò)以太網(wǎng)傳輸到遠程主機。
通過(guò)使用本文介紹的方案,原先需要通過(guò)專(zhuān)用通信鏈路進(jìn)行數據傳輸的各種電子設備,現在只要在其中加上一個(gè)廉價(jià)的網(wǎng)絡(luò )處理器,而無(wú)需昂貴的PC機或工作站就可以通過(guò)互聯(lián)網(wǎng)進(jìn)行數據傳輸。這就給電子設備的升級、維護等帶來(lái)了極大的方便性和靈活性??梢灶A料,嵌入式互聯(lián)網(wǎng)技術(shù)必將在各個(gè)領(lǐng)域得到更為廣泛的應用。
參考文獻
l ipOS-An Embedded Operating System.Ubicom lnc,May 24,2001
2 Ubicom Networking Protocols and Application Software.Ubicom lnc,May 10,2001
3 ipEthernet lmplementation Of 10Base-T Ethernet in Software.Ubicom lnc,May 18,2001
4 1P2022 Internet Processor Data Sheet.Ubicom lnc,December 14,2001
tcp/ip相關(guān)文章:tcp/ip是什么
評論