基于MPC8245的嵌入式VPN的研究與開(kāi)發(fā)
2.2 HHPPC8245-4ETH-R1嵌入式開(kāi)發(fā)平臺結構
HHPPC8245-4ETH-R1是華恒公司推出的一款嵌入式高性能網(wǎng)絡(luò )開(kāi)發(fā)平臺,開(kāi)發(fā)板硬件系統由核心板和底板兩部分組成[1],功能模塊圖如圖2所示。核心板采用musenki板,板上集成了處理器MPC8245、NOR FLASH(4M)、SDRAM等設備,采用PCI 2.2總線(xiàn),并引出多種功能接口;底板上配置4個(gè)Davicom10/100M自適應以太網(wǎng)口,一個(gè)串口,并將FLASH擴展到32M,便于將來(lái)的功能擴展。FLASH上的軟件主要由引導裝載程序PPCboot、Linux內核映象和RAMDISK文件系統三部分構成,其中RAMDISK中包含了 BusyBox Shell、IPsec-Tools、模塊操作工具等上層應用程序。
圖2 核心板(上)和底板(下)的硬件功能模塊圖 |
3 基于HHPPC8245平臺的嵌入式Linux VPN網(wǎng)關(guān)設備的開(kāi)發(fā)與設計
3.1 Linux交叉開(kāi)發(fā)環(huán)境的分析與實(shí)現
HHPPC8245-4ETH-R1目標板與PC宿主機有不同的POWER結構,需要在PC宿主機上建立交叉開(kāi)發(fā)工具鏈,包括binutils、 gcc和glibc庫三大部件。本系統采用Linux-2.6.10內核,網(wǎng)上的二進(jìn)制代碼大多版本太低,僅能編譯Linux-2.4系列內核,因此從源代碼開(kāi)始建立開(kāi)發(fā)環(huán)境,本系統選擇的源代碼版本為binutils-2.13.90.0,10、gcc-3.3.1、glibc-2.3.2;由于 MPC8245支持altivec,因此編譯平臺目標名為powerpc-linux-gnualtivec-。交叉開(kāi)發(fā)環(huán)境建立后將包含有 powerpc-linux-gnualtivec-gcc等交叉開(kāi)發(fā)工具的目錄加入$PATH環(huán)境變量,并交叉編譯、安裝OpenSSL和Flex庫,用于安裝IPsec-Tools。
3.2 Linux 2.6.10內核移植的分析與實(shí)現
內核移植包括CPU Core移植、硬件平臺移植和系統外圍驅動(dòng)程序開(kāi)發(fā)[4]。Linux-2.6內核支持MPC8245 處理器和開(kāi)發(fā)板上大部分硬件,因此移植的主要任務(wù)是核心板硬件平臺的移植。內核代碼入口點(diǎn)為arch/ppc/kernel/head.S,在完成查找 processor和architecture類(lèi)型,建立內核初始化堆棧、建立臨時(shí)頁(yè)表等工作后,調用platform_init函數,用于在 start_kernel函數中初始化中斷、陷阱、控制臺等各個(gè)模塊時(shí)調用。平臺相關(guān)的初始化函數在arch/ppc/platform/中實(shí)現。因此在該目錄下創(chuàng )建musenki_setup.c,實(shí)現PCI總線(xiàn)、中斷控制器、IO端口映射、CPU頻率、復位函數、串口和早期打印函數支持等初始化工作。這部分修改、移植需要熟悉平臺的各種配置參數,應參考相似平臺及Internet上相關(guān)源代碼。
平臺的移植同時(shí)需要修改相關(guān)Kconfig和Makefile文件,在arch/ppc/Kconfig中加入musenki平臺的支持,在arch/ppc/platforms/Makefile加入musenki_setup.c的編譯。
FLASH中為內核映象留下的地址空間有限,為節省資源、加快啟動(dòng)速度,在選擇內核編譯選項時(shí)只需選擇系統運行必須的模塊,使內核盡量精簡(jiǎn)。本系統的內核應支持的文件系統為EXT2和JFFS2,網(wǎng)絡(luò )協(xié)議需包括AH、ESP等IPsec協(xié)議,以及相關(guān)的加密、認證等算法。
評論