馮先成,司擎華,李小鵬,張鐵男
(武漢工程大學電氣信息學院,湖北 武漢 430074)
VxWorks操作系統主要有板級支持包(Board Support Package,以下簡稱:BSP))、微內核(wind)、網絡系統、文件系統、輸入輸出(input/output ,I/O)系統[1].BSP是指支持一個目標板的硬件系統正常運行的與硬件密切相關的函數集合,主要包括目標系統啟動時的硬件初始化例程和目標板上控制各個硬件設備正常運行的驅動程序,還要提供VxWorks與硬件環境之間的主要接口.根據目標板的硬件構成,BSP設置各種與硬件參數有關的宏,設置內存映射表,編寫和修改相應的設備驅動程序,連接中斷服務程序,根據上層和系統的需要生成相應的鏡像(image)文件,創建相應的任務,并啟動應用程序[2].
網絡交換系統的主控交換的BSP包括兩大部分:Motorola嵌入式處理器8240(MPC8240)最小系統和相關外圍設備的驅動.
MPC8240主控交換板最小系統包括:中央處理器(CPU)、同步動態隨機存儲器(SDRAM)和閃存(Flash),閃存包括用于系統自啟動的根配置閃存(BOOT FLASH)文件和用于程序、數據存儲的程序閃存文件兩部分、串口驅動程序,82559網口驅動程序,外設部件互連接口9030(PCI9030) 接口控制器、調試接口及部分控制邏輯等.最小系統BSP的目標就是通過配置最小系統使之能夠完成配置過程,并可以使用網口和串口進行上層軟件的調試.
主控板主要由下列a-g共7個部分組成,主控板結構框圖如圖1.
a.Motorola的8240CPU.8240集成了一個PCI橋-MPC107,一個嵌入式可編程中斷控制器EPIC,一個存儲器直接訪問DMA控制器及I2C控制器等.
b.Intel 82559 10M/100M自適應以太網芯片.
c.Galileo 48304交換芯片.
d.16552串口芯片.
e.HDLC芯片.
f.一片SST 39VF040存放Bootrom.
g.四片ATMEL:AT49B1614AT-90TI用于存放版本和TMS的數據.

圖1 主控板結構框圖Fig.1 Structure of main control board
設計、調試BSP軟件,首先分析整個操作系統從上電初始化開始的執行流程,BSP執行處理流程如圖2所示[3-4].
當系統上電后,MPC8240的CPU會在0x02800100執行,這段地址空間物理上是對應于一塊配置只讀內存,其中保存著操作系統的引導代碼,VxWorks按圖2所示的流程引導過程如下:
a.CPU 初始化:文件romInit位于CPU的復位向量中,一個向量一般最多為256字節,因此不能放太多的程序在此位置.這里僅僅完成如下工作[5]:
①關閉中斷,初始化CPU的一些基本寄存器
②配置SDRAM,使其可以使用
③初始化堆棧指針,調用romStart文件
b.其它初始化:包括內存初始化、CACHE初始化、BSS初始化、硬件初始化.CPU的一些初始化是在sysIint函數中完成的.系統真正的板級硬件初始化是在 sysHwInit函數中完成的;

圖2 BSP處理流程Fig.2 Processing flow of BSP
c.內核初始化:所有的板級硬件初始化完成后,就開始操作系統核心代碼的加載,由其建立多任務環境,創建根任務usrRoot文件;
d.輸入輸出系統初始化:在根任務中,繼續完成輸入輸出設備,網絡協議棧及設備驅動的加載工作.
在VxWorks引導成功后,它會在根任務usrRoot中調用usrAppinit函數,用戶可以在這個函數中創建自己的任務或者啟動相應的軟件模塊.
2.2.1 修改TGT_DIRsrcdrvpcipciConfigLib.c程序
a.保留原來所有的程序不動
b.增加一個函數如下,該函數可以找出一臺PC上同種類型的多個網卡,而原來的函數(pciFindDevice)只能找出一個網卡
STATUS pciFindDeviceArray
( int vendorId,/*vendor ID*/
int deviceId,/*device ID*/
int index,/*desired instance of device*/
int*pBusNo,/*bus number*/
int*pDeviceNo,/*device number*/
int*pFuncNo,/*function number*/
int*pDeviceNum /*The Card Device Num-ber Chen.AiMin*/
)[6]
2.2.2 修改TGT_DIRconfigpcPentiumsysEl3c90xEnd.c程序
a.修改sysEl3c90xPciInit函數,增加對同種類型的多塊網卡進行初始化,原來的只能對一塊3C905網卡進行初始化;
b.修改sysEl3c90xEndLoad函數,原來該函數只是默認第一個網卡,現支持多個3C905網卡;
c.該函數前面的LAN_CARD_NUM宏定義了該PC有最多可以有幾塊3C905網卡,現在定義成3,最好不要修改.
2.2.3 修改Configer.h 定義BSP VERSION、default-boot-line的BOOT參數、Console-Baud-Rate、RAM-HIGH-ADRS、RAM-HIGH-ADRS、ROM-BASE-ADRS、ROM-TEXT-ADRS.
#define RAM_HIGH_ADRS 0x00450000 /* RAM address for ROM boot
#define RAM_LOW_ADRS 0x00100000 /* RAM address for kernel */
2.2.4 修改MAKEFILE 為了便于對BOOTROM中bootConfig.c進行修改,可以把boot-Config.c從all目錄拷入相應的BSP目錄(pcPentium目錄),修改該目錄下的MAKEFILE,增加如下一行:BOOTCONFIG = bootConfig.c
修改后的BSP運行結果:
CPU: EST est8240-MPC8240(603e)
Version: 5.4
BSP version: 1.2/2
Creation date: Jan 14 2012, 19:56:33
Press any key to stop auto-boot…
6
[Boot]: p
boot device: dcf
unit number: 0
processor number: 0
host name: wx
file name: vxWorks
inet on ethernet (e): 10.21.14.56
host inet (h): 10.21.14.188
gateway inet (g): 10.21.1.254
user (u): wx
ftp password (pw): 3592
flags (f): 0x0
target name (tn): est8240
a.根據BSP生成BOOTROM,注意生成時選擇TORNADO→Build→Build Boot Rom 選擇BSP,注意選擇生成Bootrom_uncmp.hex.
b.打開VisionClick,將主機、仿真器和CPU板連通,在Terminal窗口下輸入命令in,將仿真器中配置好的CPU相關寄存器的值下載到板子上去.
c.下載bootrom_burn_amd.bdx 到目標板,這段代碼存放在SDRAM中的0x01800100開始的一段地址中(如果燒寫SST39VF040的FLASH芯片,則使用bootrom_burn_sst.bdx).
d.將生成好的Bootrom_uncmp.hex在Vision-Click中轉化為bootrom_uncmp.bdx,下載bootrom_uncmp.bdx到目標板.
e.輸入命令以運行燒寫bootrom程序代碼到flash中去,方法為在Terminal窗口下輸入命令 go 01800100.
f.用仿真器察看內存 0x01c200a0 地址域會看到進度指示,包括操作時當前寫操作地址、失敗計數.
g.最后直到在0x01c200b0顯示DONE表示成功,FAIL表示失敗,整個過程大約30 s左右.
h.點擊VisionClick→Run→Halt execution,或者直接點擊紅色按鈕Holt Target停止板子上程序的運行.
i.重新加電或者按復位鍵,打開超級終端則可看到引導信息的輸出.
實驗步驟如下:
a. 首先按照2.2節修改BSP文件.
b. 編譯BSP文件,生成VxWorks鏡像文件[7],如圖3所示.
步驟1:備份并編輯.../_BSP_WDB/config.h (可選),在config.h中找到宏定義
#define DEFAULT_BOOT_LINE “lsi(0,0)host:vxWorks h=192.168.0.113 e=192.168.0.127 u=my pw=you tn=l2sw24 f=0x00”
根據需要修改參數:
h = 主機IP地址
e = 目標機IP地址
u = ftp server 用戶
pw = ftp server 用戶口令
tn = 目標板網絡機器名
說明:一般不修改,可在目標機開機時,通過引導提示行,用戶重新配置
步驟2:進入DOS命令行方式, 進入 .../_BSP_WDB
步驟3:執行make bootrom.hex.生成VxWorks鏡像文件bootrom.hex


圖3 8240BSP的安裝、VxWorks鏡像文件的生成Fig.3 Installation of 8240BSP, VxWorks file

圖4 通過FTP下載鏡像文件到目標板Fig.4 Download the image file to target board with FTP
d.通過主機的Telenet命令遠程登陸目標,進行調試.輸入help,可以查看命令行信息,如圖5.用‘P’命令查看BOOT參數,超級終端打印出目標板BOOT ROM的參數配置,在命令提示符下輸入“c”命令,把HOST 的IP和網關修改為所用HOST的,把FILE NAME欄改為VXWORKS,把USER和FTP PASSWORD改為FTP SERVER剛才設置的.輸入后,下載成功,WDB(WIND RIVER 調試)準備好了.

圖5 目標板調試Fig.5 Test of target board
MPC8240 是通信領域嵌入式產品使用較多的芯片,針對通信領域該類芯片的最小化系統,筆者基于MPC8240的最小化系統提出一種可靠的BSP設計流程方案,完成BSP源代碼的設計、移植燒制與測試.測試證明本方案有較好的可靠性和良好的可操作性,對于Vxworks上層應用軟件和底層硬件驅動的并行開發有著很重要的意義.
參考文獻:
[1] 李明,胡立德,尹安治.軍用嵌入式系統的可靠性設計[J].電子元器件應用,2007,9(10):71-72,75.
[2] 馮先成,李寒,張鐵男.基于MPC850 VxWorks系統的BSP設計[J].計算機與數字工程,2012,40(6):39-43,75.
[3] 蔣鯤鵬, 蘆東昕, 繆敬. Linux與VxWorks的板級支持包開發的比較與分析[J].計算機工程,2003,29(22):51-53.
[4] 隋霞, 許錄平. 基于VxWorks的BSP技術分析[J]. 微計算機信息,2006, 22(23):86-88.
[5] 王韜,印勇,劉國金.基于VxWorks的嵌入式系統實驗教學設計[J].實驗室研究與探索,2007,26(1):52-54,105.
[6] 孫海彬.支持PCI總線的CORBA可插拔協議研究與實現[D].長沙:國防科技大學,2010.
[7] 王韜,楊士中,譚曉衡.基于MPC860和VxWorks的嵌入式中斷處理設計[J] .電訊技術,2005,45(1):45-50.
[8] 王柯.基于Pentium4處理器的VxWorks板級支持包設計[J].電子科技,2011,24(6):57-59.