版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Vxworks BSP 开发1板级支持包的介绍2VxWorks 映象及启动顺序3VxWorks 预内核初始化4BSP的配置5BSP的开发6VxWorks 下设备驱动程序概述。3板级支持包的介绍一.板级支持包简述在VxWorks系统中,对BSP的简单描述为:介于底层硬件环境和 VxWorks之间的一个软 件接口,它的主要功能是在系统加电后初始化目标机硬件、初始化操作系统、提供部分硬件的驱动程序。具体功能包括:(1) 初始化。所谓初始化就是指从系统上电复位开始,到VxWorks开始初始化用户应用(即系统执行到 usrAppI nit函数处)的一段时间内系统所执行的过程。这个过程主要包括 三个部分的
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的组成文件主要包含在以下四个目录里面:.Tornadotargetc on figal
4、l.Tornadotargetc on figcompsvxWorks.Tornadotargetc on figcompssrcbsp name1. .targetconfigall目录下的文件这个目录下的文件作为 VxWorks 体系结构产品的一部分交给用户 . 如果不是特殊需要的 话,没有必要修改这些文件。简单的说,configall 下的文件并不是特定 BSP的一部分,而是所有BSP的公共部分。该目录下主要包含如下几个文件:(1) bootConfig.c引导ROM映象的主要初始化和控制文件.(2) bootInit.CbootInit.c 包含引导ROM映象第二阶段初始化的代码。该文
5、件定义了 romStart()函数, romInit.s 中的 romInit() 函数执行完毕后会跳转到 romStart() 函数。 该函数执行必要 的代码压缩和ROM型映象的重定位。(3) dataSegPad.c它保证了代码段和数据段不会共享一个 MMU.(4) usrCongif.c包含了 VxWorks 映象的主要初始化代码。不同于 bootInit.c 文件,它是非常完整的。(5) version.c提供了 VxWorks 的版本号、构造映象的日期和时间等信息。(6) configAll.h设置了所有VxWorks映象的默认设置。 在这个文件里定义的变量是一些通用的设置,如果需要
6、的VxWorks映象不同于默认的设置,使用bspname目录下的config.h文件中定义的宏来替换这里定义的默认宏。2. bsp name目录下的文件这个子目录包含系统或者硬件相关的BSP文件,主要由下面的一些文件组成。 Readme文件Readme文件包含了这个 BSP的发布记录。它记录了每次发布版本、修订版本和新版本上面所做的工作。(2) Makefile 和 depend. bspname文件Makefile 文件控制使用命令行方式构造映象。从VxWorks5.2开始,标准的 make工具是GNUmakeb BSPmake系统包含了位于 targethmake目录下的 make子文件。
7、如果某个相关性文件不存在,make将自动产生一个depend. bspname文件,它可以用来追踪所有模块的相关性。(3) Config.h 文件Config.h文件包含了所有头文件和CPU板相关的特殊定义。标准的config.h 包含下面的内容: BSP版本号和修订版本号 包含configAll.h 文件高速缓冲存储器和 MMU 勺配置 共享内存网络定义 目标板上的内存地址和大小 ROM地址和大小 非易失性 RAM 默认的引导参数 时间戳驱动程序支持 外部总县地址映射 网络设备和中断向量 包含 bspname.h 文件(4) romInit.s 文件该文件包含引导 ROM和基于引导 ROM勺
8、VxWorks映象的入口初始化汇编代码。入口点为romInit() 函数,是系统加电启动后首先执行的代码。同时它也设置了启动参数类型, 并把该参数传递给通用的 romStart() 函数。如果硬件需要立即内存映射或者设置特殊 的寄存器,则在这里处理。一个普遍的错误是BSP的开发人员企图在 romI ni t.s文件中进行过多的初始化操作。实际上, 大部分其他初始化操作是被推迟到 sysHwInit() 函数中进行的。 另外, romInit.s 文件中的代码不应当被其它的函数或者模块所调用。(5) sysALib.s这个文件包含目标机体系结果所决定的、与系统有关的汇编语言程序。 所有BSP程序
9、应当用C语言来编写,然而由于编译等原因需要用汇编语言程序编写的时候,可以把所有汇编语言编写的程序代码放在 sysALib.s 中。sysALib.s文件里的syslnit() 函数是VxWorks映象的入口点。系统引导之后,首先执 行该段代码。(6) sysLib.c这个文件包含目标机体系结构所决定的、与系统有关的C程序。这些程序提供板极接口,基于这些板极接口, VxWorks和应用程序的构造和系统无关。sysLib.c 文件中包含了对驱动程序的安装和初始化工作, 这些工作具体在一些子文件中实现, 比如 sysSerial.c 、 sysScsi.c 、 sysNet.c 等。使用子文件的目的
10、是为了保持设备驱动程序的安装和初始化 不随结构的变化而改变。(7) sysSerial.cSIO设备串行I/O设备驱动程序的安装和初始化(8) sysScsi.c包含SCSI-2设备驱动程序的安装和初始化(9) sysNet.c网络接口程序的安装和初始化(10) bsp nameh与目标板有关的特殊信息的定义(11) target. nr这个文件了运行 VxWorks必须需要的目标板特殊信息(12) con figNet.h网络配置头文件。主要包含END网络设备驱动程序的配置。3. .targetc on figcompsvxWorks目录下的文件VxWorks实时内核基本模块描述文件.4.
11、.targetc on figcompssrc目录下的文件VxWorks实时内核基本模块配置文件.四.BSP开发下面对BSP的开发做一下宏观上面的描述:(1) BSP的开发步骤应当是一个逐步增加应用的过程(2) 开发过程中的软、硬件支持(ICE、BMD(3) 开发效率的提高(4) BSP的调试方法-ICE调试法仿真器-BDM调试法黑调试法利用亮灯、示波器等手段。9五.Torn ado 目录结构Tornado开发系统包含三个高度集成的部分:运行在宿主机和目标机上功能强大的交叉开发工具和实用程序运行在目标机上的高性能、可裁剪的实时操作系统VxWorks连接宿主机和目标机的连接方式,如以太网、串口线
12、、ICE、ROM仿真器等Tornado下的主要目录如下:1 niX_1lul IE HHSRAK4 I DW ARKSKAM AIXSHir:H M IJf可加载型VxWorks映象引导的详细过程如下:(1) 数据段和代码段的装入。系统加电后执行引导带代码,首先把引导代码的代码 段和数据段从 ROM或者FLASH里装到RAM中。此时,需要考虑下面的情况:压缩型引导代码。这种类型的引导代码在拷贝的时候,要对其进行解压操作。非压缩型引导代码。这种类型的引导代码直接进行拷贝操作就可以了。驻留型引导代码。这种类型的引导代码只拷贝它的数据段就可以了。(2) VxWorks映象的装入。引导代码执行后,把V
13、xWorks映象装入到 RAM中,然后跳转到VxWorks映象装入点。(3) 系统初始化。这步操作由静态链接在 VxWorks映象里的系统初始化代码来完成, 最终完成系统的初始化操作。2.基于ROM勺VxWorks映象启动顺序引导带程序:-VxWorks 映象基于ROM的VxWorks 映象基于ROM勺VxWorks映象启动详细过程如下:(1) VxWorks映象的装入。系统加电后引导代码的执行,首先将VxWorks映象从ROM或者FLASH里装入到RAM中。(2) 控制权转移。VxWorks映象被装入之后,系统控制权交给VxWorks映象中的系统初始化代码部分(3) 系统初始化。静态链接在
14、VxWorks中的系统初始化代码在 RAM!执行,完成系 统初始化操作3. ROM驻留型VxWorks映象启动顺序基于ROM主留型的VxWorks映象启动详细过程如下:(1) VxWorks映象的装入。系统加电后引导代码的执行,首先将VxWorks映象的数据段从ROM或者FLASH里装入到RAM中。(2) 控制权转移。VxWorks映象被装入 RAM之后,系统控制权交给 ROM/Flahs里的 VxWorks映象中的系统初始化代码部分(3) 系统初始化。静态链接在 VxWorks中的系统初始化代码执行,完成系统初始化 操作.典型的VxWorks映象1.VxWorks2.VxWorks.st3.
15、VxWorks_rom4.VxWorks.st_rom5.VxWorks.res_rom6.VxWorks.res_rom _no sym7.Bootrom&Bootrom_ uncmp9.Bootrom_resVxWorks预内核初始化预内核初始化主要是指 CPU的初始化、向量表的安装、全局描述表的安装、目标机上硬 件设备的初始化、操作系统初始化等操作。一.预内核初始化概述(1) 下载型VxWorks映象预内核的初始化顺序目标机系统加电后, 首先执行VxWorks引导程序,由引导程序把 VxWorks映象装载到目 标机RAM中。当把VxWorks映象装入到 RAM之后,处理器跳转到映象装入地
16、址处。接下来首先执行syslnit()函数,然后执行 usrlnit 函数,由usrlnit() 函数彻底完成整个预内核的初始化。加电:JMfVxWorkslJ引导映線丄装戟VxWorks 诀象跳转到装载VxWorks快氟的地址处:syslnitt)1。1usrfniti)syjHvlniK ikeniellnitO(2)ROM型 VxWorks映象预内核的初始化顺序目标系统加电后,首先执行romI nit()函数,其功能是对CPU进行初始化,然后执行romStart()函数进行映象段的拷贝和解压缩工作,然后执行usrlnit 函数,由usrlnit() 函数彻底完成整个预内核的初始化。忙电:
17、rem (n in)装妆映繚出到RAM+1roni5JiarUl所有类型Works映象 的通用代码usrlililOy svsFTwlntr()kemcllnit( I二 预内核的特殊初始化函数VxWorks 映象里的特殊函数如下: romI nit()函数 romStart()函数 sysInit() 函数romInit() 函数和romStart 函数是所有固化在 ROM/Flash里的VxWorks映象(ROM型 VxWorks映象)所必须执行的函数,而 sysInit() 函数仅仅只是所有装载型 VxWorks映象执 行的函数。1 romInit() 函数(1) romInit() 函
18、数功能简述romInit() 函数包含在 romInit.s 文件中,且用汇编语言编写。它是系统加电后首先执 行的代码,也是所有 ROM型VxWorks映象入口点。它执行目标机最小的初始化操作及调用 romStart() 函数。 romInit() 函数必须包含下面的功能:屏蔽处理器中断和处理器复位初始化系统内存 初始化堆栈指针和其他寄存器,开始执行 romStart ()函数及传递启动参数( 2) 冷启动和热启动冷启动是指硬件环境通过加电启动。在 romInit() 函数中需要保存系统启动类型,启动 类型的宏定义为 BOOT_COLD热启动是指通过调用 reboot() , Ctrl+X 或
19、者异常中断等重新启动目标机系统的方式。 2 romStart() 函数romStart()函数是所有固化在ROM/Flash里VxWorks映象第一个执行的 C语言函数。(1) romStart() 函数的功能描述romStart()函数包含在./all/bootlnit.c文件中,并且用 C语言编写成。它是系统最先执行的一个C语言程序,为 ROM映象执行必要的代码重定位、解压缩和RAM初始化操作,具体如下:拷贝适当的ROM映象段到RAM中 清理没有被使用的那部分内存 执行解压缩操作(如果有必要) 调用预内核的通用初始化程序 usrInit()(2) romStart() 的修改在BSP的开发
20、过程中,可能需要修改boot In it.c文件。这个文件是 BSP的一个公用文件,所以对于该文件的修改,情况比较特殊,具体步骤如下: 拷贝 bootInit.c 文件。 bootInit.c 文件是 一个公用文件, 所以不可 以直接 修 改.config/all目录下的bootInit.c 文件,而是应该把该文件拷贝到某个 BSP目录下,然后修改这个BSP目录下的boot In it.c 文件。修改 makefile 文件。为了链接拷贝的 bootInit.c 文件,而不是原始的文件,需要修改 BSP目录下的 makefile 文件。在HEX_FLAG宏定义后面增加一行:BOOTINIT =
21、 bootInit.c在构造VxWorks映象的控制文件rules.bsp 文件中,系统通过使用BOOTINIT宏定义来访问bootInit.c 文件。这个宏定义的默认的访问的值是./config/all/bootInit.c文件。( 3) romStart() 配置宏定义(4) ROM和RAM的布局ROM布局ROMBASEADRS-ROMSIZEr压缩型映象区域bin A11 ay EndbmArraySiart非压缩型映彖区域ROM_TtX7_ADR5R()M._BASF_A)RSRAM布局用八保留区域P冷启动时填充0ROM型映象重 新定位区域f保留堆栈区L冷启动时填充0用户保留区域Lfs
22、y7s Phys Mem top 0SYS_MEMJIVPIL4M_DST_ADRSSYS_MEM_OTTOMLOCAL MEM LOCAL ASRS3. sysl nit()函数(1) sysInit()函数功能描述sysl ni t()函数是装载型 VxWorks映象的入口点。当映象被装载到RAM中以后,处理器将跳转到syslnit()函数处执行。该函数原形在 sysAlib.s 中,是用汇编语言编写成的。当映象被装载到RAM中, syslnit()函数驻留在装载型 VxWorks映象的装载地址处。它执行必须的最小初始化操作以及调用usrlnit()函数,而硬件初始化推迟到预内核通用初始化
23、代码中进行。(2) sysl ni t()代码的获得sysl ni t()函数的代码可以通过修改roml nit()函数的代码获得,仅仅需要修改一些便可以得到syslnit(0函数代码:删除内存初始化代码把调用romStart()函数改为调用 usrlnit()函数 syslnit()函数在RAM中执行,所以不需要设计成与地址无关的代码(3) RAM布局RAM布局zVxWorks 映象最初的堆栈sysP/iysMem Top()LOCAL MEM LOCAL ADRS三 预内核的通用初始化代码1. 通用初始化代码概述(1) 通用初始化代码的职责通用初始化代码必须为VxWorks内核提供一个环境
24、,以便激活VxWorks内核内核代码执行后,初始化系统需要的系统内存空间或者多任务环境(2) 通用初始化预内核的通用初始化操作是通过usrl ni t()进行的,该函数是用C语言编写的。其原型函数包含在 usrConfig.c 文件中。 当构造 VxWorks 文件的时候, 它被静态链接到映象中。 系 统调用该函数也就激活了 VxWorks 内核。而初始化硬件的操作,主要是通过调用 sysHwlnit() 函数来实现的,该函数主要包含主 要功能如下:屏蔽所有硬件设备的中断初始化硬件设备到可知的静止状态1。17BSP的配置用户在开发自己的目标机BSP之前,必须了解在VxWorks操作系统下BSP的配置,只有在熟悉BSP的配置之后才可以正确对BSP进行移植和修改工作,并根据自己的需要成功的配置一个 BSP。一. BSP的基本配置(1) ROM和RAM布局用户可以根据目标机的具体情况对ROM和RAM的空间布局进行配置,配置过程主要是通过修改地址宏定义的值而达到的,在config.h 文件中定义了这些宏。在修改这些宏的时候,需要注意的是,同时也将 makefile 文件中定义的宏做对应的修改。( 2) 内存配置内存
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理安全风险识别与评估
- 售后服务质量检查结果反馈函(5篇)
- 环保意识人人有责-小学主题班会课件
- 护理信息技术应用
- 第一节 认识运动说课稿2025学年高中物理粤教版必修1-粤教版2005
- 确认下月销售目标的回复函6篇
- 供应链物流可视化跟进与优化方案
- 高中2025年数学竞赛说课稿
- 职场压力缓解有效方法指南
- 普外科护理师资培训质量监控
- 2026广东佛山市禅城区祖庙街道公有企业招聘初试笔试历年参考题库附带答案详解
- 《预算执行常态化监督发现问题纠偏整改操作指南(试行)》
- T-CCSAS 062-2026《行为安全观察与沟通实施指南》
- 2026年部编版语文五年级下册期末考试真题及答案(共3份)
- 物业工程安全管理培训(设备安全篇)
- 树仔菜种植技术
- 2025-2030无人船研发行业市场供需分析及智能航海前景评估研究规划报告
- 南通市中考英语真题精解2024
- 法务风险防控操作指南(标准版)
- 2026秋招:贵州遵钛集团试题及答案
- 电路板购销合同范本
评论
0/150
提交评论