VxWorks在AT91RM9200上的BSP设计
发布时间:2008/5/27 0:00:00 访问次数:405
摘要 阐述vxworks实时操作系统中板级支持包bsp的概念和作用;研究vxworks映像的生成和分类,以及系统的启动流程;着重介绍vxworks操作系统在arm9芯片at9lrm9200上的bsp设计。
关键词 vxworks bsp 映像 arm at91rm9200
vxworks是美国wind river公司开发的嵌入式实时操作系统,具有高性能、可裁减性好等特点,能支持多种微处理器(如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映像的初始化流程。
下面以rom型vxworks内核启动流程为例,说明各文件的作用:
romlnit()保存启动类型,屏蔽中断;初始化内存和寄存器,屏蔽cache;初始化cpu,将堆栈指针定位于被拷贝boot rom映像在ram的地址;跳到romstart()。
rorastart()根据不同的映像类型将vxworks映像的不同部分解压缩<如果需要)并加载到ram中。
usrinit() 对vxworks映像的bss段清零;调用intvecbaseset()设置中断矢量基地址表;调用excvecinit()初始化异常中断矢量;调用syshwinit()初始化系统硬件;调用usrkernelinit()初始化wind内核;调用kernellnit()启动wind内核,启动usrroot()任务。
usrroot()设置操作系统时钟,创建设备,安装驱动,调用syshwinit2()安装系统时钟和辅助时钟中断以及串口等设备的中断,初始化i/o、文件系统、调用应用程序。
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/c
摘要 阐述vxworks实时操作系统中板级支持包bsp的概念和作用;研究vxworks映像的生成和分类,以及系统的启动流程;着重介绍vxworks操作系统在arm9芯片at9lrm9200上的bsp设计。
关键词 vxworks bsp 映像 arm at91rm9200
vxworks是美国wind river公司开发的嵌入式实时操作系统,具有高性能、可裁减性好等特点,能支持多种微处理器(如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映像的初始化流程。
下面以rom型vxworks内核启动流程为例,说明各文件的作用:
romlnit()保存启动类型,屏蔽中断;初始化内存和寄存器,屏蔽cache;初始化cpu,将堆栈指针定位于被拷贝boot rom映像在ram的地址;跳到romstart()。
rorastart()根据不同的映像类型将vxworks映像的不同部分解压缩<如果需要)并加载到ram中。
usrinit() 对vxworks映像的bss段清零;调用intvecbaseset()设置中断矢量基地址表;调用excvecinit()初始化异常中断矢量;调用syshwinit()初始化系统硬件;调用usrkernelinit()初始化wind内核;调用kernellnit()启动wind内核,启动usrroot()任务。
usrroot()设置操作系统时钟,创建设备,安装驱动,调用syshwinit2()安装系统时钟和辅助时钟中断以及串口等设备的中断,初始化i/o、文件系统、调用应用程序。
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/c