VxWorks是一种由美国WindRiver公司推出的嵌入式实时操作系统,它的核心特性包括高可靠性、实时性以及可裁减性,可以支持多种不同的CPU架构。VxWorks操作系统的一个显著特点是它的可移植性,这意味着应用程序的代码在很大程度上是独立于目标硬件的。这种可移植性的实现,很大程度上依赖于板级支持包(Board Support Package,简称BSP)的使用。
BSP是一个重要的组件,它作为连接硬件和操作系统的桥梁,提供了一种标准化的方法来处理硬件特定的细节。因此,BSP的主要任务是为嵌入式操作系统屏蔽掉目标硬件环境的差异性。BSP由初始化和驱动加载两大部分组成。初始化过程涵盖了从系统上电复位开始到操作系统正常运行准备就绪的所有步骤,包括寄存器操作和直接I/O操作。驱动加载部分负责根据硬件设备类型调用相应的驱动程序接口,实现硬件设备的初始化,例如串口、网口等设备的驱动加载。
在BSP的开发过程中,开发人员需要完成两方面的工作:一是全面支持BSP管理的所有设备,二是集成通用的设备驱动程序。这要求BSP开发人员不仅要对BSP专用的驱动程序提供支持,而且要将通用的设备驱动程序集成在一起。在VxWorks环境下,硬件驱动程序分为通用性和BSP专用性两类,在开发BSP时需要分别考虑。
BSP文件的组成包括源代码、头文件、MAKE文件、派生文件以及二进制驱动程序模块。这些文件通常位于VxWorks/target/config/all和VxWorks/target/config/bspname这两个文件夹内。all文件夹包含了所有BSP共享的文件,如bootConfig.c、bootInit.c、usrConfig.c等,它们主要包含了VxWorks配置的默认定义以及BootRom的初始化控制代码,一般情况下不建议修改。而bspname文件夹则包含了用户自定义的BSP文件,通过编译、链接以及makefile和depend.bspname等文件的控制,这些文件最终生成操作系统映像。
为了更好地理解BSP的作用和它在嵌入式系统中的位置,可以通过图1所示的BSP在系统中的层次来形象地展示BSP与VxWorks之间的具体关系,以及BSP在目标应用系统中的地位。图中清晰地展现了BSP作为一个底层软件开发包,如何介于底层硬件与上层软件之间,起到屏蔽硬件差异、提供设备驱动和操作系统初始化的作用。
在实际应用中,WindRiver公司提供了超过200个基于特定CPU评估板的BSP,这些BSP为用户快速开发自定义目标板的BSP提供了便利。用户在开发自定义BSP时,通常会从这些已有的BSP中选取一个与目标硬件环境最接近的,然后进行必要的修改和定制,以满足特定的硬件要求。这种做法不仅节省了开发时间,而且利用了现有资源,提高了开发效率。
BSP的制作过程不仅涉及底层硬件的理解和操作,还要求开发人员具备对操作系统的深入认识,以便能够在正确的层面上进行定制和优化。因此,BSP的开发是一个复杂但关键的步骤,它决定了嵌入式系统能否在特定硬件上稳定运行,也影响了系统的性能和功能的实现。
在VxWorks环境下,BSP是一种关键的技术组件,它在嵌入式系统的设计与应用中扮演了至关重要的角色。理解BSP的概念、结构、功能以及如何开发和定制BSP,是进行嵌入式系统开发的先决条件,对于实现系统的稳定性和高效性至关重要。