您当前的位置:五五电子网电子知识单片机-工控设备嵌入式系统-技术VxWorks移植到AT91RM9200的BSP定制过程 正文
VxWorks移植到AT91RM9200的BSP定制过程

VxWorks移植到AT91RM9200的BSP定制过程

点击数:7993 次   录入时间:03-04 11:54:21   整理:http://www.55dianzi.com   嵌入式系统-技术

VxWorks 是嵌入式实时操作系统,具有高性能、可裁减性好等特点,能支持多种微处理器(如PowerPC、X85、ARM、SPARC);自问世以来,以其良好的町靠性和卓越的实时性被广泛地应用于通信、航空、航天等高精尖技术及实时性要求极高的领域中。BSP(Board Support PACkage,板级支持包)的作用是针对特殊的硬件平台,为操作系统内核提供操作接口,使操作系统能够独立于底层硬件。对上层应用屏蔽具体硬件, VxWorks 的高可移植性就是通过BSP实现的。 AT91RM9200 是Atmel公司生产的一款ARM9核芯片,本文重点介绍将 VxWorks 移植到该芯片过程中BSP的定制过程。  

1 BSP概念

BSP通常是指针对具体的硬件平台,用户所编写的启动代码和部分设备驱动程序的集合。它所实现的功能包括初始化和驱动部分设备。最基本的BSP仅需要支持处理器复位、初始化、驱动串口和必要的时钟处理。BSP是相对于操作系统而言的,不同的操作系统对应不同形式的BSP,因此,在写BSP时一定要按照要求的操作系统对BSP的定义形式来写。在VxWorks系统中,BSP是介于底层硬件环境和VxWorks之间的一个软件接口,它的主要功能是系统加电后初始化目标机硬件和VxWorks,并提供部分硬件驱动程序。BSP在VxWorks系统中的层次关系如图1所示。  
  
BSP为各种板卡的硬件功能提供了统一的软件接口,包括硬件初始化、中断的捕捉和处理、硬件时钟和定时器管理、内存地址映射,以及内存分配等。每个BSP还包括一个ROM启动或其他启动机制。
  
2 VxWorks的引导过程  

在编写BSP之前,首先要了解整个系统的启动过程。VxWorks的映像由代码段、数据段和BSS段3部分组成。VxWotks内核可以分为3种:可加载类型映像、基于ROM的VxWorks映像和RoM驻留型映像。这3种类型的映像组织是不一样的,因此启动过程有所区别。

可加载映像包括VxWorks和Boot ROM两部分内容,两部分是独立创建的。首先,由系统引导代码把ROM引导程序搬到RAM_HIGH_ADRS。然后,ROM引导程序开始运行,将VxWorks映像加载到RAM_LOW_ADRS,之后跳转到VxWorks映像装入点。

基于ROM的VxWorks映像在BSP初始化时,会把lmage完全搬到RAM中执行,包括代码段和数据段。在拷贝执行完毕后,系统控制权转移给RAM中VxWorks映像的初始化代码。

ROM驻留型映像只是将ROM中VxWorks映像的数据段和BSS段拷贝到RAM中,完成后系统控制权转移给ROM/Flash里VxWorks映像的初始化代码,代码段留在ROM中并在ROM中运行。在ROM中运行的VxWorks映像主要足为了节省RAM空间,带来的不利则是运行速度慢。

图2和图3分别是下载型和ROM型VxWorks映像的初始化流程。  



www.55dianzi.com
  
下面以ROM型VxWorks内核启动流程为例,说明各文件的作用:

romlnit()保存启动类型,屏蔽中断;初始化内存和寄存器,屏蔽Cache;初始化CPU,将堆栈指针定位于被拷贝Boot ROM映像在RAM的地址;跳到romStart()。

roraStart()根据不同的映像类型将VxWorks映像的不同部分解压缩

3 VxWorks在AT91RM9200上的BSP设计

3.1 AT91RM9200简介

AT91RM9200的片上资源包括:ARM920T处理器棱、16KB的内部SRAM和128KB的内部ROM存储器;支持SDRAM、SRAM、Burst Flash和ComPACtFlash、SmartMedia以及NANDFlash的无缝连接;16KB的数据Cache,16KB的指令Cache,完全可编程的外部总线接口EBI,4个32位的PIO控制器可以达到122个可编程I/O引脚(每个都有输入控制、可中断及开路的输出能力);带有8个优先级、可单独屏蔽中断源的先进中断控制器、6组硬件定时器、4个通用同步/异步收发器USART。

3.2 BSP中几个重要文件的修改

由于AT91RM9200的内核是ARM920T,所以BSP文件主要在VxWorks编泽环境Tornado的目录target/config/all和target/config/integrator920t文件夹里。其中,a11文件夹里的文件对于绝大多数BSP都是共用的,一般来说不需要修改,特别是“configAll.h”;integrator920t文件夹里的文件就是所要编写的BSP文件,这些文件往往与系统硬件密切相关。

3.2.1 修改Makeflie

Makefile文件定义编译和链接整个BSP的规则,如编译工具的选择、编译选项和包含文件路径等;控制生成VxWorks映像文件的类型,同时含有存储区大小的信息,对于存储区大小信息的改动必须与Config.h的对应改动同步。有些参数需在该文件中定义,如处理器类型、编译工具、目标地址等。下面介绍一些须修改的参数和地址:  



3.2.2 修改Config.h

Config.h文件包含了所有头文件和与CPU相关的特殊定义。VxWorks内核组件的配置由Config.h文件定义。Config.h中的主要修改内容有定义引导行和修改地址。

(1)定义引导行  



其中,mac(O,0)为AT91RM9200芯片中的EMAC设备;host为主机名;VxWorks为要下载的文件名;h为主机IP地址;e为目标板IP地址;u为用户名;pw为密码;tn为目标板名称。

(2)修改地址

该文件中的地址定义,如ROM_TEXT_ADRS、ROM_SIZE、RAM_LOW_ADR、SRAM_HIGH_SIZE等要与Makefik文件中的相关定义一致。本设计中代码段存储在连接ARM芯片外部片选CSO上的Flash里面,基地址为Oxl0000000,因此.定义如下:  


www.55dianzi.com

VxWorks的缺省配置由configAll.h来确定。一般来说,缺省配置的设置与自行开发的硬件系统的配置不同,用户可通过Cotlfig.h来改变缺省配置。用户须查看configAll.h,并在Config.h中将不需要的软硬件配置和初始化去掉。例如,缺省配置中一般包含浮点处理器,而AT9lRM9200中没有浮点寄存器,因此就要删掉相关配置。

3.2.3 修改integrator920t.c

该文件中设置所有非可选的、与AT91RM9200芯片相关的信息,如各硬件相关寄存器的地址定义,设备寄存器中对应位的定义,各硬件中断矢量和中断优先级的定义,DBUG和USART的控制,网口的定义,系统时钟和辅助时钟参数设置等。VxWorks所要使用的目标板包含设备的驱动程序头文什应当包含在该文件的开始。该文件中的各项宏定义均是基于AT91RM9200芯片的,并根据具体要求定义。例如,电源管理控制器中用到两个锁相环PLLA和PLLB,对它们的部分参数设定代码如下:  

3 2.4 修改rornlnit.s

该文件包含引导ROM和基于ROM的VxWorks映像的入口初始化汇编代码。入口点为romInit()函数,是系统加电启动后首先执行的代码。主要功能是:保存启动类型,使处理器复位;初始化Flash和SDRAM;设置MMU到已知状态;指令Cache使能;初始化MMU控制寄存器(指令32位、数据32位、写缓冲使能);开漏写缓冲,并且使指令和数据Cache都兀效;通过设置CPSR的IRQ禁止位、FIR禁止位和先进中断控制器AIC中的中断禁止寄存器来屏蔽中断,跳转到bootInit.c中的rom-Start(),同时传递启动类型。其中,中断屏蔽代码如下:  


在调试这段代码时,由于串口和网口都没有启动,因此只能通过点灯程序来跟踪程序的执行情况,设置不同的LED亮来显示程序执行到哪一步。例如,如果要并行输入/输出口C的32位中的第15位亮,则可以编程为;  


在编写本文件时,需要注意的地方是:不要在该文件里进行过多的初始化操作,大部分硬件初始化操作在sysLib.c文件中的sysHwInit()函数中进行。

[1] [2]  下一页


本文关键字:暂无联系方式嵌入式系统-技术单片机-工控设备 - 嵌入式系统-技术