第 23 卷 第 2 期 南 京 邮 电 学 院 学 报 Vol. 23 N o. 2
2003 年 6 月 Journal of N anjing U niversity of Posts and T elecommunicat ions Jun. 2003
文章编号: 1000- 1972( 2003) 02- 0071- 03
基于VxWorks的板级支持包的开发
朱凌众, 李立恒, 居 悌
( 南京邮电学院 计算机科学与技术系, 江苏 南京 210003)
摘 要: 介绍了板级支持包( BSP) 的开发, 主要结合 Intel ixp2400 网络处理 器来介绍 一个具体 BSP 的开
发过程, 其中包括内存分配, 中断处理以及串口和网口的驱动过程。
关键词: 板级支持包; Vx Works 操作系统 ; T ornado 集成开发环境
中图分类号: T P316 文献标识码: B
收稿日期: 2002-03-19
1 引 言
一个成熟的商用操作系统, 其被广泛应用的必
要条件之一就是能够支持众多的硬件平台, 并实现
应用程序的硬件无关性。通常, 这种无关性都是由
操作系统来实现的。但是, 对于嵌入式系统, 它没有
像 PC 机那样所遵循的工业标准, 各种嵌入 式系统
所处的硬件环境不同, 这就决定了它无法完全由操
作系统来完成上层软件与底层硬件之间的无关性。
因此, 当今的各种嵌入式系统, 都采用了分层的设计
方法。它将系统中与硬件直接相关的一层软件独立
出来, 称之为板级支持包( BSP ) 。BSP 和 VxWorks
操作系统的层次关系如图 1 所示。
图 1 BSP 和 VxWorks 操作系统的层次关系图
通常, 这部分软件是针对某个具体的板子而设
计的, 并且对于用户( 指开发者) 也是开放的, 用户可
以根据自己的硬件需求对其作二次开发, 从而使操
作系统能应用于不同的硬件环境。BSP 在系统中的
角色, 类似于 BIOS 在 P C 机中的地位。
2 VxWorks 的引导过程
VxWorks 的引导过程如图 2 所示, 它主要包括
两条流程, 第一条是从 romInit 函数到 bootCmdLoop
函数, 主要是为了下载 VxWorks 镜像文件; 第二条
是从 sysInit 函数到 usrAppInit 函数, 在 这个过程
中, 各种硬件的驱动真正被加载。当系统 加电后,
CPU 会固定到某个地址去执行, 比如 ixp2400 处理
器的 Reset 地址是 0x c4008000, 它就是 ROM 中 ro-
mInit 函数的起始位置。
这个函数主要完 成一些简单的硬件初始化工
作, 比如对 CP U 的一些控制寄存器, 内存和堆栈指
针初始化, 调用 romStart 函数等等。由于在 ROM
中运行程序的速度( 8 位读数据) 相对于 RAM( 16 位
读数据) 要慢的多, 所以 romStart 对 RAM 进行一次
读写校验后, 就把剩余的程序从 ROM 拷贝到 RAM
中( 如果是压缩文件, 必须解压缩) , 并把 RAM 中的
其余空间清零, 改变 PC 指针到 RAM 的入口, 继续
执行。这个 过程见图 3 的上半部 分所 示( 对应于
ixp2400 处理器) 。