黃志鵬,伍召學(xué)
(重慶郵電大學(xué)通信與信息工程學(xué)院, 重慶 400065)
基于10Gbit/s傳輸?shù)墓饫w旁路系統(tǒng)平臺(tái)研究與設(shè)計(jì)
黃志鵬,伍召學(xué)
(重慶郵電大學(xué)通信與信息工程學(xué)院, 重慶 400065)
本文基于MPC8308ERDB設(shè)計(jì)了一款基于10Gbit/s傳輸?shù)墓饫w旁路保護(hù)器,用于保護(hù)接入骨干網(wǎng)的節(jié)點(diǎn)設(shè)備,重點(diǎn)分析了針對(duì)MPC8308ERDB開發(fā)板的u-boot移植過程中的關(guān)鍵問題。憑借U-boot對(duì)PowerPC系列處理器最為豐富的支持,結(jié)合飛思卡爾提供的BSP源代碼包,詳細(xì)地分析了u-boot源代碼的編譯及配置過程,重點(diǎn)分析了u-boot的移植過程。
光纖旁路保護(hù)器;BSP;移植
隨著傳統(tǒng)通信向高速信息化的轉(zhuǎn)變,PowerPC系列處理器憑借強(qiáng)大的嵌入式表現(xiàn),得到了越來越廣泛的應(yīng)用,涵蓋了從電子產(chǎn)品到大型通信設(shè)備。但對(duì)于不同類型的嵌入式芯片、不同的操作系統(tǒng)和外圍接口都需要重新移植、修改和編譯u-boot。
本文基于MPC8308ERDB設(shè)計(jì)了一款基于10 Gbit/s傳輸?shù)墓饫w旁路保護(hù)器,用于保護(hù)接入骨干網(wǎng)的節(jié)點(diǎn)設(shè)備,完成當(dāng)節(jié)點(diǎn)設(shè)備出現(xiàn)硬件故障、軟件死鎖或者掉電時(shí),旁路器自動(dòng)切換光路到直通狀態(tài),保持網(wǎng)絡(luò)的完整性。重點(diǎn)分析了針對(duì)MPC8308ERDB開發(fā)板的u-boot移植過程中的關(guān)鍵問題。
在移植過程中,采用了飛思卡爾為目標(biāo)板提供的BSP源代碼包,通過修改、編譯后得到u-boot源碼,結(jié)合目標(biāo)板上的CPU、Flash、DDR以及各種接口和外圍設(shè)備,實(shí)現(xiàn)了目標(biāo)板硬件系統(tǒng)的初始化和正常啟動(dòng)。針對(duì)10 Gbit/s傳輸?shù)墓饫w旁路保護(hù)器系統(tǒng),分析了u-boot啟動(dòng)流程,為解決外圍吉比特以太網(wǎng)交換芯片和物理芯片驅(qū)動(dòng)移植提供了良好的基礎(chǔ)平臺(tái),確保了硬件系統(tǒng)的順利引導(dǎo)。
目標(biāo)版核心控制模塊采用飛思卡爾的MPC8308處理器,具備128 MB的DDR2、8MB的NOR Flash、32 MB的NAND Flash,提供單個(gè)吉比特以太網(wǎng)PHY、4個(gè)吉比特以太網(wǎng)Switch、雙UART端口、GPIO接口等資源。1G PHY選用BCM5461,Switch選用BCM56334,4塊BCM8705與4塊XFP一對(duì)一相連組成單方向數(shù)據(jù)收發(fā)鏈路。具體連接圖如圖1所示。
3.1 硬件啟動(dòng)
要成功移植u-boot,首先需要了解系統(tǒng)的啟動(dòng)流程,包括硬件處理器和軟件u-boot兩個(gè)方面。對(duì)于硬件處理器的上電啟動(dòng),首先按MPC8308硬件規(guī)范要求加電,系統(tǒng)宣告PROESET和TEST有效,讓所有寄存器初始化到它們的默認(rèn)狀態(tài),讓大部分I/O驅(qū)動(dòng)器釋放為高阻狀態(tài),然后系統(tǒng)施加穩(wěn)定的SYS_CLK_ IN和復(fù)位配置輸入信號(hào)CFG_RESET_SOURCE。在至少32個(gè)穩(wěn)定的SYS_CLK_IN時(shí)鐘周期之后,系統(tǒng)將PROESET置為無效,接著設(shè)備對(duì)復(fù)位配置輸入信號(hào)進(jìn)行采樣,確保時(shí)鐘分配和復(fù)位配置源,緊接著設(shè)備開始裝入復(fù)位配置字,一旦裝入了復(fù)位配置字低端,系統(tǒng)PLL就開始鎖定。當(dāng)系統(tǒng)PLL鎖定時(shí)序后,向e300c PLL 提供CSB_CLK,e300c PLL開始鎖定,在這個(gè)過程中,設(shè)備一直驅(qū)動(dòng)HRESET有效,直到e300c PLL 鎖定且裝入了復(fù)位配置字為止。如果前面未將HRESET置為無效,此時(shí)可以將其置為無效,接著將到核和其余邏輯的內(nèi)部復(fù)位置為無效,然后啟用I/O驅(qū)動(dòng)器,LBC DLL 開始鎖定,為響應(yīng)配置周期,PCI接口宣告DEVSEL有效,在4個(gè)時(shí)鐘之后,設(shè)備停止驅(qū)動(dòng)SRESET,SRESET變?yōu)闊o效。最后,將到e300核的復(fù)位置為無效,并啟用核。設(shè)備上電啟動(dòng)過程結(jié)束。
圖1 硬件原理圖
3.2 u-boot啟動(dòng)流程
u-boot啟動(dòng)流程圖如圖2所示。
(1)上電復(fù)位,讀取硬件復(fù)位配置字(HRCW),CPU上電復(fù)位后,片選信號(hào)CS0#有效。在Flash起始地址處讀取HRCW,每次讀取8 bit,每4次組成一個(gè)32的配置字,共讀取8次,分別組成低32 bit配置字和高32 bit配置字。起始地址.text由/board/mpc83xx_board/cpmfig.mk文件定義。配置字讀完,PLL開始鎖定。
(2)入口啟動(dòng)函數(shù),開始執(zhí)行,入口地址由boardmpc83xx_boardU-boot.lds確定:
(3)init_e300_core函數(shù)
圖2 u-boot啟動(dòng)流程圖
初始化內(nèi)核,禁止IRQ響應(yīng),允許machine check中斷和system reset中斷,禁止MMU,進(jìn)行地址轉(zhuǎn)換,禁止看門狗和無效指令cache,為系統(tǒng)創(chuàng)建一個(gè)可靠的初始環(huán)境。
(4)cpu_init_f函數(shù)
該函數(shù)是u-boot執(zhí)行的第一個(gè)C函數(shù),在Flash中運(yùn)行,該函數(shù)完成對(duì)CPU寄存器的初始化,包括初始化內(nèi)存控制器。
(5)board_init_f函數(shù)
當(dāng)寄存器初始化結(jié)束后,該函數(shù)為全局變量結(jié)構(gòu)體gd分配內(nèi)存空間,進(jìn)行初始化序列init_sequence,為輸出打印信息而提供串口支持,為準(zhǔn)備重定位而初始化SDRAM。初始化函數(shù)如下:
(6)relocate_code函數(shù)
到該函數(shù)為止,u-boot代碼都在Flash中運(yùn)行,通過前面的一系列函數(shù),已經(jīng)將RAM初始完畢,具備了程序在RAM中運(yùn)行的能力,通過relocate_code函數(shù)從Flash中拷貝u-boot第二階段代碼到RAM,并跳轉(zhuǎn)到RAM中相應(yīng)的位置。
(7)board_init_r函數(shù)
該函數(shù)為板級(jí)初始化的第二階段,該階段代碼主要由C語(yǔ)言完成,這部分是一些相對(duì)變化不大的部分,可針對(duì)不同的目標(biāo)板改變調(diào)用一些初始化函數(shù),并通過設(shè)置一些宏定義來改變初始化的流程。這部分主要用來初始化兩個(gè)重要數(shù)據(jù)結(jié)構(gòu),完成初始化本階段使用的硬件設(shè)備、檢測(cè)系統(tǒng)內(nèi)存映射、將內(nèi)核從Flash讀取到RAM中、為內(nèi)核設(shè)置啟動(dòng)參數(shù)并最終調(diào)用內(nèi)核。最后循環(huán)跳入main_loop()函數(shù):
4.1 交叉編譯環(huán)境搭建
嵌入式系統(tǒng)的開發(fā)一般需要交叉編譯開發(fā)環(huán)境。主機(jī)系統(tǒng)工作在Centos環(huán)境下,將飛思卡爾針對(duì)開發(fā)板提供的嵌入式開發(fā)套件BSP源代碼包掛載到/opt/ freescale目錄下,在當(dāng)前目錄下,執(zhí)行./install安裝命令,進(jìn)行一系列的環(huán)境配置以及確定安裝路徑后,在當(dāng)前目錄下生成/ltib-mpc8308erdb-20100413文件目錄時(shí),說明安裝完成。此時(shí),會(huì)在/opt/freescale/usr/ local/ gcc-4.1.78-eglibc-2.5.78-1/ powerpce300c3-linux-gnu/bin文件目錄下生成一系列基于powerpc-e300c3-linux-gnu的交叉編譯工具,這里,選用powerpc-e300c3-linux-gnu-gcc、powerpce300c3-linux-gnu-g++、powerpc-e300c3-linuxgnu-ar這三個(gè)編譯工具。
4.2 u-boot移植過程
移植工作主要針對(duì)不同的目標(biāo)板進(jìn)行一些配置修改。本文以MPC8308RDB作為目標(biāo)板。首先確定目標(biāo)板上的系統(tǒng)資源映射,在此基礎(chǔ)上通過修改配置文件以及代碼完成u-boot的目標(biāo)板移植,如果移植后無法滿足外部設(shè)備的一些功能需求,還需要添加一些驅(qū)動(dòng)程序。本平臺(tái)的地址空間映射如圖3所示。
圖3 8M NOR映射圖
在源代碼安裝目錄下/litb-mpc8308erdb-20100413,執(zhí)行./ltib p u-boot,便會(huì)在當(dāng)前目錄下生成/rpm/BUILD/u-boot-2009.11-rc1,此時(shí),在當(dāng)前目錄下便生成了目標(biāo)文件u-boot.bin,再回到/ litb-mpc8308erdb-20100413目錄,執(zhí)行命令./ltib c編譯u-boot源碼,則會(huì)在/rpm目錄下生成/linux,該文件里面就包含了所需要的系統(tǒng)內(nèi)核uImage。將u-boot.bin通過JTAG燒錄到目標(biāo)版中去,發(fā)現(xiàn)并不能正常啟動(dòng),出現(xiàn)一些錯(cuò)誤提示,因此,還需根據(jù)錯(cuò)誤逐一改正,具體體現(xiàn)在對(duì)MPC8308ERDB.h這個(gè)目標(biāo)文件的更改上,舉例說明如下:
設(shè)置正確的輸入時(shí)鐘:
#define CONFIG_83XX_CLKIN 33333333 /* in Hz */
#define CONFIG_SYS_CLK_FREQ CONFIG_83XX_CLKIN
設(shè)置bootdelay時(shí)延
#define bootdelay 3
注銷掉CONFIG_VSC7385_ENET,因?yàn)槟繕?biāo)版沒有包含此類型的交換芯片
//#define CONFIG_VSC7385_ENET /* VSC7385 ethernet support */
設(shè)置波特率
#define CONFIG_BAUDRATE 115200
為了啟動(dòng)界面的整潔,也可以設(shè)置行明令提示符
#define CONFIG_SYS_PROMPT "=> " /* Monitor Command Prompt */
設(shè)置從Flash啟動(dòng)
#define CONFIG_RAMBOOTCOMMAND "setenv bootargs root=/dev/ram rw… "
利用u-boot的Makefile編譯得到3個(gè)文件,使用codewarrior v8.8軟件,通過JTAG將其中的u-boot. bin成功燒錄到Flash中,再通過tftp將內(nèi)核和文件系統(tǒng)下載到目標(biāo)版。目標(biāo)板上電后,系統(tǒng)運(yùn)行穩(wěn)定,能實(shí)MPC8308RDB目標(biāo)板各個(gè)模塊之間的信息交互。
本文從硬件和軟件部分詳細(xì)分析了u-boot在MPC8308目標(biāo)板上的啟動(dòng)過程,并給出了目標(biāo)板上的u-boot移植過程。成功移植后,u-boot可以安全、穩(wěn)定地運(yùn)行在MPC8308目標(biāo)板上,很好地實(shí)現(xiàn)了CPU與以太網(wǎng)交換芯片和物理芯片之間的信息交互以及系統(tǒng)各模塊的管理功能,為10 Gbit/s傳輸?shù)墓饫w旁路保護(hù)器設(shè)計(jì)提供了優(yōu)秀的開發(fā)平臺(tái)和應(yīng)用環(huán)境。
[1] 王海鵬,倪遠(yuǎn)平,周佩萱. U-boot在mini2440平臺(tái)上的移植方法[J]. 微計(jì)算機(jī)應(yīng)用, 2010(8):2-4.
[2] 武杰,黎敬濤. U-boot在ARM9上的移植分析與實(shí)現(xiàn)[J]. 微計(jì)算機(jī)應(yīng)用, 2011(5):2-3.
[3] 羅賢全,尚朝軒等. 定制嵌入式Linux系統(tǒng)的啟動(dòng)程序[J]. 微計(jì)算機(jī)信息, 2005(9):3-4.
[4] 高晶敏,蘭亞柱等. Porting U-boot to control computer based on MPC8349[J]. 微計(jì)算機(jī)信息,2009(9):3-5.
[5] 田裕康. 基于ARM微處理器的u-boot移植[J]. 武漢科技學(xué)院學(xué)報(bào), 2007(11):1-4.
[6] MPC8308RDB PowerQUICCII Pro Integrated Communications Processor Family Reference Manual[Z]. 2007.
[7] Freescale. Programming Enviroments Mannual for 32-bit Implementation[Z]. 2005.
Research and design of fiber bypass system platform based on 10Gbit/s transport system
HUANG Zhi-peng, WU Zhao-xue
(Chongqing University of Posts and Telecom, Chongqing 400065, China)
This paper designed a kind of fi ber bypass instructment based on 10 Gbit/s transport system, which protects the node devices of backbone network, we focus on the key issues during the u-boot transplantation process base on MPC8308ERDB . With the u-boot provids the most abundant supports for the PowerPC processors, and combined with the BSP source codes, analysed the compliation and conf i guration process of the u-boot,and fi nally emphatically analyzed the transplantation of the u-boot.
fi ber bypass instructment; u-boot; transplantation
TN802
A
1008-5599(2013)12-0051-04
2013-09-10