基于MPC8245的嵌入式VPN的研究與開(kāi)發(fā)
3.3 引導(dǎo)裝載程序PPCboot的分析與實(shí)現(xiàn)
引導(dǎo)裝載程序的基本功能包含:初始化時(shí)鐘、FLASH、SDRAM、串口等硬件,實(shí)現(xiàn)tftp通信協(xié)議,從宿主機(jī)下載內(nèi)核映象、RAMDISK映象并燒寫(xiě)到flash、啟動(dòng)內(nèi)核等。核心板上包含2片2MB的flash,第一片地址空間是FF800000~FF9FFFFF,第二片是 FF000000~FF1FFFFF,PPCboot位于地址0xFF900000處,硬件上設(shè)置成與地址0xFFF00000重疊。由于MPC8245 處理器的復(fù)位向量是0xFFF00100,因此開(kāi)發(fā)板的復(fù)位向量相當(dāng)于在第一片F(xiàn)LASH的0XFF900100地址處。開(kāi)發(fā)板加電后執(zhí)行 PPCboot,進(jìn)行硬件初始化,隨后將Linux內(nèi)核解壓縮到SDRAM的0xC0000000處,將RAMDISK解壓縮到0xC0A00000處,最后將控制權(quán)交給Linux內(nèi)核。FLASH和SDRAM空間分布如圖3所示。
圖3 FLASH和SDRAM空間分布示意圖 |
3.4 文件系統(tǒng)的分析與實(shí)現(xiàn)
出于穩(wěn)定性和成本考慮,嵌入式系統(tǒng)一般都不使用硬盤(pán),而用FLASH代替,RAMDISK文件系統(tǒng)的壓縮映象保存在FLASH上,系統(tǒng)復(fù)位時(shí)由引導(dǎo)裝載程序解壓、加載到SDRAM。本系統(tǒng)采用8M的RAMDISK(壓縮前),其中目錄主要包含/bin、/sbin、/etc、/lib、/dev、 /proc等,應(yīng)用程序主要包含:精簡(jiǎn)的Shell命令集BusyBox、VPN的應(yīng)用層配置工具IPsec-Tools、Linux-2.6內(nèi)核的模塊操作工具module-init-tools。在宿主機(jī)上使用交叉開(kāi)發(fā)工具編譯,為提高運(yùn)行效率、節(jié)省存儲(chǔ)空間,PPC目標(biāo)代碼鏈接時(shí)選用靜態(tài)鏈接,并用 powerpc-linux-gnualtivec-strip精簡(jiǎn)。
FLASH上的文件系統(tǒng)一般采用JFFS2。JFFS2是針對(duì)以閃存為存儲(chǔ)介質(zhì)的嵌入式文件系統(tǒng),充分考慮了閃存的物理局限性,具有防崩潰、負(fù)載平衡、垃圾收集等功能,且源代碼公開(kāi),易于學(xué)習(xí)和使用。在FLASH的第4M~32M空間上創(chuàng)建JFFS2文件系統(tǒng)(前4M用于保存PPCboot、內(nèi)核和 RAMDISK壓縮映象),并在系統(tǒng)啟動(dòng)腳本中將其掛載到/jffs2目錄。
4 基于MPC8245的嵌入式Linux VPN的實(shí)現(xiàn)和性能測(cè)試
PPCboot、內(nèi)核與RAMDISK文件系統(tǒng)映象生成后應(yīng)燒寫(xiě)入FLASH。PPCboot的燒寫(xiě)必須借助JTAG工具,燒寫(xiě)到地址 0XFF900000處。PPCboot正常啟動(dòng)后用tftp命令將遠(yuǎn)程開(kāi)發(fā)機(jī)上的內(nèi)核映象下載到目標(biāo)板地址800000處,用fp命令燒寫(xiě);同樣,將遠(yuǎn)程開(kāi)發(fā)機(jī)上的RAMDISK映象下載到目標(biāo)板A00000處,用ff命令燒寫(xiě)。以上工作完成后嵌入式Linux目標(biāo)系統(tǒng)便能正常啟動(dòng),并返回 BusyBox的Shell提示符界面。
評(píng)論