《武汉工程大学学报》  2012年11期 55-59   出版日期:2012-12-10   ISSN:1674-2869   CN:42-1779/TQ

嵌入式处理器8240的板级支持包的设计与实现



0引言VxWorks操作系统主要有板级支持包(Board Support Package,以下简称:BSP))、微内核(wind)、网络系统、文件系统、输入输出(input/output ,I/O)系统\[1\].BSP是指支持一个目标板的硬件系统正常运行的与硬件密切相关的函数集合,主要包括目标系统启动时的硬件初始化例程和目标板上控制各个硬件设备正常运行的驱动程序,还要提供VxWorks与硬件环境之间的主要接口.根据目标板的硬件构成,BSP设置各种与硬件参数有关的宏,设置内存映射表,编写和修改相应的设备驱动程序,连接中断服务程序,根据上层和系统的需要生成相应的镜像(image)文件,创建相应的任务,并启动应用程序\[2\].1硬件系统网络交换系统的主控交换的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.1Structure of main control board2BSP处理流程、移植与烧制2.1BSP处理流程设计、调试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函数中完成的;图2BSP处理流程
Fig.2Processing flow of BSPc.内核初始化:所有的板级硬件初始化完成后,就开始操作系统核心代码的加载,由其建立多任务环境,创建根任务usrRoot文件;d.输入输出系统初始化:在根任务中,继续完成输入输出设备,网络协议栈及设备驱动的加载工作.在VxWorks引导成功后,它会在根任务usrRoot中调用usrAppinit函数,用户可以在这个函数中创建自己的任务或者启动相应的软件模块.第11期冯先成,等:嵌入式处理器8240的板级支持包的设计与实现
武汉工程大学学报第34卷
2.2BSP移植
2.2.1修改TGT_DIR\src\drv\pci\pciConfigLib.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_DIR\config\pcPentium\sysEl3c90xEnd.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_ADRS0x00450000/* RAM address for ROM boot #define RAM_LOW_ADRS0x00100000/* 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
2.3BOOTROM的烧制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. 重新加电或者按复位键,打开超级终端则可看到引导信息的输出.3实验结果实验步骤如下: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.hexc. 将镜像文件通过FTP文件传送协议下载到目标板的闪存中,把HOST主机的串口和目标板的串口连接起来,HOST的以太网口和目标板的调试以太网口连接起来.打开“开始程序TORNADOVxWORKS COM1(超级终端)和FTP server”,在FTP server的Secuirtyusers/rights,出现如图4对话框,点击,填入用户名和密码,再在栏填入,生成VXWORKS
图38240BSP的安装、VxWorks镜像文件的生成
Fig.3Installation of 8240BSP, VxWorks file映象的位置,按按键.把目标板上电,过一会在超级终端打印出如图4信息\[8\].图4通过FTP下载镜像文件到目标板
Fig.4Download 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.5Test of target board4结语MPC8240 是通信领域嵌入式产品使用较多的芯片,针对通信领域该类芯片的最小化系统,笔者基于MPC8240的最小化系统提出一种可靠的BSP设计流程方案,完成BSP源代码的设计、移植烧制与测试.测试证明本方案有较好的可靠性和良好的可操作性,对于Vxworks上层应用软件和底层硬件驱动的并行开发有着很重要的意义.