VxWorks在AT91RM9200上的BSP设计

发布者:数据迷航者最新更新时间:2012-09-22 来源: 单片机及嵌入式系统应用 关键字:VxWorks  AT91RM9200  BSP  映像 手机看文章 扫描二维码
随时随地手机看文章

    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空间,带来的不利则是运行速度慢。[page]

    图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/config/integrator920t文件夹里。其中,a11文件夹里的文件对于绝大多数BSP都是共用的,一般来说不需要修改,特别是“configAll.h”;integrator920t文件夹里的文件就是所要编写的BSP文件,这些文件往往与系统硬件密切相关。

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

4 编译生成映像
   
系统定制完成后,有两种编译方式:一种是在Tornado下进行编译,生成映像文件;另一种是直接用Make工具编译,但要写好脚本文件。装载到目标板中的VxWorks映像取决于使用的下载方式,其中主要包括以下几种:
    ①VxWorks。这是基于RAM的映像,VxWorks需要通过目标板上的引导程序从串口或网口把它下载到目标板的RAM中运行。在Tornado开发环境下,这是一个默认选项,主要用在调试阶段。使用宿主机上的WindSh工具和符号表。
    ②VxWorks.st。这也是基于RAM的映像,需要通过引导ROM把VxWorks映像下载到目标机内存中才能执行。该对象文件内置符号表。
    ③VxWorkS_rom。这是一个非压缩、基于ROM的映像。在这个对象文件执行前,先把自己拷贝到目标机RAM中。这种类型的映像通常在启动阶段速度比较慢,因为代码在ROM中执行,但执行阶段比ROM驻留型的映像要快。
    ④VxWorks.st_rom。这是基于ROM压缩的VxWorks映像。它在执行前先把自己解压并拷贝到目标机RAM中执行。
    ⑤VxWorks.res_rom。这是ROM驻留型的非压缩VxWorks的映像。它在执行前把数据段拷贝到目标机RAM中。这种类型的映像在启动阶段比较快,但在目标机上执行的速度比基于ROM类型的映像慢(因为CPU访问ROM比访问RAM要慢)。通常在RAM空间比较小的目标机上使用这种类型的映像。

5 需要注意的问题
   
首先,应该避免在romInit.s中进行过多的初始化操作。该史件中只是进行必要的最小硬件初始化,大部分硬件的初始化都是在sysHwInit()中完成的。另外,romTnit.s中的代码不应当被其他模块或函数调用。

    其次,应该避免sysAlib.s中工作太少。BSP开发人员通常错误地认为在romInit.s里初始化过的设备不需要在sysAlib.s中重新初始化。实际上,VxWorks映像并不认为它是由引导映像程序引导的,因此,它必须重新设置和初始化所有它自己需要使用的设备。sysInit()是该文件中最主要的一个函数,也是第一个函数。该例程中很多工作与romInit()是相同的,目的是保证内核映像在运行与冷启动时,软硬件环境高度一致。

    最后,对特定的BSF。驱动程序的修改,只能在特定的BSP目录下。此设计中目录为target/config/integra-tor920t,不要直接在target/src/drv以及target/h/drv中修改。只有风河公司的源程序才能存放在这些目录下。

6 结论
   
本文在介绍BSP的概念、作用和vxWorks映像分类以及系统启动流程的基础上,以Atmel公司生产的ARM9处理器AT91RM9200为例,重点介绍了VxWorks的BSP设计中需要修改的几个重要文件,最后提出了需要注意的问题。尽管目标板硬件不同,BSP的实现也不尽相同,但基本思想是一样的。本设计对各类开发板的系统移植和后续的应用程序开发有一定的参考价值。

关键字:VxWorks  AT91RM9200  BSP  映像 引用地址:VxWorks在AT91RM9200上的BSP设计

上一篇:AT91 SAM9261在GPS接收机中的应用
下一篇:基于AT91R40008的嵌入式GPRS传输终端的设计

推荐阅读最新更新时间:2024-03-16 13:09

浅谈AT91RM9200的嵌入式网络摄像机的设计与实现
  1. 引言   随着通信技术和网络技术的迅猛发展,通过网络远程实时监控重要场所已倍受人们关注,网络摄像机在此背景下产生,并成为人们关注的焦点。网络摄像机是一种结合传统摄像机与网络技术所产生的新一代摄像机,它可以将影像通过网络传至地球另一端,且远端的浏览者不需用任何专业软件,只要标准的网络浏览器(如"Microsoft IE或Netscape)即可监视其影像。网络摄像机要将高清晰度的实时视频信息通过互联网传送到监控终端,因其信息量巨大,所以必须压缩。通常人们采用DSP与MPEG-4算法相结合的方案来实现,不仅编程工作量大,而且产品的成本高。本文所介绍的网络摄像机采用专用的MPEG-4压缩芯片、以嵌入式Linux作为操作系统,不仅
[单片机]
浅谈<font color='red'>AT91RM9200</font>的嵌入式网络摄像机的设计与实现
VxWorks中的地址映射
作者Email: hnjinyuhe@163.net 在运用嵌入式系统VxWorks和MPC860进行通信系统设计开发时,会遇到一个映射地址不能访问的问题。 缺省情况下,VxWorks系统已经进行了如下地址的映射: memory地址、bcsr(Board Control and Status)地址、PC_BASE_ADRS(PCMCIA)地址、Internal Memory地址、rom(Flach memory)地址等,但是当你的硬件开发中要加上别的外设时,如(falsh、dsp、FPGA等),对这些外设的访问也是通过地址形式进行读写,如果你没有加相应的地址映射,那么是无法访问这些外设的。 和VxWorks缺省地址
[应用]
BSQUARE 推出针对TI 的OMAP35x的BSP
日前,BSQUARE 公司宣布针对德州仪器 (TI) 基于 Cortex™-A8 处理器的OMAP35x 评估板 (EVM) 推出 Windows Embedded CE 6.0 电路板支持套件 (BSP),从而可帮助 PC 编程人员与嵌入式开发人员在其熟悉的 Windows® 操作环境中进行嵌入式产品设计,同时又避免了耽误宝贵的设计时间或增加额外成本。工业、车载以及消费类应用的设计人员现在可获得免费的源代码以满足 Windows Embedded CE 操作系统设计的要求,而且与基于嵌入式开放源代码的创建方案相比,还可显著加速 OMAP35x 产品的上市进程。 经制造测试的 BSP 集成了 Windo
[嵌入式]
实时操作系统VxWorks
VxWorks组成部分 VxWorks 操作系统包括了进程管理、存储管理、设备管理、文件系统管理、网络协议及系统应用等几个部分。VxWorks只占用了很小的存储空间,并可高度裁减,保证了系统能以较高的效率运行。 VxWorks由以下几个主要部分组成: 1.高性能的实时操作系统核心 wind VxWorks 的核心,被称作 wind,包括多任务调度(采用优先级抢占方式),任务间的同步和进程间通信机制以及中断处理,看门狗和内存管理机制。一个多任务环 境允许实时应用程序以一套独立任务的方式构筑,每个任务拥有独立的执行线程和 它自己的一套系统资源。进程间通信机制使得这些任务的行为同步、协调。 wind使用中断驱动和优先级的方式。它缩短
[嵌入式]
Atmel和TimeSys为AT91SAM9 提供免费Linux BSP
两家公司将进一步扩展现有的合作关系 加强以Linux为基础的应用开发工作 爱特梅尔公司 (Atmel Corporation) 和TimeSys 公司宣布提供免费的Linux 板级支持包 (Board Support Package, BSP),用于爱特梅尔以ARM9为基础的AT91SAM9 微控制器。这款 BSP 支持整个系列的 SAM9 产品,包含爱特梅尔的 Linux 内核和驱动程序、用于基本命令的BusyBox 功能,以及一个能够重新构建 Linux 内核以及基本软件包的 Linux 主机/交叉工具链。此外,还备有全部的文献资料和支持服务,为测试带有爱特梅尔微控制器的 Linux 系统提供了可用的套件。 爱特梅尔是 T
[新品]
基于VxWorks的多串口卡通信实现
    VxWorks操作系统是美国Wind River公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),良好的持续发展能力、高性能的内核以及友好的用户开发环境,使其在嵌入式实时操作系统领域居于领先地位,广泛应用于现代的各种嵌入式计算机系统中,比如军事指挥系统、武器控制系统或工业控制系统中。而在这些系统中,往往不是单个计算机的控制,而是多个计算机以及其他设备组成通信网络共同完成控制作用,因此,对于每一个嵌入式计算机除了连接必需的外设之外,还需要考虑计算机之间的通信。计算机间常用的通信方式是利用串行口来实现的。本文在VxWorks多串口通信的实现过程中未采用常见的标准VxWorks虚拟设备ttyDrv驱动方式,而是在用户
[嵌入式]
VxWorks体系下PowerPC860处理器串行总线设计
引言   目前,嵌入式浏览器已经逐渐成为高端手机和PDA的标准配置。Konqueror/embedded作为嵌入式Linux操作系统的首选浏览器得到了广泛使用。但是由于该浏览器是自由软件,因此向具体嵌入式平台移植时存在一定的难度。本文主要介绍了Konqueror/embedded 向ARM-Linux平台上的整个移植和汉化过程,以便工程师参考和使用。 Konqueror/embedded的结构   Konqueror/embedded 是由底层网络连接,图形化用户界面和处理HTML绘制的引擎KHTML构成的。底层的通信协议实现是基于KIO/slave机制来实现的;GUI界面采用 Kparts组建技术和Qt的基本构件;而作为K
[工业控制]
VxWorks for X86的输入输出定向
Email: jinyuhe@163.com 摘要: 此文主要介绍在嵌入式系统VxWorks中针对X86开发时标准输入输出的重定向 关键词: PC console 重定向 嵌入式系统 VxWorks 实时操作系统 RTOS 前言: VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是嵌入式开发环境的关键组成部分。良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域占据一席之地。它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。实时
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved