在vxWorks下的BSP开发指南
VxWorks6.6 pcPentium BSP 使用说明

基本概念pcPentium/2/3/4 - 386/486 和Pentium/2/3/4引言该参考文档提供运行pcPentium,pcPentium2,pcPentium3和pcPentium4的VxWorks BSP 的板卡特性信息。
在板卡上运行VxWorks之前,核实板卡运行在正确的配置,通过检测是否采用原厂ROM,是否设置正确的跳线和连接串口读取配置信息。
请注意,pc386,pc486,pcPentium,pcPentium2,pcPentium3和pcPentium4的BSP是针对通用PC机主板的通用BSP包。
为了达到最佳效果,本文档应结合板卡供应商的说明文档一起使用。
如果此BSP(pcPentium4)是用于一些特定的目标板,包括英特尔E7520芯片组(Allagash),那么vxBus串行驱动的支持是必需的。
若想以WDB连接方式通过任何串行端口载入bootrom和系统镜像,都必须配置支持vxBus串行驱动程序。
见第3节使用vxBus串行驱动的说明:“创建一个BootROM镜像”。
引导过程当一个标准的采用AT电源方式的计算机开机时,系统的BIOS代码会被加载并引导执行。
引导加载程序是基于8088的16位汇编语言。
BIOS从引导扇区引导启动,这可能是如下几种方式:软盘,硬盘,或一些其他的介质如ROMCARD或TFFS卡。
BIOS找到引导加载器后将转交给其继续执行。
引导加载程序找到bootrom.sys文件,将它载入内存,并跳转到romInit开始执行。
TrueFFS支持该BSP支持TrueFFS及其配置。
要使用TrueFFS,安装软件并在BSP的config.h文件中定义包含INCLUDE_TFFS。
TrueFFS被设计为使用M - Systems公司的DiskOnChip 2000(闪存)和双PCMCIA插槽的采用dosFs的磁盘驱动。
如果你想从DiskOnChip启动,更改config.h中SYS_WARM_TYPE的定义,由SYS_WARM_FD变为SYS_WARM_TFFS。
OBT-BSP-VxWorks5.4 应用开发手册说明书

OBT-BSP-VxWorks5.4应用开发手册V 2.0珠海欧比特控制工程股份有限公司2010年10月17日欧比特严禁复制目 录1引言.......................................................................................................................................................1 1.1编写目的.......................................................................................................................................1 1.2定义...............................................................................................................................................1 2 用途......................................................................................................................................................1 3 软件安装..............................................................................................................................................2 4 创建ROM映像........................................................................................................................................3 4.1 新建工程......................................................................................................................................3 4.2 选择BSP ........................................................................................................................................5 4.3 修改V X W ORKS 的宏..........................................................................................................................5 4.4 设置波特率. (6)4.5 添加应用程序..............................................................................................................................7 4.6 设置应用程序入口......................................................................................................................8 4.7 选择映像类型 (9)4.8 创建映像文件............................................................................................................................10 5 映像烧写及运行................................................................................................................................115.1 烧写最终映像方法.....................................................................................................................11 5.2 启动VXWORKS.........................................................................................................................14 6 移植注意事项....................................................................................................................................146.1 不同系统时钟频率的修改........................................................................................................14 6.2 不同SRAM数据线宽度的修改....................................................................................................15 6.3 不同SRAM大小的修改................................................................................................................15 欧比特严禁复制1引言1.1编写目的这份手册向读者介绍如何使用OBT-BSP-VxWorks5.4,主要介绍在Tornado 集成开发环境中如何开发针对S698系列开发板的VxWorks 5.4应用软件,以及生成最终烧写程序的过程。
VxWorks BSP主要配置文件注解

VxWorks BSP 主要配置文件 config.h 和 Makefile 注解 config.h /* This file contains the configuration parameters for the CPU evaluation board. */ #ifndef INCconfigh #define INCconfigh /* BSP version/revision identification, before configAll.h */ #define BSP_VER_1_2 1 #define BSP_VER_1_1 1 #define BSP_VERSION "1.2" /* A Tornado 2.0 BSP */ #define BSP_REV "/3" /* 0 for first revision */ #include "configAll.h" /* 这个文件定义了 VxWorks 所有的缺省设置 */
*/ #define DEFAULT_BOOT_LINE \ "Emac(0,0)405GP:vxWorks h=172.16.1.159 e=172.16.254.52 \ u=xxx pw=xxx tn=vxTarget" /* * 内存设置. * 如果定义了 LOCAL_MEM_AUTOSIZE 则 SDRAM 的大小会在 Boot 时指定 */ #undef LOCAL_MEM_AUTOSIZE /* 运行时内存大小 */ #define LOCAL_MEM_SIZE 0x02000000 /* 32MB 内存缺省 */ #define LOCAL_MEM_LOCAL_ADRS 0x00000000 /* 内存基地址为 0 */ #define USER_RESERVED_MEM 0 /* ቤተ መጻሕፍቲ ባይዱee sysMemTop() */ /* * Define SDRAM_ECC_ENABLE to enable ECC if an ECC SDRAM DIMM is detected * during SDRAM auto-configuration. If not defined, ECC will not be enabled * if an ECC SDRAM DIMM is detected, and the DIMM will be used as a normal DIMM. */ #undef SDRAM_ECC_ENABLE /* 解释: 这里主要设置系统的内存分配定义,若分配不当,则系统不能正常加载和运行. ROM_TEXT_ADRS, ROM_SIZE, RAM_HIGH_ADRS, 和 RAM_LOW_ADRS 在 config.h 和 Makefile 文件中 都要定义,且必须要保持一致,这些地址的定义一定要参照 VxWorks 加载执行过程,硬件手册,MMU 和 VxWorks 的大小进行.主要原则是保证 VxWorks image 在 ROM 和 RAM 中都要有一定的运行空间且高效运 行,可参见 VxWorks BSP 和启动过程. */ #define ROM_BASE_ADRS 0xfff80000 /* ROM 的基地址 */ #define ROM_TEXT_ADRS (ROM_BASE_ADRS + 0x100) /* 程序指针和堆栈指针 */ #define ROM_WARM_ADRS (ROM_TEXT_ADRS+0x0004) /* 热启动入口地址 */ #define ROM_SIZE 0x0007f000 /* ROM 大小 512KB */ #define RAM_LOW_ADRS 0x00010000 /* RAM 低地址运行 vxWorks */ #define RAM_HIGH_ADRS 0x00C00000 /* RAM 高地址存储 bootrom */ #define USER_RESERVED_MEM 0 /* 用户保留地址 */
基于VxWorks的BSP概念与开发

中 bo R M 包 括被压 缩 的 b t O 镜像 ( or 、 ot O o R M b t m) 非  ̄ o
I sm i xosi r — TPP /S t VWr ri 0 ye kL a s be C/ I
F l Sy t ie s em MUX
压 缩 的 b t O 镜像(ot m u c p和驻 留 R M 的 o M R b o o _ nm ) r O b o R M 镜像 (o t m rs ̄种 类型 { ot O bo o _e) r 可 引导 镜像 ( o t l I g ) B oa e ma e:是 将 引导 程 序和 b vWok 融 为一体 的镜像 , 常常是 最终 产品 , 括不驻 x rs 它 包
能包括:
·
自己定制 的 BS P文件 。
单 板硬 件 初始化 主要是 C U的初 始化 ,为 整个 P
经过编 译 .链接 ,并 在 mae l和 dp kfe c∞dbp a e i snm 等文件 的 控制 下 ,原程 序最 后将 生成镜 像 V W o 的 x  ̄s 可 下载 镜像( odbe m g)实 际包 括两部 分 , L aalI ae} 一
宏:
·P C U:目标板 C U的类型, P
所文 在伴 执也 行 置 ·O L T O }主机 的 mae k 工具 ,为
GNU , · GT T
_
功 磨
t 存 蛊动类型 .屏 蘸中断
2 韧舶化内存.韧 始 ̄:h . a e 屏蘸cce c ah;
,韧 始化C U 主要 是p 印 糟s 韧 舶化为被拷 贝镜 P c 口
V n en d K r el
l _
lc r ■ SC - C
龙芯CPU开发系统vxWorks BSP规范_1.02

4.1.3 workbench-3.2 ....................................................................................................................................... 5
9 设备驱动模型 ............................................................................................................................................ 7
3 概述 ............................................................................................................................................................ 1
5.1
三方库编译规范 ................................................................................................................................... 5
5.2 BSP 编译规范 ............................................................................................................................................ 5
vxWorks设备驱动开发指南(2)

vxWorks设备驱动开发指南(2)vxWroks 6.8设备驱动开发指南――写具体类设备驱动3 DMA驱动3.1 简介本章描述了DMA驱动。
3.2 概要有些硬件设计包括一个通用DMA引擎,处理来自DMA的访问,或到外部设备,或从内存到内存。
这些DMA引擎通常集成在片上CPU系统中。
DMA驱动类为系统中其它设备提供DMA引擎服务的一套标准方法。
提供的vxbDmaLib库提供用于DMA引擎。
这个DMA库提供的函数是vxbDmaChanAlloc( )和vxbDmaChanFree( )。
3.3 VxBus驱动方法由vxbDmaLib库提供的函数充分使用三个VxBus驱动方法:■?{vxbDmaResourceGet}( ) {vxbDmaResourceRelease}( ) {vxbDmaResDedicatedGet}( )■?■?DMA驱动通过这些方法的关联函数提供对它们服务的访问。
3.3.1 {vxbDmaResourceGet}( ){vxbDmaResourceGet}( )方法用于DMA库来分配一个DMA驱动管理的设备上的DMA通道。
原型如下:STATUS {vxbDmaResourceGet} (VXB_DEVICE_ID pInst, VXB_DEVICE_ID pReqDev, VXB_DMA_REQUEST * pReq )这个原型,pInst指DAM设备本身,pReqDev指请求一个DMA通道的设备,和pReq是一个指针,指向一个结构,描述DMA通道的期望的属性。
VXB_DMA_REQUEST结构定义在:installDir/vxworks-6.x/target/src/hwif/h/util/vxbDmaDriverLib.h 结构定义如下:typedef struct vxbDmaRequest {VXB_DEVICE_ID instance; /* DMA requestor device id */ UINT32 minQueueDepth; /* minimum queue depth requested */UINT32 flags; /* flags used during DMA allocation */VXB_DMA_RESOURCE_ID pChan; /* DMA channel id */ void * pDedicatedChanInfo; /* dedicated channel information */ } VXB_DMA_REQUEST;这个结构很大程度上对应传递给vxbDmaChanAlloc( )的参数。
vxworks bsp制作概要

VxWorks BSP制作概要要了解vxworks BSP的制作,首先要对vxworks的启动过程有个大体的了解,下面我们从vxworks的启动过程开始介绍。
VxWowks的启动过程一般来说,所有的处理器执行相同的逻辑步骤初始化和加载VxWorks,但一些处理器可能会有一些特殊的步骤,而另外一些则可能跳过一些步骤。
但它们都要进行以下步骤,如:初始化处理器,并在存储器的特定位置提供一段代码(可能还有一些表)以供处理器上电或重启时运行。
这段代码设置处理器的状态,初始化存储器和存储器地址,关中断把控制权交给启动代码(bootstrapping code)。
1. 处理器首先跳到ROM的入口地址,设置状态字并创建一个哑堆栈(dummy stack);2. 跳到C程序的入口地址,根据哑堆栈中的参数决定是否清零内存RAM(如是冷启动(cold start)则清零),再把ROM段的剩余部分拷贝到RAM(如果ROM 代码是压缩的,还要解压);3. 处理器跳到RAM的入口地址(bootConfig.c),使cache无效,清零bss段,初始化向量表,进行板级初始化。
4. 启动多任务内核。
VxWorks的boot ROM本身就是一个独立的应用。
开发者可用它来通过网络启动一个VxWorks映像并和应用代码连接。
1 VxWorks启动流程romInit()——》romStart()——》sysInit()——》initVectBaseSet()——》sysHwInit()——》usrKernelInit()——》kernelInit()——》usrRoot()2文件和程序说明romInit.S:romInit()关中断,把启动类型(cold/warm)入栈,清零cache后跳到romStart的入口。
bootInit.C:romStart()把ROM代码和数据段拷贝并重定位到RAM,清零RAM的未用部分,需要的话要进行解压缩,然后跳到sysInir()的入口地址。
基于VxWorks的BSP概念与开发

vxworksbsp:. 基于VxWorks的BSP概念与开发疯狂代码 / ĵ:http://NetworkProgramming/Article33345.html基于VxWorksBSP概念与开发2002年3月B版摘 要:本文以VxWorks操作系统为例阐述了BSP概念和系统启动流程并描述了BSP开发过程关键词:BSP;VxWorks;镜像;boot Rom概述VxWorks操作系统是美国WindRiver公司于1983年设计开发种嵌入式实时操作系统(RTOS)它采用微内核结构具有支持多种处理器丰富网络协议良好兼容性和裁减性等特点同时具有动态链接和下载功能图1 BSP在VxWorks系统中地位图2 压缩可引导镜像启动过程BSP(Board Support Packet——板级支持包)是介于底层硬件和上层软件之间底层软件开发包它主要功能为屏蔽硬件提供操作系统驱动及硬件驱动具体功能包括:·单板硬件化主要是CPU化为整个软件系统提供底层硬件支持;·为操作系统提供设备驱动和系统中断服务;·定制操作系统功能为软件系统提供个实时多任务运行环境;·化操作系统为操作系统正常运行做好准备;BSP在VxWorks系统中地位见图1BSP文件在vxworks/target/config/all和vxworks/target/config/bspname文件夹里其中all文件夹里文件是所有BSP通用文件bspname文件夹文件是用户自己定制BSP文件经过编译、链接并在makefile和depend. bspname等文件控制下原最后将生成镜像VxWorks镜像可分为两类:可下载镜像和可引导镜像·可下载镜像(Loadable Image):实际包括两部分是vxWorks二是boot ROM两部分是独立创建其中boot ROM包括被压缩boot ROM镜像(bootrom)、非压缩boot ROM镜像(bootrom_uncmp)和驻留ROMboot ROM镜像(bootrom_res)三种类型;·可引导镜像(Bootable Image):是将引导和vxWorks融为体镜像它常常是最终产品包括不驻留ROM镜像和驻留ROM镜像两种类型VxWorks系统启动流程般来说所有处理器VxWorks系统启动流程都是相似但有些处理器会有些特殊步骤而另些处理器会跳过几个步骤 下面以CPU为ARM7TDMI为例具体描述(见表1)对于可引导镜像在usrConfig.c文件里执行对于可下载镜像在bootConfig.c文件里执行图2为压缩可引导镜像启动过程图示其中所用到地址说明见表2BSP开发过程建立开发环境主要是以目标板CPUBSP文件为模板在 ornado argetconfig目录下创建用户BSP目录bspname把 ornado argetconfigall下文件和BSP模板文件拷贝到该目录下根据具体情况选择合适VxWorks镜像类型修改模板MakefileMakefile文件控制镜像创建在Makefile文件里使用了将近135个宏最简单Makefile文件要包含以下宏: ·CPU:目标板CPU类型;·TOOL:主机make工具为GNU;·TGT_DIR:target路径默认为$(WIND_BASE)/target;·TARGET_DIR:BSP目录名;·VENDER:目标板生产商名;·BOARD:目标板名;·ROM_TEXT_ADRS:boot ROM入口地址(以16进制表示并且与config.h文件定义相同);·ROM_SIZE:ROM大小;·RAM_LOW_ADRS:加载vxWorks目标地址;·RAM_HIGH_ADRS:boot ROM拷贝到RAM目标地址;·HEX_FLAGS:特殊结构标记用于产生S-记录文件;·MACH_EXTRA:扩展文件用户可以加入自己目标模块;·除此以外Makefile文件还需要包括以下文件:·$(TGT_DIR)/h/make/defs.bsp:Vxworks系统运行标准变量定义;·$(TGT_DIR)/h/make/make.$(CPU)$(TOOL):提供了特别目标机结构和套编译工具如make.ARM7TDMI_Tgnu;·$(TGT_DIR)/h/make/defs.$(WIND_HOST_TYPE):提供了与主机系统有关定义;·rules.bsp:在创建目标文件时所需要规则;·rules. $(WIND_HOST_TYPE):指出创建目标文件时所需从属文件表;·如果没有用all目录下文件而是拷贝到bspname下修改并使用需要定义与这些文件有关宏如BOOTINIT=bootInit.c这样在创建镜像时就不会用all目录下文件而使用bspname目录下相应文件了;·在Makefile文件里凡是16进制数前面都无需加“0x”;bspname.h根据具体目标板设置串行接口、时钟以及I/O设备等在该文件中必须包含以下内容:·中断向量/级别·I/O设备地址·设备寄存器位含义·系统和附加时钟参数(最大和最小速率)config.h根据目标板具体情况配置宏定义注意ROM_TEXT_ADRS、ROM_SIZE、RAM_LOW_ADRS、RAM_HIGH_ADRS要与Makefile文件里定义致LOCAL_MEM_LOCAL_ADRS和LOCAL_MEM_SIZE要正确 romInit.s这是系统上电后运行第个根据具体目标板对寄存器和CPU进行设置;以CPU为ARM7TDMI为例romInit.s 需要进行工作有:·保存启动方式:对于冷启动如果CPU配置是HIGH VECTORS就设置入口地址为0xFFFF0000否则设置入口地址为0x00000000;·屏蔽中断:通过设置cpsrI_BIT和F_BIT都为1来实现还要设置中断寄存器为关模式同时设定运行模式为SVC32模式;·化堆栈指针pc和sp:堆栈指针sp指向STACK_ADRS这个宏定义为当镜像为驻留ROM时该宏值为_sdata当镜像为非驻留ROM时该宏值为_romInit这两个地址经过地址映射后都指向被拷贝镜像在RAM目标地址;·化cache屏蔽cache;·根据具体目标板需要化其他寄存器;·指针跳转到romStart并执行;bootConfig.c般不需要用户修改也可以根据具体情况做适当修改;sysALib.s与romInit.s文件实现功能相似但如果在romInit.s文件里对DRAM和内存控制器进行了化在这里不再进行这项工作;创建VxWorks镜像根据具体需要在命令行环境下利用Makefile创建各种镜像也可以在Tornado集成环境下Build菜单中选择Build Boot ROM来创建各种类型Boot ROM;除此以外如果系统硬件包括串口还要根据具体情况修改sysSerial.c文件;如果包含网络部分要修改configNet.h;如果包含NVRAM要修改bootnv.h文件总之BSP开发要根据具体目标板硬件进行结语我们已经利用基于VxWorksBSP开发包成功进行了线缆调制解调器底层软件开发在开发过程中深感BSP在整个系统软件中重要性——没有正确BSP软件整个系统启动和运行也不会正确另外需要强调是:BSP概念只是针对嵌入式操作系统而言而像DOS、WINDOWS、UNIX等BIOS操作系统是无BSP可言对同目标板而言不同操作系统BSP在本质上是样但是不同操作系统将提供不同支持库另外在BSP结构上也可能会有所不同在做BSP移植时候应该注意■参考文献1. Tornado BSP Developer誷 Kit for VxWorks User誷 GuideTornado2.0Edition 119992. Tornado BSP Developer誷 Kit for VxWorks User誷 GuideTornado 1.0.1Edition 119973. VxWorks Programmer誷 GuidesEdition 11999基于VxWorksBSP概念与开发2002年3月B版摘 要:本文以VxWorks操作系统为例阐述了BSP概念和系统启动流程并描述了BSP开发过程关键词:BSP;VxWorks;镜像;boot Rom概述VxWorks操作系统是美国WindRiver公司于1983年设计开发种嵌入式实时操作系统(RTOS)它采用微内核结构具有支持多种处理器丰富网络协议良好兼容性和裁减性等特点同时具有动态链接和下载功能图1 BSP在VxWorks系统中地位图2 压缩可引导镜像启动过程BSP(Board Support Packet——板级支持包)是介于底层硬件和上层软件之间底层软件开发包它主要功能为屏蔽硬件提供操作系统驱动及硬件驱动具体功能包括:·单板硬件化主要是CPU化为整个软件系统提供底层硬件支持;·为操作系统提供设备驱动和系统中断服务;·定制操作系统功能为软件系统提供个实时多任务运行环境;·化操作系统为操作系统正常运行做好准备;BSP在VxWorks系统中地位见图1BSP文件在vxworks/target/config/all和vxworks/target/config/bspname文件夹里其中all文件夹里文件是所有BSP通用文件bspname文件夹文件是用户自己定制BSP文件经过编译、链接并在makefile和depend. bspname等文件控制下原最后将生成镜像VxWorks镜像可分为两类:可下载镜像和可引导镜像·可下载镜像(Loadable Image):实际包括两部分是vxWorks二是boot ROM两部分是独立创建其中boot ROM包括被压缩boot ROM镜像(bootrom)、非压缩boot ROM镜像(bootrom_uncmp)和驻留ROMboot ROM镜像(bootrom_res)三种类型;·可引导镜像(Bootable Image):是将引导和vxWorks融为体镜像它常常是最终产品包括不驻留ROM镜像和驻留ROM镜像两种类型VxWorks系统启动流程般来说所有处理器VxWorks系统启动流程都是相似但有些处理器会有些特殊步骤而另些处理器会跳过几个步骤 下面以CPU为ARM7TDMI为例具体描述(见表1)对于可引导镜像在usrConfig.c文件里执行对于可下载镜像在bootConfig.c文件里执行图2为压缩可引导镜像启动过程图示其中所用到地址说明见表2BSP开发过程建立开发环境主要是以目标板CPUBSP文件为模板在 ornado argetconfig目录下创建用户BSP目录bspname把 ornado argetconfigall下文件和BSP模板文件拷贝到该目录下根据具体情况选择合适VxWorks镜像类型修改模板MakefileMakefile文件控制镜像创建在Makefile文件里使用了将近135个宏最简单Makefile文件要包含以下宏: ·CPU:目标板CPU类型;·TOOL:主机make工具为GNU;·TGT_DIR:target路径默认为$(WIND_BASE)/target;·TARGET_DIR:BSP目录名;·VENDER:目标板生产商名;·BOARD:目标板名;·ROM_TEXT_ADRS:boot ROM入口地址(以16进制表示并且与config.h文件定义相同);·ROM_SIZE:ROM大小;·RAM_LOW_ADRS:加载vxWorks目标地址;·RAM_HIGH_ADRS:boot ROM拷贝到RAM目标地址;·HEX_FLAGS:特殊结构标记用于产生S-记录文件;·MACH_EXTRA:扩展文件用户可以加入自己目标模块;·除此以外Makefile文件还需要包括以下文件:·$(TGT_DIR)/h/make/defs.bsp:Vxworks系统运行标准变量定义;·$(TGT_DIR)/h/make/make.$(CPU)$(TOOL):提供了特别目标机结构和套编译工具如make.ARM7TDMI_Tgnu;·$(TGT_DIR)/h/make/defs.$(WIND_HOST_TYPE):提供了与主机系统有关定义;·rules.bsp:在创建目标文件时所需要规则;·rules. $(WIND_HOST_TYPE):指出创建目标文件时所需从属文件表;·如果没有用all目录下文件而是拷贝到bspname下修改并使用需要定义与这些文件有关宏如BOOTINIT=bootInit.c这样在创建镜像时就不会用all目录下文件而使用bspname目录下相应文件了;·在Makefile文件里凡是16进制数前面都无需加“0x”;bspname.h根据具体目标板设置串行接口、时钟以及I/O设备等在该文件中必须包含以下内容:·中断向量/级别·I/O设备地址·设备寄存器位含义·系统和附加时钟参数(最大和最小速率)config.h根据目标板具体情况配置宏定义注意ROM_TEXT_ADRS、ROM_SIZE、RAM_LOW_ADRS、RAM_HIGH_ADRS要与Makefile文件里定义致LOCAL_MEM_LOCAL_ADRS和LOCAL_MEM_SIZE要正确 romInit.s这是系统上电后运行第个根据具体目标板对寄存器和CPU进行设置;以CPU为ARM7TDMI为例romInit.s 需要进行工作有:·保存启动方式:对于冷启动如果CPU配置是HIGH VECTORS就设置入口地址为0xFFFF0000否则设置入口地址为0x00000000;·屏蔽中断:通过设置cpsrI_BIT和F_BIT都为1来实现还要设置中断寄存器为关模式同时设定运行模式为SVC32模式;·化堆栈指针pc和sp:堆栈指针sp指向STACK_ADRS这个宏定义为当镜像为驻留ROM时该宏值为_sdata当镜像为非驻留ROM时该宏值为_romInit这两个地址经过地址映射后都指向被拷贝镜像在RAM目标地址;·化cache屏蔽cache;·根据具体目标板需要化其他寄存器;·指针跳转到romStart并执行;bootConfig.c般不需要用户修改也可以根据具体情况做适当修改;sysALib.s与romInit.s文件实现功能相似但如果在romInit.s文件里对DRAM和内存控制器进行了化在这里不再进行这项工作;创建VxWorks镜像根据具体需要在命令行环境下利用Makefile创建各种镜像也可以在Tornado集成环境下Build菜单中选择Build Boot ROM来创建各种类型Boot ROM;除此以外如果系统硬件包括串口还要根据具体情况修改sysSerial.c文件;如果包含网络部分要修改configNet.h;如果包含NVRAM要修改bootnv.h文件总之BSP开发要根据具体目标板硬件进行结语我们已经利用基于VxWorksBSP开发包成功进行了线缆调制解调器底层软件开发在开发过程中深感BSP在整个系统软件中重要性——没有正确BSP软件整个系统启动和运行也不会正确另外需要强调是:BSP概念只是针对嵌入式操作系统而言而像DOS、WINDOWS、UNIX等BIOS操作系统是无BSP可言对同目标板而言不同操作系统BSP在本质上是样但是不同操作系统将提供不同支持库另外在BSP结构上也可能会有所不同在做BSP移植时候应该注意■参考文献1. Tornado BSP Developer誷 Kit for VxWorks User誷 GuideTornado2.0Edition 119992. Tornado BSP Developer誷 Kit for VxWorks User誷 GuideTornado 1.0.1Edition 119973. VxWorks Programmer誷 GuidesEdition 119992008-12-12 15:53:11疯狂代码 /。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于VxWorks的BSP开发指南1BSP概述一个成熟的商用操作系统,其被广泛应用的必要条件之一就是能够支持众多的硬件平台,并实现应用程序的硬件无关性。
一般来说,这种无关性都是由操作系统实现的。
但对于嵌入式系统来说,它没有像PC机那样具有广泛使用的各种工业标准,各种嵌入式系统其不同的应用需求就决定了它一般都选用了各自定制的硬件环境,这种诸多变化硬件的环境就决定了无法完全由操作系统来实现上层软件与底层硬件之间的无关性。
因此各种商用实时操作系统,都采用了分层设计的方法,它将系统中与硬件直接相关的一层软件独立出来,称之为Board Support Package即简称BSP。
顾名思义,BSP是针对某个单板而设计的,并且它对于用户(指开发者)也是开放的,用户可以根据不同的硬件需求对其作改动或二次开发,而操作系统本身仅仅提供了CPU内核的无关性。
BSP在系统中的角色,很相似于BIOS在PC系统中的地位。
定义BSP就是为软件操作系统正常运行提供最基本、最原始的硬件操作的软件模块,它和操作系统息息相关,但又不属于操作系统的一部分。
BSP可以分为三大部分:1:系统上电时的硬件初始化。
2:为操作系统访问硬件驱动程序提供支持。
3:集成的硬件相关和硬件无关的操作系统所需的软件模块。
BSP的表现形式BSP主要以两种形式来表现:1:源代码(C代码、汇编代码)、系统编译连接依靠文件。
2:二进制的目标代码和目标代码库。
BSP在软件系统中的位置BSP在软件系统中的位置可以用下图来表示,BSP为操作系统和硬件设备的互操作建了一个桥梁,操作系统通过BSP来完成对指定硬件的配置和管理。
2 vxWorks系统中的BSP 目录结构BSP软件与其他软件的最大区别在于BSP软件有一整套模板和格式,开发人员必须严格遵守,不允许任意发挥。
在BSP软件中,绝大部分文件的文件名和所要完成的功能都是固定的。
所以,BSP软件的开发一般来说都是在一个基本成型的BSP软件上进行修改,以适应不同单板的需求。
针对某类CPU的硬件单板,vxWorks通常提供有其DEMO板的BSP, 这些程序位于指定的目录之下。
也就是我们所说的最小系统BSP。
一般来说,我们在硬件系统设计好之后,都会先找到一个与自己系统相近的DEMO板BSP(最起码是使用相同的CPU)。
并以此为基础,开发自己单板的BSP。
VxWorks BSP的目录结构:BSP文件主要位于Tornado安装之后的Target目录下,具体目录结构如下:• config目录:用于vxWorks核心的配置及编译的文件。
其中又包含多个子目录。
all目录:通用的配置文件comps目录:用于Tornado工程管理工具配置的源文件bspname目录:每个单板都有一个相应目录,命名可根据单板而定,其中包含有关此单板BSP的代码文件,目标文件及编译文件等,这也就是我们通常所说的单板BSP。
• h目录:其中包含所有vxWorks操作系统的头文件及通用编译文件。
其中的各个子目录表示了vxWorks中不同模块的头文件。
• lib目录:由vxWorks为不同平台提供的库文件及目标文件。
• src目录:vxWorks提供的部分硬件芯片驱动程序的源代码文件,其又包含多个子目录:config目录:有关vxWorks操作系统的一些通用的源代码文件。
drv目录:vxWorks中一些硬件芯片的通用驱动程序源代码文件,其根据不同功能的芯片分为若干个子目录,例如end 表示网口驱动,sio表示串口驱动等• unsupported目录:其中包含一些较古老的硬件BSP代码。
3三种不同的VxWorks映象比较理解VxWorks映象是开发VxWorks BSP的基础。
VxWorks映象通常由三个部分组成:BSP、操作系统内核和上层应用。
从文件的组织形式上可以将映象分为三段:BSS段、Data段和Text段。
其中,BSS 段存放的是未初始化的全局变量或静态变量,Data段存放的是已经初始化的全局变量或静态变量,Text段存放的是可执行的代码。
根据应用场合的不同,VxWorks映象可分为三类:Loadable imagesRom-based imagesRom-resident images其中,Loadable images通过烧写在ROM中的Bootrom装载到RAM中来启动;Rom-based images使用自身带的启动代码把自己装载到RAM中来启动;而Rom-resident images在ROM中启动,只是把需要动态修改的Data段和BSS段装载到RAM中去。
3.1 可加载的VxWorks映象这是一种运行于RAM的VxWorks映象。
它不包含搬移程序,需要借助于一些外部的程序如bootRom才能加载到RAM的低端RAM_LOW_ADRS地址处。
这是缺省的开发映象。
在开发的初期阶段,用户可以根据需要添加或删除一些VxWorks组件,生成自己的可加载的VxWorks映象,存放在开发主机的某个目录下。
目标板上电后,由烧结在BOOT中的起始引导程序(BootStrap Programs)将BOOT中的ROM 引导程序(ROM Boot Programs)拷贝到RAM的高端地址RAM_HIGH_ADRS处,并跳转至该地址执行ROM引导程序,配置好所选的加载方式(缺省为网络方式),将指定的主机目录下的可加载的VxWorks映象下载到目标板的RAM地址RAM_LOW_ADRS处,并跳转到此处执行。
如图1所示。
图1、可加载的VxWorks映象这种映象的优点是生成的VxWorks映象可以存放在开发主机PC机上,不用烧到BOOT中,节省了BOOT容量,也便于随时修改不同的VxWorks映象,适用于调试的初期阶段。
不足之处是需要在主机上维护一个正确的VxWorks映象,对于调试硬件无关的上层应用程序显得不是很方便。
在Tornado工作台的Build窗口中,选择Rules属性页中的VxWorks即可生成可加载的VxWorks映象。
3.2 基于ROM的VxWorks映象这是一种运行于RAM中,但起初存放于ROM中的VxWorks映象。
即该映象需要和搬移程序一起固化在BOOT中。
目标板上电后,首先运行BOOT中的引导搬移程序,将整个VxWorks映象拷贝到RAM地址RAM_LOW_ADRS处,并跳转到此处执行。
如图2所示。
图2 基于ROM的VxWorks映象该映象根据是否被压缩又可分为:●基于ROM的未压缩的VxWorks映象,可直接从ROM拷贝到RAM中●基于ROM的压缩的VxWorks映象,这种映象主要是为了节约BOOT空间,在从ROM拷贝到RAM的过程中需要解压缩,因此与上述未压缩的映象相比,它的引导过程相对较慢,但两者在RAM中的运行速度是一样的。
3.3 驻留ROM的VxWorks映象这种映象起初也和搬移程序一起固化在BOOT中。
目标板上电后,首先运行BOOT中的引导搬移程序,但仅将VxWorks映象的数据段和BSS段拷贝到RAM地址RAM_LOW_ADRS处,映象的代码段仍旧留在ROM中,从ROM中开始执行。
如图3所示。
这种映象的优点是具有最快的引导速度,占用最少的RAM空间,适用于RAM 空间有限的目标板。
但是由于该映象在ROM中运行,运行速度在三种映象中是最慢的。
图3 驻留ROM的VxWorks映象4几种不同的BOOTROM的比较针对上述三种不同的VxWorks映象,可以生成以下几种不同的BOOTROM,主要体现在执行搬移程序romStart( )( 位于bootInit.c文件中)时不同:4.1 用于可加载VxWorks映象的BOOTROM由图1所示可知,用于可加载VxWorks映象的BOOTROM包含两部分:起始引导程序(BootStrap Programs)和ROM引导程序(ROM Boot Programs)。
起始引导程序驻留在ROM中,主要包含:●汇编级的硬件初始化程序romInit.s,用于系统的基本初始化,设置一些重要寄存器的初始值,进行存储器的映射●搬移程序bootInit.c,将ROM引导程序拷贝至RAM的高端地址RAM_HIGH_ADRS,然后跳转到此处执行ROM引导程序。
ROM引导程序起初存放在ROM中,初始化时被拷贝到RAM中,主要用于系统的进一步初始化,并配置加载方式,将VxWorks映象加载至RAM。
可分为三种不同的类型:●压缩的ROM引导程序,在拷贝的过程中需要解压缩,在RAM中执行●未压缩的ROM引导程序,可直接拷贝,在RAM中执行●驻留ROM的ROM引导程序,仅拷贝ROM引导程序的数据段,代码段仍旧在ROM中执行在Tornado开发环境中,通过在主窗口点击Build|Build Boot ROM…可以选择生成以上三种BOOTROM,分别为:bootrom_uncmp.hex(未压缩的BOOTROM),bootrom.hex(压缩的BOOTROM),bootrom_res.hex(驻留的BOOTROM)。
静态连接到可加载的VxWorks映象的系统初始化代码执行并完成整个初始化过程。
引导过程成功以后,RAM中ROM引导程序占用的空间(从RAM_HIGH_ADRS开始)可以重新被系统利用。
图1中所示的各地址含义为:●LOCAL_MEM_LOCAL_ADRS是RAM的起始地址●RAM_LOW_ADRS是VxWorks的加载点,也是VxWorks代码段的起始位置●FREE_RAM_ADRS是VxWorks映象的结束点。
通常也是系统内存池和目标服务器内存池的起始地址●RAM_HIGH_ADRS是ROM引导程序的加载点。
它也是ROM引导程序(除驻留ROM引导程序之外)的代码段的起始位置,或驻留ROM引导程序数据段的起始位置。
4.2用于基于ROM的VxWorks映象的BOOTROM由图2所示可知,用于该映象的BOOTROM包含两部分:起始引导程序(BootStrap Programs)和基于ROM的VxWorks映象。
搬移程序bootInit.c负责将VxWorks映象的文本段和数据段搬移到用户定义的低端内存地址RAM_LOW_ADRS,如果需要进行必要的解压缩,然后直接启动VxWorks映像。
因此BOOTROM的容量相对于1节中描述的BOOTROM要大一些,但无需在主机目录下维护一个可用的VxWorks映象。
基于ROM的VxWorks BOOTROM有压缩和未压缩之分。
在Tornado工作台的Build窗口中,选择VxWorks映象Rules属性页中的VxWorks_rom即可生成基于ROM的未压缩的VxWorks BOOTROM,选中VxWorks_romCompress即可生成基于ROM的压缩的VxWorks BOOTROM。