ImageVerifierCode 换一换
格式:DOCX , 页数:39 ,大小:219.69KB ,
资源ID:23180173      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23180173.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(VxworksBSP开发流程.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

VxworksBSP开发流程.docx

1、VxworksBSP开发流程Vxworks BSP开发1 板级支持包的介绍2 VxWorks 映象及启动顺序3 VxWorks 预内核初始化4 BSP的配置5 BSP的开发6 VxWorks 下设备驱动程序概述板级支持包的介绍一板级支持包简述在 VxWorks 系统中,对 BSP的简单描述为:介于底层硬件环境和 VxWorks 之间的一个软件接口, 它的主要功能是在系统加电后初始化目标机硬件、 初始化操作系统、 提供部分硬件的驱动程序。具体功能包括:(1) 初始化。所谓初始化就是指从系统上电复位开始,到 VxWorks 开始初始化用户应用(即系统执行到 usrAppInit 函数处)的一段时间

2、内系统所执行的过程。这个过程主要包括三个部分的工作:CPU初始化。初始化 CPU的内部寄存器。目标机初始化。初始化控制芯片的寄存器,I/O 设备的寄存器,为整个软件系统提供底层硬件环境的支持。系统资源初始化。为操作系统及系统的正常运行做准备, 进行资源初始化,如空间分配等等。(2) 使 VxWorks 能够访问硬件驱动程序。这主要是指 VxWorks 包含必要的设备驱动程序和相关设备的初始化。(3)在 VxWorks 系统中,集成了与硬件相关的软件和部分与硬件无关的软件。二板级支持包与 VxWorks从上面的图中,我们可以看到, BSP不是设备驱动程序,因为设备驱动程序可以访问硬件设备,同时,

3、相同设备的驱动程序可以不作修改的从一个环境移植到另外一个环境当中去,而 BSP只能在特定的环境下面运行。简单地说, BSP开发人员要完成两个方面的工作:(1) 完全支持 BSP管理设备(2) 通用设备驱动程序的集成工作三 BSP的组成BSP包含的程序是提供 VxWorks 访问目标机硬件环境的主要接口。 BSP主要由下面几类文件组成。1 源文件主要是由 C 语言编写的代码所组成的文件,也有一小部分由汇编语言编写而成。2 头文件包含针对 CPU板的硬件定义以及内存定位定义的文件。3 Make file 文件控制构造所有类型映象的文件4 派生文件由其他文件衍生而成的文件。BSP的组成文件主要包含在

4、以下四个目录里面:.Tornadotargetconfigall.TornadotargetconfigcompsvxWorks.Tornadotargetconfigcompssrc bspname1. .targetconfigall 目录下的文件这个目录下的文件作为 VxWorks 体系结构产品的一部分交给用户 .如果不是特殊需要的话,没有必要修改这些文件。简单的说, configall 下的文件并不是特定 BSP 的一部分,而是所有 BSP的公共部分。该目录下主要包含如下几个文件:(1) bootConfig.c引导 ROM 映象的主要初始化和控制文件.(2) bootInit.Cbo

5、otInit.c 包含引导 ROM 映象第二阶段初始化的代码。该文件定义了 romStart() 函数,romInit.s 中的 romInit() 函数执行完毕后会跳转到 romStart() 函数。该函数执行必要的代码压缩和ROM 型映象的重定位。(3) dataSegPad.c它保证了代码段和数据段不会共享一个 MMU.(4) usrCongif.c包含了 VxWorks 映象的主要初始化代码。不同于 bootInit.c 文件,它是非常完整的。(5) version.c提供了 VxWorks 的版本号、构造映象的日期和时间等信息。(6) configAll.h设置了所有如果需要的VxW

6、orks 映象的默认设置。在这个文件里定义的变量是一些通用的设置,VxWorks 映象不同于默认的设置, 使用 bspname 目录下的 config.h文件中定义的宏来替换这里定义的默认宏。2. bspname 目录下的文件这个子目录包含系统或者硬件相关的 BSP文件 ,主要由下面的一些文件组成。(1) Readme 文件Readme 文件包含了这个 BSP的发布记录。它记录了每次发布版本、修订版本和新版本上面所做的工作。(2) Makefile 和depend. bspname文件Makefile 文件控制使用命令行方式构造映象。 从 VxWorks5.2 开始, 标准的 make 工具是

7、GNU make。BSP make系统包含了位于 targethmake 目录下的 make 子文件。如果某个相关性文件不存在, make 将自动产生一个 depend. bspname 文件,它可以用来追踪所有模块的相关性。(3) Config.h 文件Config.h 文件包含了所有头文件和CPU板相关的特殊定义。标准的config.h包含下面的内容:BSP版本号和修订版本号包含 configAll.h 文件高速缓冲存储器和 MMU 的配置共享内存网络定义目标板上的内存地址和大小ROM 地址和大小非易失性 RAM默认的引导参数时间戳驱动程序支持外部总县地址映射网络设备和中断向量包含 bsp

8、name.h 文件(4) romInit.s 文件该文件包含引导 ROM 和基于引导 ROM 的 VxWorks 映象的入口初始化汇编代码。入口点为 romInit() 函数,是系统加电启动后首先执行的代码。 同时它也设置了启动参数类型,并把该参数传递给通用的 romStart() 函数。如果硬件需要立即内存映射或者设置特殊的寄存器,则在这里处理。一个普遍的错误是 BSP的开发人员企图在 romInit.s 文件中进行过多的初始化操作。实际上,大部分其他初始化操作是被推迟到 sysHwInit()函数中进行的。另外, romInit.s件中的代码不应当被其它的函数或者模块所调用。文(5) sy

9、sALib.s这个文件包含目标机体系结果所决定的、 与系统有关的汇编语言程序。当用 C 语言来编写, 然而由于编译等原因需要用汇编语言程序编写的时候,所有BSP程序应可以把所有汇编语言编写的程序代码放在 sysALib.s 中。sysALib.s 文件里的 sysInit()函数是 VxWorks 映象的入口点。系统引导之后,首先执行该段代码。(6) sysLib.c这个文件包含目标机体系结构所决定的、 与系统有关的 C 程序。这些程序提供板极接口,基于这些板极接口, VxWorks 和应用程序的构造和系统无关。 sysLib.c 文件中包含了对驱动程序的安装和初始化工作,这些工作具体在一些子

10、文件中实现,比如 sysSerial.c、sysScsi.c、sysNet.c 等。使用子文件的目的是为了保持设备驱动程序的安装和初始化不随结构的变化而改变。(7) sysSerial.cSIO设备串行 I/O 设备驱动程序的安装和初始化(8) sysScsi.c包含 SCSI-2设备驱动程序的安装和初始化(9) sysNet.c网络接口程序的安装和初始化(10) bspname.h与目标板有关的特殊信息的定义(11) target.nr这个文件了运行 VxWorks 必须需要的目标板特殊信息(12) configNet.h网络配置头文件。主要包含 END网络设备驱动程序的配置。3. .tar

11、getconfigcompsvxWorks 目录下的文件VxWorks 实时内核基本模块描述文件 .4. .targetconfigcompssrc 目录下的文件VxWorks 实时内核基本模块配置文件 .四 BSP开发下面对 BSP的开发做一下宏观上面的描述 :(1)BSP的开发步骤应当是一个逐步增加应用的过程(2)开发过程中的软、硬件支持( ICE、BMD)(3)开发效率的提高(4)BSP的调试方法ICE 调试法仿真器主机映象目标板并 口数据线BDM调试法主机BDM 适配器目标板 BDM 口并 口数据线黑调试法利用亮灯、示波器等手段。VxWorksICE、 ROM仿真器等五 Tornado

12、 目录结构Tornado 开发系统包含三个高度集成的部分:运行在宿主机和目标机上功能强大的交叉开发工具和实用程序运行在目标机上的高性能、可裁剪的实时操作系统连接宿主机和目标机的连接方式,如以太网、串口线、Tornado 下的主要目录如下:Host 目录树Target 目录树VxWorks 映象及启动顺序最小的初始化处理是由防在目标机内存特殊位置的一部分代码和可能的一些表 (中断描述表、全局描述表)组成。当目标机复位或者加电以后,处理器总是跳转到这个位置。这部分代码初始化机器到某一个指定的状态上、 初始化内存和内存地址、 关中断, 然后把控制权交给附加引导代码。一 VxWorks 映象类型系统把

13、 VxWorks 映象的类型分成三种,各类型的影响内部又包含不同的子类型。1 可加载( Loadable)的映象类型可加载型映象的执行需要通过引导代码把它装载到目标机RAM 中,然后才开始执行。而引导代码分为两中:引导代码固化在ROM或 FLASH中引导代码是一个独立的VxWorks 应用引导代码通常也是一种VxWorks 映象,有时候称之为引导映象。 它的设计目的就是把另一个包含应用的VxWorks 映象装入到RAM中。引导映象在运行时,可能在ROM/FLASH中执行,也可能在RAM中执行。2 基于 ROM( ROM-based)的映象类型基于 ROM 型映象在执行前首先把自己从ROM 或者

14、 FLASH中装载到 RAM 中。这种类型的映象通常在启动阶段会比较慢,但是执行阶段比较快。3 ROM 驻留( ROM-Resident)的映象类型ROM 驻留型映象在启动的时候, 把数据段拷贝到目标机RAM 中。这种类型的映象通常在启动的时候会比较快,当目标机的RAM 空间比较小的时候,通常使用这种映象。在嵌入式应用中通常使用这种类型的映象,然而它在目标机上的执行速度要比其它类型的映象要慢。二 VxWorks 映象启动顺序在目标机加电启动时发生的顺序启动事件是一个典型VxWorks 映象需要执行的功能。所有类型的 VxWorks 映象在初始化阶段启动顺序是一样的,处理器通过 ”Jump”跳转

15、指令跳转到 ROM 或者 Flash 中引导代码的入口处,这段引导代码通常包含如下的操作:关中断初始化目标机内存装载适当的 VxWorks 映象段跳转到设置目标机为静止状态的代码处1 可加载型 VxWorks 映象引导顺序可加载型 VxWorks 映象引导的详细过程如下:(1) 数据段和代码段的装入。系统加电后执行引导带代码,首先把引导代码的代码段和数据段从 ROM或者 FLASH里装到 RAM中。此时,需要考虑下面的情况:压缩型引导代码。 这种类型的引导代码在拷贝的时候, 要对其进行解压操作。非压缩型引导代码。这种类型的引导代码直接进行拷贝操作就可以了。驻留型引导代码。这种类型的引导代码只拷

16、贝它的数据段就可以了。( 2)VxWorks 映象的装入。引导代码执行后,把VxWorks 映象装入到RAM中,然后跳转到 VxWorks 映象装入点。(3) 系统初始化。 这步操作由静态链接在 VxWorks 映象里的系统初始化代码来完成,最终完成系统的初始化操作。2 基于 ROM的 VxWorks 映象启动顺序引导带程序VxWorks 映象基于 ROM 的VxWorks 映象基于 ROM的 VxWorks 映象启动详细过程如下:( 1) VxWorks 映象的装入。 系统加电后引导代码的执行, 首先将 VxWorks 映象从 ROM 或者 FLASH里装入到 RAM中。( 2)控制权转移。

17、 VxWorks 映象被装入之后,系统控制权交给VxWorks 映象中的系统初始化代码部分( 3)系统初始化。静态链接在VxWorks 中的系统初始化代码在RAM里执行,完成系统初始化操作3 ROM驻留型 VxWorks 映象启动顺序基于 ROM驻留型的 VxWorks 映象启动详细过程如下:( 1)VxWorks 映象的装入。系统加电后引导代码的执行,首先将VxWorks 映象的数据段从 ROM或者 FLASH里装入到 RAM中。( 2)控制权转移。 VxWorks 映象被装入 RAM之后,系统控制权交给ROM/Flahs 里的VxWorks 映象中的系统初始化代码部分(3) 系统初始化。静

18、态链接在 VxWorks 中的系统初始化代码执行,完成系统初始化操作引导带程序VxWorks 代码段VxWorks 数据段VxWorks 数据段三典型的 VxWorks 映象1 VxWorks2 VxWorks.st3 VxWorks_rom4 VxWorks.st_rom5 VxWorks.res_rom6 VxWorks.res_rom_nosym7 Bootrom8 Bootrom_uncmp9 Bootrom_resVxWorks 预内核初始化预内核初始化主要是指 CPU的初始化、 向量表的安装、 全局描述表的安装、 目标机上硬件设备的初始化、操作系统初始化等操作。一 预内核初始化概述

19、( 1) 下载型 VxWorks 映象预内核的初始化顺序目标机系统加电后, 首先执行 VxWorks 引导程序, 由引导程序把 VxWorks 映象装载到目标机 RAM中。当把 VxWorks 映象装入到 RAM之后,处理器跳转到映象装入地址处。 接下来首先执行 sysInit() 函数,然后执行 usrInit 函数,由 usrInit() 函数彻底完成整个预内核的初始化。( 2) ROM型 VxWorks 映象预内核的初始化顺序目标系统加电后,首先执行 romInit() 函数,其功能是对romStart() 函数进行映象段的拷贝和解压缩工作,然后执行CPU进行初始化,然后执行usrIni

20、t 函数,由 usrInit()函数彻底完成整个预内核的初始化。二 预内核的特殊初始化函数VxWorks 映象里的特殊函数如下:romInit() 函数romStart() 函数sysInit() 函数romInit() 函数和romStart函数是所有固化在ROM/Flash里的VxWorks 映象(ROM型VxWorks 映象)所必须执行的函数,而sysInit()函数仅仅只是所有装载型VxWorks 映象执行的函数。1 romInit()函数(1) romInit() 函数功能简述romInit() 函数包含在 romInit.s 文件中,且用汇编语言编写。它是系统加电后首先执行的代码,

21、也是所有 ROM型 VxWorks 映象入口点。它执行目标机最小的初始化操作及调用 romStart() 函数。 romInit() 函数必须包含下面的功能:屏蔽处理器中断和处理器复位初始化系统内存初始化堆栈指针和其他寄存器,开始执行 romStart ()函数及传递启动参数(2) 冷启动和热启动冷启动是指硬件环境通过加电启动。在 romInit() 函数中需要保存系统启动类型,启动类型的宏定义为 BOOT_COLD。热启动是指通过调用 reboot() , Ctrl+X 或者异常中断等重新启动目标机系统的方式。2 romStart() 函数romStart() 函数是所有固化在 ROM/Fl

22、ash 里 VxWorks 映象第一个执行的 C 语言函数。(1) romStart() 函数的功能描述romStart() 函数包含在 ./all/bootInit.c 文件中,并且用 C 语言编写成。它是系统最先执行的一个 C 语言程序,为 ROM映象执行必要的代码重定位、解压缩和 RAM初始化操作,具体如下:拷贝适当的 ROM映象段到 RAM中清理没有被使用的那部分内存执行解压缩操作(如果有必要)调用预内核的通用初始化程序 usrInit()(2) romStart() 的修改在 BSP的开发过程中,可能需要修改bootInit.c文件。这个文件是BSP的一个公用文件,所以对于该文件的修

23、改,情况比较特殊,具体步骤如下: 拷 贝 bootInit.c文 件 。 bootInit.c文件是一个公用文件,所以不可以直接修改.config/all目录下的 bootInit.c文件,而是应该把该文件拷贝到某个BSP目录下,然后修改这个 BSP目录下的 bootInit.c文件。修改 makefile 文件。为了链接拷贝的bootInit.c文件,而不是原始的文件,需要修改BSP目录下的 makefile文件。在 HEX_FLAGS宏定义后面增加一行:BOOTINIT = bootInit.c在构造 VxWorks 映象的控制文件 rules.bsp文件中,系统通过使用BOOTINIT宏

24、定义来访问bootInit.c文件。这个宏定义的默认的访问的值是./config/all/bootInit.c文件。(3) romStart() 配置宏定义(4) ROM和 RAM的布局3 sysInit() 函数(1) sysInit() 函数功能描述sysInit() 函数是装载型 VxWorks 映象的入口点。当映象被装载到 RAM中以后,处理器将跳转到 sysInit() 函数处执行。该函数原形在 sysAlib.s 中,是用汇编语言编写成的。当映象被装载到 RAM中, sysInit() 函数驻留在装载型 VxWorks 映象的装载地址处。它执行必须的最小初始化操作以及调用 usrI

25、nit() 函数,而硬件初始化推迟到预内核通用初始化代码中进行。(2) sysInit() 代码的获得sysInit() 函数的代码可以通过修改 romInit() 函数的代码获得,仅仅需要修改一些便可以得到 sysInit(0 函数代码:删除内存初始化代码把调用 romStart() 函数改为调用 usrInit() 函数sysInit() 函数在 RAM中执行,所以不需要设计成与地址无关的代码(3) RAM布局三 预内核的通用初始化代码1.通用初始化代码概述(1) 通用初始化代码的职责通用初始化代码必须为 VxWorks 内核提供一个环境,以便激活 VxWorks 内核内核代码执行后,初始

26、化系统需要的系统内存空间或者多任务环境(2) 通用初始化预内核的通用初始化操作是通过 usrInit() 进行的,该函数是用 C语言编写的。其原型函数包含在 usrConfig.c 文件中。 当构造 VxWorks 文件的时候, 它被静态链接到映象中。 系统调用该函数也就激活了 VxWorks 内核。而初始化硬件的操作,主要是通过调用 sysHwInit() 函数来实现的,该函数主要包含主要功能如下:屏蔽所有硬件设备的中断初始化硬件设备到可知的静止状态BSP的配置用户在开发自己的目标机 BSP之前,必须了解在 VxWorks 操作系统下 BSP的配置,只有在熟悉 BSP的配置之后才可以正确对

27、BSP进行移植和修改工作, 并根据自己的需要成功的配置一个 BSP。一 BSP的基本配置(1) ROM和 RAM布局用户可以根据目标机的具体情况对 ROM和 RAM的空间布局进行配置, 配置过程主要是通过修改地址宏定义的值而达到的, 在 config.h 文件中定义了这些宏。 在修改这些宏的时候,需要注意的是,同时也将 makefile 文件中定义的宏做对应的修改。(2) 内存配置内存配置包括用户驻留程序的内存基地址、 局部总线内存基地址、 内存基地址以及内存大小等。(3) 启动设备及参数配置启动设备及参数配置主要包含引导参数的配置, 即从哪里下载 VxWorks 映象、系统热启动之后从什么设

28、备上启动系统以及设备相关的其它参数的配置:默认引导参数配置热启动设备和参数配置(4) 外围设备驱动程序及相关参数的配置配置 TrueFFS 驱动程序配置软盘驱动程序并行端口驱动程序时钟配置浮点处理支持硬盘配置串口配置(5) 文件系统配置(6) 网络驱动程序配置(7) 高级缓存配置(8) 堆栈配置二 VxWorks 的基本配置(1) 内核软件的配置(2) 内核软件工具的配置(3) 内核软件扩展工具的配置VxWorks 下设备驱动程序概述VxWorks 下的设备驱动程序在设计上继承了常规驱动程序的设计, 同时也包含了自己的独到之处。 VxWorks 下的设备驱动程序都以模块为单位、 各个模块之间功能明确、 接口规范。VxWorks 设备驱动程序是一个直接控制下层设备的上层软件接口。一 VxWorks 下常用设备驱动程序源文件如下:二 VxWorks 下设备驱动程序的配置配置 VxWorks 下系统自带的设备驱动程序, 是一个非常简单的事情,中找到驱动对应的宏,就可以把设备驱动程序添加到系统中了。只要在相关的文件在 bspname目录下,可以找到 config.h 文件,在这

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1