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

基于MPC860和VxWorks的硬件防火墻設計及實現(xiàn)

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

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

?

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

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

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

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

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

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

3.2.1 BSP移植的步驟及建立BOOTROM的方法
??? (1)閱讀手冊,,了解WINDRIVER的BSP模板編寫規(guī)范、文件的組織,,找到適合于目標處理器的模板,。
??? (2)找到BSP模板以后,針對不同的CPU類型,,確定基本BSP中所有寄存器配置是否適合當前的硬件(包括SDRAM,、Flash)。如果不適合則做相應的改動,,這主要是指rominits,,config.h中的修改。
??? (3)如果有網(wǎng)絡設備,,則需要配置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 根據(jù)硬件修改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常用的調(diào)試方法
??? 開發(fā)調(diào)試BSP有兩種方法,,一種是使用仿真器通過BDM的方式一步步地跟蹤調(diào)試,;另一種是通過點燈的方式進行所謂的“黑”調(diào)。這里主要介紹“黑”調(diào)的方法,?!昂凇闭{(diào)的方法是通過 “燈”閃或用示波器測片選等,根據(jù)外部現(xiàn)象和所編的測試代碼進行比較分析來調(diào)試程序。進行黑調(diào)的首要條件是串口部分代碼已經(jīng)調(diào)通,,宿主機可以通過串口與目標機的通信,然后再調(diào)試BSP的其他部分,。
??? BSP調(diào)試流程分成兩部分,。首先是位于BootRom中的Boot代碼,它的作用是實現(xiàn)配置硬件和啟動VxWorks下載程序,;接下來是下載后跳轉(zhuǎn)到VxWorks的入口地址運行操作系統(tǒng)和應用程序,。
??? ROM中的啟動代碼部分:
??? RomInit:在文件romInit.s中,它是程序運行的開始,,實現(xiàn)判斷啟動類型,,配置內(nèi)核和非內(nèi)核寄存器以及內(nèi)存和外圍設備的讀寫時序,因此可以在此處加入內(nèi)存檢測功能,。閃燈功能函數(shù)也要在此加入,。判斷啟動類型和配置寄存器的部分不需要改動。配置內(nèi)存和外圍設備讀寫時序部分要進行改動,,這一部分的SDRAM,、ROM、Flash,、FPGA有相應的模板可以參考,,是通過使用宏定義來實現(xiàn)的。一般是改動空間大小的屏蔽位,,讀寫位數(shù)以及片選寄存器OR和BR,。內(nèi)存檢測在這里實現(xiàn)較復雜,它根據(jù)相應的內(nèi)存檢測算法實現(xiàn),。主要是對地址線和數(shù)據(jù)線的檢測,,通過寫入數(shù)據(jù)再讀出數(shù)據(jù)來判斷,使用“走步1”和“走步0”算法,。閃燈在這一部分是強烈推薦的,,因為閃燈才能定位程序的運行位置。
??? 在RomInit函數(shù)結(jié)尾處,,指針跳入RomStart(),,RomStart()在BootInt.c文件中。它是系統(tǒng)運行的第一個C函數(shù),。這一部分是Wind River公司提供的標準程序,,一般不需改動。該函數(shù)是C的入口函數(shù),,由匯編程序調(diào)用,,主要完成清內(nèi)存,將ROM中的程序拷貝到RAM,,解壓并跳至解壓后的程序運行,。
??? UsrInit在BootConfig.c文件中,,主要實現(xiàn)硬件的初始化。其中涉及到串口,、網(wǎng)口的初始化及CONSOLE的配置等,。其中串口和網(wǎng)口的配置是BSP的重要部分。UsrRoot在BootConfig.c文件中,,它主要是實現(xiàn)vxworks文件的下載,,并且跳轉(zhuǎn)到vxworks的入口地址,從而進入操作系統(tǒng),。
??? VxWorks文件中的代碼部分:
??? SysInit在sysAlib.s中,。它是VxWorks的啟動代碼,與RomInit的作用相同,。對于這個文件,,一般不需要改動。UsrInit在Usrconfig.c中,,其作用與Boot中UsrInit的作用相同,。他們都調(diào)用SysLib.c中的子函數(shù)實現(xiàn)相同的硬件初始化功能。
UsrRoot在UsrConfig.c中,,它的作用與Boot中的UsrRoot的作用類似,,但是這里的UsrRoot最終是進入到應用程序中。
??? 該硬件防火墻的特點是高性能,、高穩(wěn)定性和強兼容性,,除了可以實現(xiàn)網(wǎng)關、路由,、上位機監(jiān)控的功能外,,在硬件防火墻的功能上通過軟件可實現(xiàn)典型的性能參數(shù)、1000個并發(fā)聯(lián)接數(shù),、實現(xiàn)吞量20M,、實現(xiàn)10M的安全過濾帶寬、實現(xiàn)對VPN,、IDS,、Dos等的支持。
??? 同時,,本系統(tǒng)作為一種嵌入式開發(fā)的典型設計,,核心板可以不作任何改動即可應用于其他嵌入式應用中。充分體現(xiàn)了嵌入式開發(fā)在后續(xù)開發(fā)中電路重復應用的優(yōu)勢,。此外在設計中所采用的一些擴展性設計,,如為增加系統(tǒng)存儲器所加的標準SODIMM插槽、不同封裝的晶振驅(qū)動電路,不但增加了該核心板電路的應用范圍,,而且在實際使用中也增強了該電路的穩(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.

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