




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VxWorks在AT91RM9200上的BSP设计 VxWorks是美国Wind River公司开发的嵌入式实时操作系统,具有高性能、可裁减性好等特点,能支持多种微处理器(如PowerPC、X86、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部分组成。Vxworks内核可以分为3种:可加载类型映像、基于ROM 的Vxworks映像和ROM 驻留型映像。这3种类型的映像组织是不一样的,因此启动过程有所区别。 可加载映像包括Vxworks和Boot R0M 两部分内容,两部分是独立创建的。首先,由系统引导代码把ROM引导程序搬到RAM_HIGH_ADRS。然后,ROM 引导程序开始运行,将Vxworks映像加载到RAM_LOW_ADRS,之后跳转到Vxworks映像装入点。 基于ROM 的Vxworks映像在BSP初始化时,会把Image完全搬到RAM 中执行,包括代码段和数据段。在拷贝执行完毕后,系统控制权转移给RAM 中Vxworks映像的初始化代码。 ROM驻留型映像只是将ROM 中Vxworks映像的数据段和BSS段拷贝到RAM 中,完成后系统控制权转移给ROM/Flash里Vxworks映像的初始化代码,代码段留在ROM 中并在ROM 中运行。在ROM 中运行的VxWorks映像主要是为了节省RAM空间,带来的不利则是运行速度慢。图2和图3分别是下载型和ROM 型VxWorks映像的初始化流程。 下面以ROM 型VxWorks内核启动流程为例,说明各文件的作用: romInit() 保存启动类型,屏蔽中断;初始化内存和寄存器,屏蔽Cache;初始化CPU,将堆栈指针定位于被拷贝Boot ROM 映像在RAM 的地址;跳到romStart()。 romStart() 根据不同的映像类型将Vxworks映像的不同部分解压缩(如果需要)并加载到RAM 中。 usrInit() 对Vxworks映像的BSS段清零;调用intVecBaseSet()设置中断矢量基地址表;调用excVecInit()初始化异常中断矢量;调用sysHwInit()初始化系统硬件;调用usrKernelInit()初始化wind内核;调用kernelInit()启动wind内核,启动usrRoot()任务。 usrRoot() 设置操作系统时钟,创建设备,安装驱动,调用sysHwInit2()安装系统时钟和辅助时钟中断以及串口等设备的中断,初始化I/O、文件系统、调用应用程序。3 VxWorks在AT91RM9200上的BSP设计3.1 AT91RM9200简介 AT91RM9200的片上资源包括:ARM920T 处理器核、16 KB的内部SRAM和128 KB的内部ROM存储器;支持SDRAM、SRAM、Burst Flash 和CompactFlash、SmartMedia以及NAND Flash的无缝连接;16 KB的数据Cache,16 KB的指令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文件夹里。其中,all文件夹里的文件对于绝大多数BSP都是共用的,一般来说不需要修改,特别是“configAll.h;integrator920t文件夹里的文件就是所要编写的BSP文件,这些文件往往与系统硬件密切相关。3.2.1 修改Makefile Makefile文件定义编译和链接整个BSP的规则,如编译工具的选择、编译选项和包含文件路径等;控制生成VxWorks映像文件的类型,同时含有存储区大小的信息,对于存储区大小信息的改动必须与Config.h的对应改动同步。有些参数需在该文件中定义,如处理器类型、编译工具、目标地址等。下面介绍一些须修改的参数和地址:CPU 目标板处理器类型,本设计中为ARMARCH4_T;TOOL 编译工具,Vxworks中可使用GNU 和DIAB两种,本设计中用GNU;TARGET_DIR BSP所在的目录,默认值为$(WIND_BASE)/target;VENDOR 目标厂商名字,本设计中为Atmel;BOARD 目标主板名称,本设计中为AT91RM9200;ROM_TEXT_ADRS Boot ROM 的起始地址;ROM_SIZE ROM/Flash的大小;RAM_LOW_ADRS VxWorks在RAM 中的起始地址,即入口地址;RAM_HIGH_ADRS 非驻留ROM 内核的启动程序加载地址。3.2.2 修改Config.hConfig.h文件包含了所有头文件和与CPU 相关的特殊定义。VxWorks内核组件的配置由Config.h文件定义。Config.h中的主要修改内容有定义引导行和修改地址。(1)定义引导行#define DEFAULT_BOOT_LINE mac(0,0)host:vxWorks h=192.168.0.16 e=192.168.0.55:ffffff00 u=target pw=target tn=at91其中,mac(0,0)为AT91RM9200芯片中的EMAC设备;host为主机名;Vxworks为要下载的文件名;h为主机IP地址;e为目标板IP地址;u为用户名;pw 为密码;tn为目标板名称。(2)修改地址 该文件中的地址定义,如ROM_TEXT_ADRS、ROM_SIZE、RAM_LOW_ADR、SRAM_HIGH_SIZE等要与Makefile文件中的相关定义一致。本设计中代码段存储在连接ARM 芯片外部片选CS0上的Flash里面,基地址为0x10000000,因此,定义如下:#define ROM_BASE_ADRS 0x10000000/ 片选0的基地址#define ROM_TEXT_ADRS ROM_BASE_ADRS/代码段起始于片选0的基地址#define ROM_SIZE 0x00080000/存储VxWorks映像的ROM 空间#define RAM_LOW_ADRS 0x20001000/RAM 中VxWorks映像人口地址#define RAM_HIGH_ADRS 0x20200000/RAM 中Boot ROM 的入口地址 VxWorks的缺省配置由configAll.h来确定。一般来说,缺省配置的设置与自行开发的硬件系统的配置不同,用户可通过Config.h来改变缺省配置。用户须查看configAll.h,并在Config.h中将不需要的软硬件配置和初始化去掉。例如,缺省配置中一般包含浮点处理器,而AT91RM9200中没有浮点寄存器,因此就要删掉相关配置。3.2.3 修改integrator920t.C 该文件中设置所有非可选的、与AT91RM9200芯片相关的信息,如各硬件相关寄存器的地址定义,设备寄存器中对应位的定义,各硬件中断矢量和中断优先级的定义,DBUG和USART 的控制,网口的定义,系统时钟和辅助时钟参数设置等。VxWorks所要使用的目标板包含设备的驱动程序头文件应当包含在该文件的开始。该文件中的各项宏定义均是基于AT91RM9200芯片的。并根据具体要求定义。例如,电源管理控制器中用到两个锁相环PLLA和PLLB,对它们的部分参数设定代码如下:#define PLL_INPUT_FREQ_MIN 900000/锁相环输入最低频率#define PLL INPUT_FREQ_MAX 32000000/锁相环输入最高频率#define PLL_OUTPUT_FREQ_MIN 80000000/锁相环输出最低频率#define PLL OUTPUT_FREQ_MAX 240000000/锁相环输出最高频率3.2.4 修改romInjt.S 该文件包含引导ROM 和基于ROM 的Vxworks映像的入口初始化汇编代码。入口点为romInit()函数,是系统加电启动后首先执行的代码。主要功能是:保存启动类型,使处理器复位;初始化Flash和SDRAM;设置MMU到已知状态;指令Cache使能;初始化MMU控制寄存器(指令32位、数据32位、写缓冲使能);开漏写缓冲,并且使指令和数据Cache都无效;通过设置CPSR的IRQ禁止位、FIR禁止位和先进中断控制器AIC中的中断禁止寄存器来屏蔽中断,跳转到bootInit.C中的romStart(),同时传递启动类型。其中,中断屏蔽代码如下:MRS r1,cpsrBIC r1,r1,#MASK_MODEORR r1,r1,#MODE_SVC32 | I_BIT | F_BIT/ 禁止IRQ和FIQMSR cpsr,r1LDR r2,=AT91RM9200_AIC_BASE_ADDR/AT91RM9200先进中断控制器基地址MVN r1,#0STR r1,r2,#AT91RM9200_AIC_IDCR 在调试这段代码时,由于串口和网口都没有启动,因此只能通过点灯程序来跟踪程序的执行情况,设置不同的LED亮来显示程序执行到哪一步。例如,如果要并行输入/输出口C的32位中的第15位亮,则可以编程为:LDR r7,=0xFFFFF800 /0xFFFFF800为PIOC的PIO使能寄存器的地址LDR r6,=0x00008000STR r6,r7 /通过对相应位写1,表示该引脚受PIO控制LDR r7,=0xFFFFF810 /0xFFFFF810为PIOC的PIO/输出使能寄存器的地址LDR r6,=0x00008000STR r6,r7 /通过对相应位写1,表示该引脚可以作为输出引脚LDR r7,=0xFFFFF830 /0xFFFFF830为PIOC的数据输出寄存器的地址LDR r6,=0x00008000STR r6,r7 /通过对相应位写1,表示该引脚输出逻辑1电平,灯亮 在编写本文件时,需要注意的地方是:不要在该文件里进行过多的初始化操作,大部分硬件初始化操作在sysLib.C文件中的sysHwInit()函数中进行。3.2.5 修改sysLib.c sysI ib.C是BSP初始化的核心代码。在这个文件中,必须复位所有的硬件,使其处于初始化状态,保证后面开中断后不会产生假中断。这个文件包含了由目标机体系结构决定的、与系统有关的C程序。这些C程序提供板级接口。基于这些接口,VxWorks和应用程序的构造与系统无关。该文件的功能包括:定义了RRAM、SRAM、ROM、外部片选芯片的物理地址和虚拟地址;定义中断优先级寄存器中各个位对应的优先级;调用sysHwInit()初始化串口和网口,安装IRQ/SVC中断堆栈分配程序;总线中断功能等。本文件中有两个重要的函数:sysHwInit()和sysHwInit2()。sysHwInit()的代码如下:void sysHwInit(void) /由usrInit()调用_func_armIntStackSplit= sysIntStackSplit;/安装IRQ/SVC中断堆栈分割代码#ifdef INCLUDE_SERIALsysSerialHwInit(); /初始化串口数据结构#endif#ifdef INCLUDE_EMAC_ENDsysAt91EmacEnetDisable(); /网络设备禁用sysAt91EmacEnetIntDisable(); /网络设备中断禁止#endif sysHwInit2()用来连接系统中断,安装ISR,进行其他配置。它在初始化系统时钟时,由sysClkConnect()调用,主要用来初始化中断库和中断驱动,安装系统时钟和辅助时钟的中断以及串口等设备的中断。4 编译生成映像 系统定制完成后,有两种编译方式:一种是在Tornado下进行编译,生成映像文件;另一种是直接用Make工具编译,但要写好脚本文件。装载到目标板中的Vxworks映像取决于使用的下载方式,其中主要包括以下几种: Vxworks。这是基于RAM 的映像,Vxworks需要通过目标板上的引导程序从串口或网口把它下载到目标板的RAM 中运行。在Tornado开发环境下,这是一个默认选项,主要用在调试阶段。使用宿主机上的windSh工具和符号表。 Vxworks.st。这也是基于RAM 的映像,需要通过引导ROM把VxWorks映像下载到目标机内存中才能执行。该对象文件内置符号表。 Vxworks_rom。这是一个非压缩、基于ROM 的映像。在这个对象文件执行前,先把自己拷贝到目标机RAM 中。这种类型的映像通常在启动阶段速度比较慢,因为代码在ROM 中执行,但执行阶段比ROM驻留型的映像要快。 Vxwork.st_rom。这是基于ROM 压缩的Vxworks映像。它在执行前先把自己解压并拷贝到目标机RAM 中执行。 Vxworks.res_rom。这是ROM 驻留型的非压缩VxWorks的映像。它在执行前把数据段拷贝到目标机RAM 中。这种类型的映像在启动阶段比较快,但在目标机上执行的速度比基于ROM 类型的映像慢(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年手机壳购销合同协议
- 2025广东水利电力职业技术学院招聘32人模拟试卷及1套完整答案详解
- 2025年合同解除申请书范本
- 2025一级建造师《项目管理》考点:建筑工程合同管理与履行
- 2025私人租赁合同协议范本
- 2025年大型商场供用电力合同
- 2025年河北沧州泊头市中医医院招聘专业技术人员29名模拟试卷有完整答案详解
- 《2025城市房屋租赁代理合同》
- 2025年泰安新泰市市属国有企业公开招聘模拟试卷及参考答案详解
- 2025年甘肃省定西市临洮县中铺镇选聘摩云村文书考前自测高频考点模拟试题及答案详解(夺冠)
- 网络交友新时代课件
- 2025年乡村医生公共卫生服务专业知识题库及答案解析
- 2024年江南大学公开招聘辅导员笔试题含答案
- 议论文写作入门基础任务式课件2025-2026学年统编版高中语文必修上册
- 佛州驾照考试试题题库及答案
- 电商直播行业合规性风险管控与流程优化报告
- 2025四川能投合江电力有限公司员工招聘11人笔试备考题库及答案解析
- 生物安全实验室管理体系文件
- 2025年小学部分国防教育知识竞赛答案
- 【政史地 江苏卷】2025年江苏省高考招生统一考试高考真题政治+历史+地理试卷(真题+答案)
- 借车给他人免责协议书
评论
0/150
提交评论