Vxworks BSP开发
1. 板级支持包的介绍
2. VxWorks映象及启动顺序 3. VxWorks预内核初始化 4. BSP的配置 5. BSP的开发
6. VxWorks下设备驱动程序概述
板级支持包的介绍
一.板级支持包简述
在VxWorks系统中,对BSP的简单描述为:介于底层硬件环境和VxWorks之间的一个软件接口,它的主要功能是在系统加电后初始化目标机硬件、初始化操作系统、提供部分硬件的驱动程序。具体功能包括:
(1) 初始化。所谓初始化就是指从系统上电复位开始,到VxWorks开始初始化用户应用(即系统执行到usrAppInit函数处)的一段时间内系统所执行的过程。这个过程主要包括三个部分的工作:
·CPU初始化。初始化CPU的内部寄存器。
·目标机初始化。初始化控制芯片的寄存器,I/O设备的寄存器,为整个软件系统提供底层硬件环境的支持。
·系统资源初始化。为操作系统及系统的正常运行做准备,进行资源初始化,如空间分配等等。
(2) 使VxWorks能够访问硬件驱动程序。这主要是指VxWorks包含必要的设备驱动程序和相关设备的初始化。
(3) 在VxWorks系统中,集成了与硬件相关的软件和部分与硬件无关的软件。
二.板级支持包与VxWorks
从上面的图中,我们可以看到,BSP不是设备驱动程序,因为设备驱动程序可以访问硬件设备,同时,相同设备的驱动程序可以不作修改的从一个环境移植到另外一个环境当中去,而BSP只能在特定的环境下面运行。
简单地说,BSP开发人员要完成两个方面的工作: (1) 完全支持BSP管理设备
(2) 通用设备驱动程序的集成工作 三.BSP的组成
BSP包含的程序是提供VxWorks访问目标机硬件环境的主要接口。BSP主要由下面几类文件组成。
1. 源文件
主要是由C语言编写的代码所组成的文件,也有一小部分由汇编语言编写而成。 2. 头文件
包含针对CPU板的硬件定义以及内存定位定义的文件。 3. Make file文件
控制构造所有类型映象的文件 4. 派生文件
由其他文件衍生而成的文件。
BSP的组成文件主要包含在以下四个目录里面: · ..\\Tornado\\target\\config\\all
· ..\\Tornado\\target\\config\\comps\\vxWorks · ..\\Tornado\\target\\config\\comps\\src · ..\\Tornado\\target\\config\\bspname
1. ..\\target\\config\\all目录下的文件
这个目录下的文件作为VxWorks体系结构产品的一部分交给用户.如果不是特殊需要的话,没有必要修改这些文件。简单的说,config\\all下的文件并不是特定BSP的一部分,而是所有BSP的公共部分。该目录下主要包含如下几个文件:
(1) bootConfig.c
引导ROM映象的主要初始化和控制文件. (2) bootInit.C
bootInit.c包含引导ROM映象第二阶段初始化的代码。该文件定义了romStart()函数,romInit.s中的romInit()函数执行完毕后会跳转到romStart()函数。该函数执行必要的代码压缩和ROM型映象的重定位。 (3) dataSegPad.c
它保证了代码段和数据段不会共享一个MMU. (4) usrCongif.c
包含了VxWorks映象的主要初始化代码。不同于bootInit.c文件,它是非常完整的。 (5) version.c
提供了VxWorks的版本号、构造映象的日期和时间等信息。 (6) configAll.h
设置了所有VxWorks映象的默认设置。在这个文件里定义的变量是一些通用的设置,如果需要的VxWorks映象不同于默认的设置,使用config\\bspname目录下的config.h文件中定义的宏来替换这里定义的默认宏。
2. ..\\target\\config\\bspname目录下的文件
这个子目录包含系统或者硬件相关的BSP文件,主要由下面的一些文件组成。 (1) Readme文件
Readme文件包含了这个BSP的发布记录。它记录了每次发布版本、修订版本和新版本
上面所做的工作。
(2) Makefile和depend.bspname文件
Makefile文件控制使用命令行方式构造映象。从VxWorks5.2开始,标准的make工具是GNU make。BSP make系统包含了位于target\\h\\make目录下的make子文件。如果某个相关性文件不存在,make将自动产生一个depend.bspname文件,它可以用来追踪所有模块的相关性。 (3) Config.h文件
Config.h文件包含了所有头文件和CPU板相关的特殊定义。标准的config.h包含下面的内容:
· BSP版本号和修订版本号 · 包含configAll.h文件
· 高速缓冲存储器和MMU的配置 · 共享内存网络定义
· 目标板上的内存地址和大小 · ROM地址和大小 · 非易失性RAM · 默认的引导参数 · 时间戳驱动程序支持 · 外部总县地址映射 · 网络设备和中断向量 · 包含bspname.h文件 (4) romInit.s文件
该文件包含引导ROM和基于引导ROM的VxWorks映象的入口初始化汇编代码。入口点为romInit()函数,是系统加电启动后首先执行的代码。同时它也设置了启动参数类型,并把该参数传递给通用的romStart()函数。如果硬件需要立即内存映射或者设置特殊的寄存器,则在这里处理。
一个普遍的错误是BSP的开发人员企图在romInit.s文件中进行过多的初始化操作。实际上,大部分其他初始化操作是被推迟到sysHwInit()函数中进行的。另外,romInit.s文件中的代码不应当被其它的函数或者模块所调用。 (5) sysALib.s
这个文件包含目标机体系结果所决定的、与系统有关的汇编语言程序。所有BSP程序应当用C语言来编写,然而由于编译等原因需要用汇编语言程序编写的时候,可以把所有汇编语言编写的程序代码放在 sysALib.s中。
sysALib.s文件里的sysInit()函数是VxWorks映象的入口点。系统引导之后,首先执行该段代码。 (6) sysLib.c
这个文件包含目标机体系结构所决定的、与系统有关的C程序。这些程序提供板极接口,基于这些板极接口,VxWorks和应用程序的构造和系统无关。sysLib.c文件中包含了对驱动程序的安装和初始化工作,这些工作具体在一些子文件中实现,比如sysSerial.c、sysScsi.c、sysNet.c等。使用子文件的目的是为了保持设备驱动程序的安装和初始化不随结构的变化而改变。 (7) sysSerial.c
SIO设备串行I/O设备驱动程序的安装和初始化 (8) sysScsi.c
包含SCSI-2设备驱动程序的安装和初始化 (9) sysNet.c
网络接口程序的安装和初始化 (10) bspname.h
与目标板有关的特殊信息的定义 (11) target.nr
这个文件了运行VxWorks必须需要的目标板特殊信息 (12) configNet.h
网络配置头文件。主要包含END网络设备驱动程序的配置。
3. ..\\target\\config\\comps\\vxWorks目录下的文件
VxWorks实时内核基本模块描述文件. 4. ..\\target\\config\\comps\\src目录下的文件
VxWorks实时内核基本模块配置文件. 四.BSP开发
下面对BSP的开发做一下宏观上面的描述:
(1) BSP的开发步骤应当是一个逐步增加应用的过程 (2) 开发过程中的软、硬件支持(ICE、BMD) (3) 开发效率的提高 (4) BSP的调试方法 仿真器 ·ICE调试法 主机 映象 并口 ·BDM调试法 主机 BDM适配器 并口 ·黑调试法
利用亮灯、示波器等手段。
数据线 目标板 数据线 目标板BDM口