本文首先介紹了基于MPC8247的嵌入式電力交換系統(tǒng)的硬件平臺(tái),著重闡述了如何在MPC8247處理器上開(kāi)發(fā)嵌入式電力交換系統(tǒng),主要包括開(kāi)發(fā)環(huán)境的搭建、系統(tǒng)引導(dǎo)模塊U-Boot修改、內(nèi)核的裁剪和移植,交換軟件SDK移植,應(yīng)用軟件ZebOS的編譯等。通過(guò)電力交換設(shè)備(DPN8000)的現(xiàn)場(chǎng)應(yīng)用,證實(shí)該系統(tǒng)具有體積小,功耗低,高帶寬等優(yōu)點(diǎn),為電力通信網(wǎng)絡(luò)和系統(tǒng)的開(kāi)發(fā)做出了貢獻(xiàn)。
隨著電力通信的發(fā)展,電力業(yè)務(wù)量的增加,對(duì)嵌入式電力設(shè)備的I/O處理能力有了更高的要求,尤其需要能提供大容量、高速率和高帶寬的語(yǔ)音、數(shù)據(jù)和視頻業(yè)務(wù)支撐的嵌入式接入設(shè)備,因此,性能高,功耗低的大容量嵌入式電力設(shè)備倍受青睞。
Freescale公司生產(chǎn)的PowerPC處理器MPC8247具有集成度高,功耗低和能支持豐富的外圍設(shè)備等優(yōu)點(diǎn),再搭配IP Infusion的ZebOS(R)軟件,實(shí)現(xiàn)了快速通信與高吞吐率的數(shù)據(jù)處理,有效地提高了網(wǎng)絡(luò)的性能、降低了網(wǎng)絡(luò)基礎(chǔ)設(shè)施的成本并增加了運(yùn)營(yíng)商和企業(yè)的收益,很好地解決了嵌入式電力通信設(shè)備遇到的問(wèn)題。本文以開(kāi)發(fā)大容量電力光交換設(shè)備OLT(DPN8000)為背景,介紹了電力交換系統(tǒng)的硬件設(shè)計(jì)和嵌入式交換系統(tǒng)系統(tǒng)開(kāi)發(fā)的搭建,重點(diǎn)針對(duì)如何實(shí)現(xiàn)嵌入式電力交換系統(tǒng)給出解決辦法。
1 硬件平臺(tái)的概述
MPC8247板主要包括CPU子系統(tǒng),其系統(tǒng)框圖如圖1所示。
MPC8247是Freescale公司MPC82XX系列微處理器的一種,主要由G2_LE內(nèi)核(PowerPC 603e內(nèi)核的一種),系統(tǒng)接口單元SIU以及通信處理模塊CPM組成。支持60x總線,其數(shù)據(jù)線寬為64位,地址線為32位;支持PCI/LOCAL總線,其數(shù)據(jù)線寬為32位,地址線為32位。PowerPC8247內(nèi)核工作時(shí)鐘最高為400 MHz,CPM工作時(shí)鐘最高為200 MHz。外設(shè)接口大致如下:
(1)SDRAM:64位256 MB容量,由4片64 MB的MT48LC32M16A2TG組成,使用Local Bus的D[0:63]和A[16:28]。
(2)FLASH:32 MB容量,由2片16 MB的S29GL128N組成,設(shè)計(jì)中該FLASH工作在WORD模式,使用Local Bus的D[0:31]和A[4:29]。
(3)PCI總線:引出一個(gè)32位66 MHz的PCI總線,經(jīng)過(guò)PCI-PCIe橋片PI7C9X10轉(zhuǎn)換成為PCIe總線,經(jīng)XMC連接器連接到底板的交換芯片BCM56 338,作為FabrIC芯片的管理端口。
2 嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的搭建
2.1 準(zhǔn)備開(kāi)發(fā)環(huán)境
通常嵌入Linux的開(kāi)發(fā)分為主機(jī)系統(tǒng)和目標(biāo)系統(tǒng),他們之間通過(guò)網(wǎng)絡(luò)接口和串口互連,網(wǎng)口一般用以下載程序和內(nèi)核映像文件,串口一般作為console控制臺(tái)來(lái)使用,在主機(jī)通過(guò)超級(jí)終端與目標(biāo)系統(tǒng)進(jìn)行命令交互,就像PC的鍵盤(pán)和顯示器。
嵌入Linux系統(tǒng)模型如圖2所示。
2.1.1 安裝開(kāi)發(fā)編譯環(huán)境
通常主機(jī)與目標(biāo)板的CPU都不相同,需要進(jìn)行交叉編譯。在本項(xiàng)目中使用了GNU GCC工具鏈。GNUGCC的PowerPC版本需要交叉編譯,所有源代碼可以從FSF的FTP站點(diǎn)。
整個(gè)建立過(guò)程為:下載源文件、補(bǔ)丁和建立編譯的目錄;建立內(nèi)核頭文件;建立二進(jìn)制工具(binutils);建立初始編譯器(bootstrap gcc);建立C庫(kù)(glibc);建立全套編譯器(full gcc)。
安裝好之后可以用“which ppc_8xx.gcc”來(lái)查找一下產(chǎn)生的目標(biāo)執(zhí)行文件在哪里。
2.1.2 配置DHCP
主機(jī)系統(tǒng)需要設(shè)置DHCP服務(wù)器,用于目標(biāo)系統(tǒng)在采用BOOTP啟動(dòng)時(shí)獲取IP地址。設(shè)置之前首先要知道目標(biāo)系統(tǒng)的MAC地址,同時(shí)要保證主機(jī)系統(tǒng)安裝了DHCPD服務(wù)器。修改虛擬機(jī)中/etc/dhcpd.conf配置文件,然后用如下命令重新啟動(dòng)dhcpd服務(wù):
#/etc/init.d/dhcpd restart
同時(shí)啟動(dòng)dhcpd服務(wù),使主機(jī)每次啟動(dòng)時(shí)自動(dòng)啟動(dòng)該服務(wù)。
2.1.3 配置TFTP服務(wù)器
TFTP(簡(jiǎn)單文件傳輸協(xié)議)服務(wù)器用于目標(biāo)系統(tǒng)從主機(jī)系統(tǒng)上獲取可執(zhí)行的代碼或內(nèi)核映象文件。
以超級(jí)用戶登錄主機(jī)系統(tǒng),編輯下面文件:
#vim/etc/xinetd.conf
去掉下面一行的注釋?zhuān)?/p>
#tftp dgram udp wait root/usr/sbin/tcdp in.tftpd
根目錄下創(chuàng)建tftpboot目錄:
#mkdir tftpboot
將每次編譯好的目標(biāo)代碼拷貝到該目錄下,在系統(tǒng)服務(wù)中啟動(dòng)TFTPD服務(wù)(運(yùn)行#setup,在“System servICes”中選擇。)然后執(zhí)行:#service xinetd restart即可。
2.1.4 配置NFS
NFS主要是給目標(biāo)系統(tǒng)提供一個(gè)根文件系統(tǒng)(Root Filesystem)。
首先,編輯配置文件/etc/exporlts:
#vi exports
如果原來(lái)不存在,添加一行:
/home/com_target_master*(rw,no_root_squash)
“/home/com_target_master”是根文件系統(tǒng)所在的目錄,“*”允許主機(jī)所在網(wǎng)段所有機(jī)器訪問(wèn)。和配置TFTP一樣,在系統(tǒng)服務(wù)中啟動(dòng)NFS服務(wù),重新啟動(dòng)系統(tǒng)或運(yùn)行:
#service nfs restart
2.2 目標(biāo)板FLASH資源分配
對(duì)于系統(tǒng)平臺(tái)來(lái)說(shuō),建立良好的FLASH分區(qū)是系統(tǒng)成功運(yùn)行的基本保證。具體FLASH資源分配如表1所示。
3 嵌入式系統(tǒng)開(kāi)發(fā)的實(shí)現(xiàn)過(guò)程
本文的軟件平臺(tái)是基于電力交換設(shè)備,DPN8000的開(kāi)發(fā)環(huán)境為模型。搭建軟件層次模型如下:
3.1 Linux系統(tǒng)引導(dǎo)模塊uboot
U-Boot是德國(guó)DENX軟件中心依照GPL(General Public License)發(fā)布的系統(tǒng)引導(dǎo)模塊,支持多種處理器,如ARM系列、PowerPC系列、MIP S系列、X86系列等。根據(jù)自己的目標(biāo)系統(tǒng)修改編輯U-Boot包下的源文件,進(jìn)行移植,最后編譯U-Boot后生成二進(jìn)制文件,用于引導(dǎo)系統(tǒng)。
在U-Boot代碼中,主要有關(guān)的代碼設(shè)置在MYM(uboot)\cpu\mpc8260.c的代碼中實(shí)現(xiàn),但是該地址的定義在其平臺(tái)說(shuō)明頭文件中。故增加一個(gè)mpc8247平臺(tái)——mpc8260ads,在$(u-boot)\include\config目錄下增加一個(gè)相應(yīng)平臺(tái)配置頭文件說(shuō)明-mpc8260ads.h,將與硬件有關(guān)的配置放在此文件中。對(duì)應(yīng)SDRAM,F(xiàn)LASH等定義如下:
(1)SDRAM的地址設(shè)定
#define CFG_OR1 0xF0002900
#define CFG_PSDMR 0xc4322423
以上定義的為SDRAM的地址設(shè)定,由MPC8247片選CS1相關(guān)的寄存器設(shè)定。
(2)FLASH的地址設(shè)定
#define CFG_FLASH_BASE 0xfe000000
#define CFG_BR0_PRELIM
CFG_FLASH_BASE | 0x00001801
#define CFG_OR0_PRELIM
CFG_FLASH_BASE | 0x000008C2
以上定義的為FLASH的地址設(shè)定,由MPC8247片選CS0相關(guān)的寄存器設(shè)定。
(3)FPGA地址設(shè)定
#define CFG_FPGA_BASE 0xF4500000
#define CFG_BR3_PRELIM CFG_FPGA_BASE| 0x00001801
#define CFG_OR3_PRELIM 0xFFFF8010
以上定義的為FPGA的地址設(shè)定,由MPC8247片選CS0相關(guān)的寄存器設(shè)定。
修改完成后,通過(guò)make得到u-boot.bin文件。
3.2 Linux內(nèi)核的移植
由于嵌入式系統(tǒng)存儲(chǔ)資源有限,精簡(jiǎn)內(nèi)核就顯得尤為重要。建立系統(tǒng)的新內(nèi)核,最主要的工作就是配置內(nèi)核參數(shù)配置內(nèi)核文件,進(jìn)入內(nèi)核釋放的目錄下執(zhí)行命令:#make menuconfig會(huì)生成新的.config文件。然后執(zhí)行#make uImage,生成新的uImage,將生成的內(nèi)核拷貝到tf tp目錄下即可。
使用tftp將內(nèi)核鏡像文件下載到目標(biāo)板上,重新引導(dǎo)后,目標(biāo)板即可成功啟動(dòng)。
3.3 文件系統(tǒng)的制作
將得到Busybox版本進(jìn)行解壓,配置和編譯就可以得到想要的文件系統(tǒng)。具體命令如下:
下載一個(gè)busybox-1.1.3.tar.gz
#tar xvzf busybox-1.1.3.tar.gz
#cd busybox-1.1.3
#make defeonfig
#make menuconfig
Busybox編譯出一個(gè)單個(gè)的獨(dú)立執(zhí)行程序,就稱(chēng)為Busybox,它集成了非常多的命令工具,如果要使用某一命令,需要做一個(gè)軟鏈接就可以了。在這個(gè)項(xiàng)目中,采用busybox來(lái)配置所需各類(lèi)文件,具體方法參見(jiàn)busybox的手冊(cè)。
3.4 SDK的移植過(guò)程
將拿到的sdk-xgs-robo-5.6.2.tar.gz的源碼文件解壓到/home/corn_work/目錄下:
#ed/home/com_work
#tar-zxvf sdk-xgs-robo-5.6.2.tar.gz
3.4.1 設(shè)置環(huán)境變量
設(shè)置環(huán)境變量如下:
#export SDK=/home/com_work/sdk-xgs-robo-5.6.2
這樣SDK的環(huán)境路徑已經(jīng)設(shè)好,進(jìn)入make目錄下,修改對(duì)應(yīng)的Makefile.linux-bmw和Make.LOCal文件,使這2個(gè)文件對(duì)應(yīng)的內(nèi)核,編譯器路徑和交換芯片類(lèi)型是所需要的類(lèi)型。
3.4.2 編譯SDK
如果想重編譯SDK,只需進(jìn)入:/home/eom_work/sdk-xgs-robo-5.6.2/systEMS/linux/kernel/bmw目錄下,執(zhí)行#make clea n;make將生成的模塊拷貝到對(duì)應(yīng)文件系統(tǒng)的對(duì)應(yīng)的目錄下即可。
生成的模塊如表2所示。
然后將用到的模塊加載。執(zhí)行過(guò)程如下:
#insmod linux-kernel-bde.o-f
#insmod linux-uk-proxy.o-f
#insmod linux-bcm-diag-full.o-f
#./bcm.user.proxy
3.5 ZebOS的移植過(guò)程
將拿到的ZebOS771.tar. gz的源碼文件解壓到/home/corn_work/目錄下:
#cd/home/com
#cd/home/com_work
#tar-zxvf ZebOS771.tar.gz
3.5.1 建立環(huán)境變量
進(jìn)入zebos目錄下:
#cd/home/com_work/ZebOS771
建立set_export.sh文件源碼如下:
m.JPG
修改完set_export.sh文件,執(zhí)行:#source set_export.sh即可。
3.5.2 修改配置文件編譯ZebOS
進(jìn)入ZebOS目錄下,主要修改的文件是config.sh,修改好自己要編譯的模塊,執(zhí)行:#.config. sh進(jìn)入platform/linux目錄下:#cd platform/linux
#make clean;make all就好了。將platform/linux/bin目錄下生成的bin文件拷貝到文件系統(tǒng)對(duì)應(yīng)目錄下,這樣,就完成了整個(gè)系統(tǒng)的開(kāi)發(fā)搭建。
4 結(jié)語(yǔ)
基于MPC8247嵌入式電力交換系統(tǒng)的設(shè)計(jì),具有體積小、功耗低、性能高,豐富的應(yīng)用接口等優(yōu)點(diǎn),隨著大容量電力光交換設(shè)備DPN8000的現(xiàn)場(chǎng)應(yīng)用,證實(shí)該系統(tǒng)充分發(fā)揮了對(duì)網(wǎng)絡(luò)和配電等設(shè)備的 強(qiáng)大支持功能。該平臺(tái)系統(tǒng)在變電站工作環(huán)境比較惡劣的條件下有較好的適應(yīng)性和強(qiáng)大的通信能力,提供了更高的轉(zhuǎn)發(fā)速率,更大的吞吐率和更好的包處理能力,充分體現(xiàn)了其優(yōu)異的性能。
評(píng)論