《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 業(yè)界動態(tài) > 基于MPC860和VxWorks的硬件防火墻設計及實現

基于MPC860和VxWorks的硬件防火墻設計及實現

2008-07-10
作者:李正熙1,,于興晗1,,楊 揚1朱

??? 摘 要: 介紹了一款以MPC860 PowerQUICCTM(Quad Unit Integrated Communications Controller)嵌入式通信控制器為核心、嵌入式操作系統(tǒng)VxWorks為操作系統(tǒng),,帶有內容過濾功能的硬件防火墻設計與實現,,詳細闡明各種相關原理和關鍵技術,。
??? 關鍵詞: MPC860? PowerQUICC? 防火墻? 嵌入式

?

??? 與傳統(tǒng)的PC架構硬件防火墻卡相比,利用MPC860實現的硬件防火墻在系統(tǒng)結構,、體積,、功耗、成本以及應用上具有很大的優(yōu)勢,。本文介紹的利用MPC860開發(fā)的硬件防火墻設計方案,,不僅充分利用了MPC860的功能,并且在實現上所采用的設計思路可以很容易地應用到其他嵌入式開發(fā)中,。
??? 本方案所使用的器件大部分是嵌入式開發(fā)中最經常使用的器件,,所有的器件都具有一定的通用性,稍加改動即可應用到其他設計中,。并且在該系統(tǒng)的基礎上能很容易地開發(fā)出適用于其他方面的網絡控制及通信系統(tǒng),。
1 系統(tǒng)硬件結構及工作原理
1.1 系統(tǒng)結構及特點
??? 整個系統(tǒng)由核心板" title="核心板">核心板底板組成,核心板主要包括:核心CPU(MPC860),、Flash存儲器,、SDRAM存儲器、標準的SODIMM接口,、電源監(jiān)控及復位電路、時鐘驅動電路" title="驅動電路">驅動電路以及與底板相連的連接器,。底板主要包括:100M網絡接口電路" title="接口電路">接口電路,、10M網絡接口電路、BDM調試接口電路,、系統(tǒng)供電電路,、實現控制和監(jiān)控功能的RS232接口電路和與核心板相連的連接器。方案設計中將整個系統(tǒng)分為核心板和底板兩部分,分別設計實現,,既降低了整個系統(tǒng)的開發(fā)難度又使系統(tǒng)易于維護,、升級和和擴展。
1.2 系統(tǒng)的功能框圖及工作原理
??? 核心板的功能框圖如圖1所示,。系統(tǒng)上電后,,核心板通過連接器將電源從底板引上來。電源監(jiān)控及復位電路開始工作,,產生復位信號,。在復位信號產生后,核心板的核心CPU(MPC860)開始啟動,。此時MPC860開始讀取數據線(D0~D15)上的值,,并通過讀出的設置值來初始化CPU,主要包括存儲器初始化,、中斷向量初始化,、調試寄存器初始化等。當所有的硬件環(huán)境(主要指CPU中所有與操作系統(tǒng)相關的一些特殊功能寄存器,,如SRR0,、SRR1、CR等)初始化完畢后,。系統(tǒng)會將控制權交給存儲在Flash中的操作系統(tǒng)(如Linux,、vxWorks等),通過操作系統(tǒng)管理系統(tǒng)中的所有硬件及任務,。通過操作系統(tǒng)的調度來實現核心板管理,、控制底板,并通過底板的硬件實現硬件防火墻的路由,、網關及內容過濾等功能,。

???????????????????
??? 此外為提高核心板的適用范圍,在核心板上增加了一個標準的SODIMM插槽和總線復用" title="復用">復用電路,,SODIMM插槽可通過跳線支持16MB,、32MB、64MB及128MB內存,??偩€復用電路支持外部總線仲裁(即在同一系統(tǒng)中可以將多塊核心板加在同一總線上而不會產生沖突),本核心板可以不加任何改動即可用于其他系統(tǒng)中,,包括多個核心板用于同一個系統(tǒng)[1][2],。
??? 底板的功能框圖如圖2所示。當操作系統(tǒng)完全接管系統(tǒng)(包括對核心板底板所有硬件的管理)后,,由操作系統(tǒng)發(fā)起任務控制底板上的資源,,從而實現硬件防火墻的功能,,包括路由功能、網關功能和內容過濾的功能,。同時連接器將核心板所有的引腳引出用于擴展設計,。這樣設計的優(yōu)點是當系統(tǒng)進行局部更新或設計時,只要更改底板的設計即可,,并極大降低了開發(fā)難度,,同時也提高了本系統(tǒng)復用率。

???????????????????????
2 關鍵器件和關鍵技術
2.1 系統(tǒng)核心CPU MPC860
??? MPC860是由基于Motorola的MC68360嵌入式通信控制器演變而來的,。PowerPCTM結構處理器由三個模塊組成,,即PowerPCTM內核、系統(tǒng)接口單元(SIU)及通信處理器模塊(CPM),。這三個模塊均采用32位內部總線,。MPC860的主處理器是32位的PowerPCTM內核,能夠實現內存管理(MMU)以及指令與數據的緩存,;MPC860的系統(tǒng)接口單元中,,存儲器控制單元可支持多種高性能的存儲器,包括SDRAM和Flash,,還增加了PCMCIA控制器及實時時鐘電路,。MPC860采用了類似于MC68360的通信處理器模塊(CPM),并增加了I2C通道,。MPC860的CPM贈加了DSP功能,。詳細介紹見參考文獻[1][4]。
??? LXT972是Intel公司推出的符合IEEE標準的快速網絡物理收發(fā)器驅動芯片,。適合于在100BASE-TX和10BASE-T標準的介質連接中應用,。除此之外,它還提供一種非常易于應用在10/100M介質訪問控制器(MACs)的獨立介質獨立接口(MII),。詳細介紹見參考文獻[2],。
??? LXT905是Intel公司生產的一款低電壓通用10Base-T收發(fā)器,適合于IEEE 802.3標準的物理層應用,。LXT905的功能包括曼徹思特編碼/解碼,,接收器壓制和發(fā)送脈沖波形休整、模糊識別,、連接完整性測試和反極性探測和校正,。LXT905驅動10Base-T雙絞線僅用單一3.3V或者5V供電的隔離變壓器。詳細介紹見參考文獻[3],。
3 設計方案的實現
3.1 硬件部分

??? 由于篇幅有限,,本文僅對系統(tǒng)的幾個具有代表性的電路進行分析。
3.1.1 核心板部分
??? 由于本系統(tǒng)的最終設計目標是設計出一臺標準的嵌入式設備,,所以在Flash存儲器電路上選用了兩片富士通生產的型號為MBM29LV160BT 16MB(2M×8/1M×16)位)的Flash存儲器,,使用方式為2MX8位,在電路連接上,,它占用了MPC860的存儲空間管理器的兩塊,。兩片Flash存儲器的片選分別與MPC860的片選CS0#和CS1#相連。CS0接啟動Flash,,一般將系統(tǒng)的啟動代碼燒錄進去,。CS1接文件系統(tǒng)Flash,一般將操作系統(tǒng)和文件系統(tǒng)存儲在該Flash中,。
??? 本系統(tǒng)所使用的SDRAM存儲器為現代公司生產的型號為HY57V641620HG 4Banks×1M×16位Synchronous DRAM,,使用的方式為將兩片SDRAM通過字擴展構成4M×32位SDRAM,即共16MB的存儲器空間,。在物理連接上該兩片SDRAM與MPC860的片選CS2#相連,,占用MPC860的存儲空間管理器的一塊。除此之外該片選可通過跳線禁用,。MPC860與SDRAM的接口電路如圖3所示,。
?????????????????????????

??? 為了提高本系統(tǒng)的應用范圍,增加系統(tǒng)的存儲器空間,,系統(tǒng)設計在核心板上增加了一個144pin的標準SODIMM插槽,,通過跳線可以支持16MB、32MB,、64MB,、128MB的標準內存。與MPC860的片選CS5#和CS6#物理連接,。
??? 硬件設置字電路如圖4所示,。

????????????????????????
??? 在上電復位和硬件復位時,CPU除了讀取時鐘的缺省設置外,,還會從數據總線上讀取硬件復位設置字(HRCW),,如圖4所示。這個16位的HRCW字必須用上拉電阻進行設置,,若未加上拉電阻,,各數據位的值缺省為0。
??? 在本系統(tǒng)中,,硬件復位設置字用三個總線驅動器244加到數據總線上實現,。硬件復位的設置字如下:
??? 上電復位時,MODCK1=1,、MODCK2=0,,選則EXTCLK為OSCCLK的輸入。
??? D0=0,,即EARB=0,,本系統(tǒng)采用內部總線仲裁機制,。
??? D1=0(可通過跳線設置成1),,即IIP=0,,本系統(tǒng)復位中斷向量的地址為0XFFF00100,,可通過跳線設置成0X00000100,。
??? D2=1,,即BBE=1,,本系統(tǒng)的啟動設備不支持突發(fā)模式,。
??? D3=0,,即BDIS=0,,啟動禁止位禁止,,硬件復位后內存控制器將所有的地址都映射到BANK0區(qū)。從CS0#連接的Flash啟動,。
??? D4=0,,D5=1,即BPS=01,,系統(tǒng)啟動后數據總線工作在8位模式,。
??? D6=0;系統(tǒng)保留位,。
??? D7=1,,D8=0,即ISB=10,,系統(tǒng)復位后內部內存的起始地址為0XFF000000H,。
??? D9=1,D10=1,,即DBGC=11,,對MPC860的一些復用引腳進行設置。使系統(tǒng)復位后MPC860的一些復用引腳工作在確定的引腳狀態(tài),。以滿足系統(tǒng)的需求,。
??? D11=0,D12=0,,即DBPC=00,,MPC860的調試端口BDM調試端口管腳設置。
??? D13=0,,D14=0,,即EBDF=00,總線工作在全速模式下,。
??? D15=0,,即CLES=0;數據存儲模式為大端模式,。
??? 在本系統(tǒng)中為減少PCB板尺寸提高系統(tǒng)的可靠性,,采用Cadence Allego SPB15.1軟件,,布成8層板。在提高電磁兼容性方面,。除了在PCB板上增加地層外,,在PCB板的上下表面層板的周圍增加貫穿孔以增加整個PCB板的抗干擾性和電磁兼容性,。
3.1.2 底板部分
??? 本系統(tǒng)中100M網絡驅動電路為主要部分,,是本系統(tǒng)與外網相連的接口,所有的網絡數據都通過100M網口進入硬件防火墻,,將核心板分析及處理后的數據通過10M網絡驅動電路接口送入內網,,所有的算法(如查找算法、IP數據包內容還原,、甚至于高級的內容替代算法等)都在核心板實現,。
??? 本系統(tǒng)共有兩路10M網絡驅動電路。10M網絡驅動電路是硬件防火墻與內網相連的惟一路徑,,硬件防火墻將處理過的數據通過該接口送入內網,。同理,內網訪問外網的數據也要通過它進入硬件防火墻,。數據經硬件防火墻處理后,,通過100M網絡驅動電路送到外網。同時本系統(tǒng)所設計的兩路10M網絡電路還可以同時監(jiān)管兩個10M帶寬的局域網,,完成一些高級功能(如網絡流量檢測,、內網監(jiān)控、網關及路由功能等),。
??? 由于功能和開發(fā)需要,,系統(tǒng)在設計中采用了雙串口" title="串口">串口方案。在開發(fā)中,,一個串口可以作為與宿主機超級終端相連的調式串口,,另一個可以作為與上位機通信的端口。
??? 由于MPC860支持片上調試,,且為降低開發(fā)成本,,所以在本系統(tǒng)開發(fā)時所采用的調試手段是MPC860所支持的BDM 調試。
3.2 軟件部分
??? 主要包括啟動代碼編寫,、操作系統(tǒng)移植,、硬件驅動編寫以及應用程序等。由于篇幅有限,,本文僅對BSP移植進行簡單介紹,。

3.2.1 BSP移植的步驟及建立BOOTROM的方法
??? (1)閱讀手冊,了解WINDRIVER的BSP模板編寫規(guī)范,、文件的組織,,找到適合于目標處理器的模板,。
??? (2)找到BSP模板以后,針對不同的CPU類型,,確定基本BSP中所有寄存器配置是否適合當前的硬件(包括SDRAM,、Flash)。如果不適合則做相應的改動,,這主要是指rominits,,config.h中的修改。
??? (3)如果有網絡設備,,則需要配置confignet.h,。如果有串口,則需要修改sysSerial.c,。修改sysLib.c中的硬件相關部分,。
??? 建立BOOTROM的方法:
??? (1)進行BSP定制,主要是修改bootline,,配置configAll.h,,config.h和Makefile。
??? (2)選擇VxWorks的加載方式,,然后配置target server,,通過“build bootrom”圖形對話框或者命令行建立bootrom,然后通過visionprobe將bootrom下載到目標機RAM中運行,,或者將成功的bootrom用專門燒寫器燒寫到Flash中,。
3.2.2 根據硬件修改BSP
??? 在本課題中,將ads860目標板的BSP拷貝到目錄installDir/target/config/ncut860t下,,同時將all目錄下的所有文件都拷貝到installDir/target/config/ncut860t/all目錄下,,之后針對本系統(tǒng)的硬件環(huán)境對BSP進行修改,同時修改相應的makefile,。
??? 注意:應將BSP拷貝到相應目錄下后再啟動Tornado,,否則在Tornado的BSP列表中可能看不到新添加的BSP。
??? (1)config.h文件需要修改的配置(部分代碼)
??? #define DEFAULT_BOOT_LINE
??? ″motfec(0,0)host:vxWorks h=219.224.61.102 e=219.224.61.202 u=ncut pw=ncut″
??? #define CRISTAL_FREQ??50000000??????? /*50MHz*/
??? #define LOCAL_MEM_LOCAL_ADRS?0x00000000
????????????????????????????????????????? /*Base of RAM*/
??? #define LOCAL_MEM_SIZE???0x02000000
????????????????????????????????????? ??? /*32MB memory available*/
??? #define ROM_BASE_ADRS???0x02800000
????????????????????????????????????????? /*base address of ROM*/
??? #define ROM_TEXT_ADRS?ROM_BASE_ADRS+0x100
??? #define ROM_SIZE?? 0x00200000?????????/*2M ROM space*/
??? #define RAM_HIGH_ADRS?(LOCAL_MEM_LOCAL_
??? ADRS+0x00500000)
??? #define RAM_LOW_ADRS?(LOCAL_MEM_LOCAL_
??? ADRS+0x00010000)
??? #define USER_RESERVED_MEM??0x00000000?
????????????????????????????????????? ??? /*user reserved memory size*/
??? (2)makefile文件修改(部分代碼)
??? TARGET_DIR?=ncut860t
??? VENDOR=Motorola
??? BOARD=fw860t
??? ROM_TEXT_ADRS=02800100 # ROM entry address
??? ROM_SIZE=00400000 # number of bytes of ROM space
??? RAM_LOW_ADRS=00010000 # RAM text/data address
??? RAM_HIGH_ADRS=00500000 # RAM text/data address
??? HEX_FLAGS=-a $(ROM_TEXT_ADRS)
??? MACH_EXTRA=motFecEnd.o
??? CONFIG_ALL=F:workSetUpPpCTornado2.2targetconfig
??? ncut860tall
3.2.3 BSP常用的調試方法
??? 開發(fā)調試BSP有兩種方法,,一種是使用仿真器通過BDM的方式一步步地跟蹤調試,;另一種是通過點燈的方式進行所謂的“黑”調。這里主要介紹“黑”調的方法,?!昂凇闭{的方法是通過 “燈”閃或用示波器測片選等,根據外部現象和所編的測試代碼進行比較分析來調試程序,。進行黑調的首要條件是串口部分代碼已經調通,,宿主機可以通過串口與目標機的通信,然后再調試BSP的其他部分。
??? BSP調試流程分成兩部分,。首先是位于BootRom中的Boot代碼,,它的作用是實現配置硬件和啟動VxWorks下載程序;接下來是下載后跳轉到VxWorks的入口地址運行操作系統(tǒng)和應用程序,。
??? ROM中的啟動代碼部分:
??? RomInit:在文件romInit.s中,,它是程序運行的開始,實現判斷啟動類型,,配置內核和非內核寄存器以及內存和外圍設備的讀寫時序,,因此可以在此處加入內存檢測功能。閃燈功能函數也要在此加入,。判斷啟動類型和配置寄存器的部分不需要改動,。配置內存和外圍設備讀寫時序部分要進行改動,這一部分的SDRAM,、ROM、Flash,、FPGA有相應的模板可以參考,,是通過使用宏定義來實現的。一般是改動空間大小的屏蔽位,,讀寫位數以及片選寄存器OR和BR,。內存檢測在這里實現較復雜,它根據相應的內存檢測算法實現,。主要是對地址線和數據線的檢測,,通過寫入數據再讀出數據來判斷,使用“走步1”和“走步0”算法,。閃燈在這一部分是強烈推薦的,,因為閃燈才能定位程序的運行位置。
??? 在RomInit函數結尾處,,指針跳入RomStart(),,RomStart()在BootInt.c文件中。它是系統(tǒng)運行的第一個C函數,。這一部分是Wind River公司提供的標準程序,,一般不需改動。該函數是C的入口函數,,由匯編程序調用,,主要完成清內存,將ROM中的程序拷貝到RAM,,解壓并跳至解壓后的程序運行,。
??? UsrInit在BootConfig.c文件中,主要實現硬件的初始化。其中涉及到串口,、網口的初始化及CONSOLE的配置等,。其中串口和網口的配置是BSP的重要部分。UsrRoot在BootConfig.c文件中,,它主要是實現vxworks文件的下載,,并且跳轉到vxworks的入口地址,從而進入操作系統(tǒng),。
??? VxWorks文件中的代碼部分:
??? SysInit在sysAlib.s中,。它是VxWorks的啟動代碼,與RomInit的作用相同,。對于這個文件,,一般不需要改動。UsrInit在Usrconfig.c中,,其作用與Boot中UsrInit的作用相同,。他們都調用SysLib.c中的子函數實現相同的硬件初始化功能。
UsrRoot在UsrConfig.c中,,它的作用與Boot中的UsrRoot的作用類似,,但是這里的UsrRoot最終是進入到應用程序中。
??? 該硬件防火墻的特點是高性能,、高穩(wěn)定性和強兼容性,,除了可以實現網關、路由,、上位機監(jiān)控的功能外,,在硬件防火墻的功能上通過軟件可實現典型的性能參數、1000個并發(fā)聯接數,、實現吞量20M,、實現10M的安全過濾帶寬、實現對VPN,、IDS,、Dos等的支持。
??? 同時,,本系統(tǒng)作為一種嵌入式開發(fā)的典型設計,,核心板可以不作任何改動即可應用于其他嵌入式應用中。充分體現了嵌入式開發(fā)在后續(xù)開發(fā)中電路重復應用的優(yōu)勢,。此外在設計中所采用的一些擴展性設計,,如為增加系統(tǒng)存儲器所加的標準SODIMM插槽、不同封裝的晶振驅動電路,,不但增加了該核心板電路的應用范圍,,而且在實際使用中也增強了該電路的穩(wěn)定性,。
參考文獻
[1] Freescale semiconductor Co.Ltd.MPC860 PowerQUICC?Family User′s Manual.Rev.3,2004,,7.
[2] Intel Co.Ltd.LXT972A 3.3V Dual-Speed Fast Ethernet Transceiver Datasheet.2001,,1.
[3] Intel Co.Ltd.LXT905 Universal 10Base-T Transceiver with?3.3v Support Datasheet.2001,1.
[4] 謝斌.MPC860/850嵌入式系統(tǒng)開發(fā)入門與指導.西安:西安電子科技大學出版社,,2004.
[5] Freescale semiconductor Co.Ltd.Application Note《SDRAM?and the MPC860》 03-19-98 Revised,,01-11-00.

本站內容除特別聲明的原創(chuàng)文章之外,轉載內容只為傳遞更多信息,,并不代表本網站贊同其觀點,。轉載的所有的文章、圖片,、音/視頻文件等資料的版權歸版權所有權人所有,。本站采用的非本站原創(chuàng)文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容,、版權和其它問題,,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,,避免給雙方造成不必要的經濟損失,。聯系電話:010-82306118;郵箱:[email protected],。