《VxWorks基础知识》由会员分享,可在线阅读,更多相关《VxWorks基础知识(63页珍藏版)》请在金锄头文库上搜索。
1、VxWorks基础知识及开发流程nVxWorks介绍n关于BSP以及映像nTornado介绍n开发实例之一n开发实例之二n开发实例之三n映像启动流程 课程大纲 VxWorks VxWorks 是美国是美国 Wind River Wind River System System 公司(公司( 简称风河简称风河 公司公司 ,即,即 WRS WRS 公司)推出的一个实公司)推出的一个实时操作系统。时操作系统。VxWorks 嵌入式操作系统嵌入式操作系统VxWorksVxWorksWind内核多任务处理虚拟内存操作系统模块I/O子系统网络子系统目标开发工具V Vx xW Wo or rk ks s基基
2、本本体体系系结结构构 嵌入式操作系统嵌入式操作系统VxWorksVxWorkswindwind:VxWorks 的核心,被称作 wind,包括多任务调度(采用优先级抢占方式),任务间的同步和进程间通信机制,以及中断处理,看门狗定时器和内存管理机制。I/O系统系统:VxWorks 提供了一个快速灵活的与 ANSI C 兼容的 I/O 系统,包括 UNIX 标准的缓冲 I/O 和POSIX 标准的异步 I/O。VxWorks 包括以下驱动程序:网络驱动、管道驱动、RAM盘驱动、SCSI驱动、键盘驱动、显示驱动、磁盘驱动、并口驱动等。文件系统文件系统:支持四种文件系统:dosFs,rt11Fs,ra
3、wFs和tapeFs支持在一个单独的VxWorks系统上同时并存几个不同的文件系统。 嵌入式操作系统嵌入式操作系统VxWorksVxWorks实实用用库库:VxWorks 提供了一个实用例程的扩展集,包括中断处理、看门狗定时器、消息登录、 内存分配、字符扫描、线缓冲和环缓冲管理、链表管理和 ANSI C 标准。虚拟内存 :VxVMI 为带有 MMU 的目标板提供了虚拟内存机制。VxMP(Share-Memory Object) 提供了共享信号量,消息队列和在不同处理器之间的共享内存区域,用于不同CPU的通讯与同步。WBD协议:目标代理遵循 WBD(Wind Debug)协议,允许目标机与主机上
4、的 Tornado 开发工具相连。 Tornado 目标服务器(Target Server)向目标代理发送调试请求。 嵌入式操作系统嵌入式操作系统VxWorksVxWorks网络支持网络支持:它提供了对其它VxWorks系统和TCP/IP 网络系统的“透明”访问,包括与BSD套接字兼容的编程接口,远程过程调用(RPC),SNMP(可选项),远程文件访问(包括客户端和服务端的NFS机制以及使用RSH,FTP 或 TFTP的非NFS机制)以及BOOTP 和代理ARP、DHCP、DNS、OSPF、RIP。基于目标机的工具:在 Tornado 开发系统中,开发工具是驻留在主机上的。但是也可以根据需要将
5、基于目标机的Shell 和装载卸载模块加入 VxWorks。板级支持包 BSP :板级支持包向VxWorks操作系统提供了对各种板子的硬件功能操作的统一的软件接口,它是保证VxWorks操作系统可移植性的关键,它包括硬件初始化、中断的产生和处理、硬件时钟和计时器管理、局域和总线内存地址映射、内存分配等等。 每个板级支持包括一个 ROM 启动(Boot ROM)或其它启动机制。 嵌入式操作系统嵌入式操作系统VxWorksVxWorks BSP 以及映像 介绍BSP(BoradSupportPacket),板级支持包对单板的硬件功能提供了统一的软件接口,它包括硬件初始化、中断的产生和处理、硬件时钟
6、和计时器管理、内存地址映射、内存分配等等。每个板级支持包括一个ROM启动(BootROM)或其它启动机制。 嵌入式操作系统嵌入式操作系统VxWorksVxWorksBSP在单板软件中的地位:BSP硬件vxWorks等操作系统driverOSS 嵌入式操作系统嵌入式操作系统VxWorksVxWorks最小BSP的定义广义上讲,单板中所有控制CPU系统硬件的程序,都属于单板的BSP,但为了调试方便和软件的模块化,通常将与单板最小系统相关的程序简称为BSP,而将其他程序称为驱动程序。 对于嵌入式系统来说,所谓最小系统就是一个包含CPU, Bootrom, RAM,系统时钟,网口,串口的计算机运行环境
7、。其中之所以包含串口和网口,主要是因为系统调试的需要,通常网口用于软件调试,而串口用于通过计算机的超级终端来显示单板程序运行结果信息。系统时钟是一个多任务OS所必须的资源。因此最小系统BSP就包含了CPU系统的初始化程序以及网口,串口,系统时钟等设备的驱动程序。VxWorks系统中的BSP 针对某类CPU的硬件单板,vxWorks通常提供有其DEMO板的BSP,也就是我们所说的最小系统BSP。一般来说,我们在硬件系统设计好之后,都会先找到一个与自己系统相近的DEMO板BSP,并以此为基础,开发自己单板的BSP。 VxWorks为了最大限度的支持不同的硬件环境,也提供了一些常用硬件芯片的驱动程序
8、,它们通常是与具体CPU无关的设备,如一些PCI网口芯片,串口芯片等。这些驱动程序大多实现为CPU无关或很容易移植,可以方便的用于其他CPU平台。这也是开发驱动程序所应该遵循的原理。另外,我们的最小系统BSP,往往在默认情况下,使用这些驱动程序。BSP位于硬件平台与操作系统之间,类似普通操作系统的BIOS,用于对上层软件屏蔽各种硬件相关性。 给VxWorks提供硬件环境接口。BSP 主要负责:硬件上电初始化.支持 VxWorks访问硬件驱动.把硬件相关和无关的软件很好地结合到VxWorks。BSP不是硬件驱动程序:是一种访问硬件的硬件驱动程序硬件驱动分为通用和BSP有关两类。通用驱动管理可在目
9、标环境间移动的设备(如以太网芯片).BSP驱动管理特定目标环境的设备(如中断控制器)。BSP功能功能BSPs 和和VxWorks关系关系BootRom与VxWorks映象VxWorks借鉴了传统PC操作系统的引导原理,其将整个引导过程分为两个阶段:BOOTROM启动通过BOOTROM加载VxWorks映象BOOTROM相当于PC机中的BIOS,它完成对加载过程中所需设备的初始化及驱动;然后通过某种可选择的通讯手段(如网口,串口),将VxWorks内核映象到内存中,并执行。此处的VxWorks映象就相当于我们在PC机上装的操作系统,如DOS,Windows。 BOOTROM和VxWorks使用不
10、同方法来编译生成。BootromBootrom类型说明:类型说明:用于可加载VxWorks映象的Bootrom包含两部分:起始引导程序(BootStrapPrograms)和ROM引导程序(ROMBootPrograms)。 起始引导程序驻留在ROM中 , ROM引导程序起初存放在ROM中,初始化时被拷贝到RAM中 bootrom_uncmp.hex(未压缩的BOOTROM):未压缩的ROM引导程序,可直接拷贝,在RAM中执行bootrom.hex(压缩的BOOTROM):压缩的ROM引导程序,在拷贝的过程中需要解压缩,在RAM中执行bootrom_res.hex(驻留的BOOTROM):驻留
11、ROM的ROM引导程序,仅拷贝ROM引导程序的数据段,代码段仍旧在ROM中执行没有.HEX后缀的同名文件是其ELF格式的映象文件附表附表VxWorksVxWorks映象类型说明:映象类型说明:一、可加载的VxWorks映象这是一种运行于RAM的VxWorks映象。不包含搬移程序,需借助外部程序如bootRom才能加载到RAM。通过Ftp协议从主机加载到目标机中 。ROM/FLASHBootStartProgramsROMBootProgramsRAMVxWorksBootProgramsLocal_MEM_Local_ADRSRAM_LOW_ADRSFREE_RAM_ADRSRAM_HIGH_
12、ADRS主机主机FTPServer可加载可加载VxWorks映象映象附表附表VxWorksVxWorks映象类型说明:映象类型说明:二、基于ROM的VxWorks映象这是一种运行于RAM,但起初存放于ROM中的VxWorks映象。即该映象需要和搬移程序一起固化在BOOT中。该映象可分为:压缩的和未压缩的 ROM/FLASHBootStartProgramsROM_baseVxWorksimagesRAMVxWorksLocal_MEM_Local_ADRSRAM_LOW_ADRSFREE_RAM_ADRS基于基于ROM的的VxWorks映象映象附表附表VxWorksVxWorks映象类型说明:
13、映象类型说明:三、驻留ROM的VxWorks映象和搬移程序一起固化在BOOT中,仅将VxWorks映象的数据段和BSS段拷贝到RAM中,映象的代码段仍旧留在ROM中,从ROM中开始执行。该映象可分为:压缩的和未压缩的 。ROM/FLASHBootStartProgramsVxWorksTextRAMVxWorksData+BSSLocal_MEM_Local_ADRSRAM_LOW_ADRSFREE_RAM_ADRS驻留驻留ROM的的VxWorks映象映象VxWorksData+BSS映象从文件的组织形式上可分为: Text段段:存放的是可执行的代码。Data段段:存放的是已经初始化的全局变量
14、或静态变量; BSS段段:存放的是未初始化的全局变量或静态变量附表附表一个BSP最小系统需要知道的知识:1.CPU所采用的endian模式2.时钟配置3.串口4.网口部分 嵌入式操作系统嵌入式操作系统VxWorksVxWorksn一个BSP最小系统以外需要知道的知识n1、drivern2、makefilen3、OSS最小BSP的endian模式一般而言,我们是endian有两种模式:big和little。对big模式,以32bits中4个字节存放而言,低有效字节放在高地址处对little模式,以32bits中4个字节存放而言,高有效字节放在高地址处在写BSP中,特别是对字节的操作,需要注意这个
15、问题在risc处理器中,endian模式的影响,一般是在加载和存储指令中。所以,在系统内存,还是按照正常的顺序来操作(little)最小BSP系统的时钟配置一般而言,对CPU内核时钟部分部分不需要配置,我们需要改变的是外设的时钟最小BSP系统的串口一般而言,从程序调试来看,可以不用仿真器来调试。在汇编最开始的地方,就将串口初始化好,通过从串口打印字符。这种方式是最好。 嵌入式操作系统嵌入式操作系统VxWorksVxWorks最小BSP系统的网口该部分所要做的,也就是需要配置1.连接中断2.在sysEnd.c文件的sysLanPciInit()文件中配置END_TBL_ENTRY结构类型的变量e
16、ndDevTbl。 嵌入式操作系统嵌入式操作系统VxWorksVxWorksBSP最小系统之外的DRIVER对驱动而言,所做的也就是在厂家提供的驱动基础上修改。现在驱动的编写,虽然都是C语言编写,但是采用面向对象的编程思想。将对象在编程语言中组织成一个个的数据结构,然后对数据结构进行操作BSP最小系统之外的makefileMakefile完成了对程序的编译控制功能,通过调用cc和ld,最终生成一个可以执行的应用程序对makefile的使用,需要掌握两点: 1.掌握makefile文件编写的基本规则 2.熟悉在Torndao环境下,也就是在Tornado安装目录/target/h/make该目录
17、下所有文件的了解 3.BSP相关的子makefiles放在 ./h/make目录。rules.bsp包括创建各种 VxWorksimage文件的规则,也用于创建VxWorks目标模块的规则。.defs.bsp定义编译和连接过程中的BSP控制宏。./h/make目录下其他子makefiles控制主机和体系结构相关的创建参数。BSP最小系统之外的OSS该部分在vxworks层之上,向应用软件屏蔽了vxworks的API函数接口和vxworks的功能。在实现形式有两种:1.直接对vxworks的API函数进行封装2.在vxworks上的基础上实现操作系统的实现的功能OSS实现几个基本功能:1.进程的
18、调度2.时间片的管理3.内存管理软件模块 4.文件系统软件模块 5.异常和系统监测 嵌入式操作系统嵌入式操作系统VxWorksVxWorks Tornado 简介 Tornado Tornado 是是WRS WRS 公司推出的一套公司推出的一套实时操作系统开发环境,提供了实时操作系统开发环境,提供了丰富的调试、仿真环境和工具。丰富的调试、仿真环境和工具。Tornado 开发环境开发环境 TornadoTornadoVxWorksWDBProtocolDevelopmentHostTarget(Ethernet,serial,netrom,custom)WTX=WindRiverTooleXch
19、angeWDB=WindDeBugApplicationXtextdatabssX.cX.cppX.sMakefileGNUX.oX.outvxWorksCrossWind集成调试器集成调试器WindShShell 工具工具Browser浏览器浏览器其他其他TornadoToolsWDBAgentTargetServerWTXProtocolHostHost-TargetCommunication 开发环境开发环境 TornadoTornadoTargetServer和和WTX协议协议:Target Server运行在Host端,每一个Target Server连接一个Target。所有的Ho
20、st 工具通过Target Server与Target 集中通讯。Target Server管理着Host-Target通讯的细节,从而简化了Host工具。Host 工具通过WTX协议与Target Server交互,包括提出请求、获取Target的信息。TargetAgent和和WDB协议协议:Target Agent完成Target Server传来的请求,并返回结果。Target Agent中包含一个压缩版的UDP/IP用于支持RPC消息协议,即WDB协议。WDB协议包含了内存处理、断点/事件通知服务、虚拟I/O支持及任务控制。VxWorksTarget以太网RS232HostTorna
21、do典型的典型的Tornado开发配置开发配置 嵌入式操作系统嵌入式操作系统VxWorksVxWorks 开发实例之一 如何建立工程开发工具以及资源1.Tornado2.0-2.2n2.VxWorks5.4-5.5n相关资源nhttp:/ 开发实例开发实例 targetallcompsBspnameconfigdrvendsioconfigunsupportedhlibsrc(vxWorks核心的配置及编译的文件)(通用的配置文件)(Tornado工程管理工具配置的源文件)(单板BSP:代码文件,目标文件及编译文件)(包含所有vxWorks操作系统的头文件及通用编译文件)(由vxWorks为不
22、同平台提供的库文件及目标文件)(vxWorks提供的部分硬件芯片驱动程序的源代码文件)(vxWorks操作系统的一些通用的源代码文件)(vxWorks中一些硬件芯片的通用驱动程序源代码文件)(网口驱动)(串口驱动)(包含一些较古老的硬件BSP代码)TornadoTornado安装目录下安装目录下TargetTarget目录结构目录结构面对事业部提供的单板面对事业部提供的单板BSP,如何建立,如何建立Tornado工程环境?工程环境?建立建立TornadoTornado工程环境工程环境 1 1、 BSPBSP可放在任何路径下,与可放在任何路径下,与TornadoTornado安装目录无安装目录无
23、关。关。注意:注意:BSPBSP目录的命名要和目录的命名要和BSPBSP中的中的makefile makefile 中的这中的这条语句条语句TARGET_DIRTARGET_DIR=BSPname=BSPname设置的一致才可以。设置的一致才可以。2 2、打开、打开TornadoTornado,建立工程。,建立工程。(根据实际情况可选择建立两种类型的工程)(根据实际情况可选择建立两种类型的工程)BootableBootable型工程型工程DownloadableDownloadable型工程型工程1)是将VxWorks操作系统和自己的应用程序结合在一起1)是纯粹的应用程序,不包含有操作系统分量
24、2)基于单板BSP才可建立工程2)建立工程时,不需要单板BSP;要选择主机编译工具toolchain,例如ppce630gun。4)调试方法:先编译生成BootRom;单板上运行BootRom的烧结程序,通过FTP将Tornado编译的可加载VxWorks映象下载到单板,也可将应用函数的.o文件分别下载进行调试。3)应用程序的入口函数名添加在usrAppInit.c文件的usrAppInit(void)函数中3)调试方法:先建立bootable工程,生成基于ROM的VxWorks映象;单板上运行该映象的烧结程序,将应用函数的.out文件分别下载调试;模块调试完成后,将其中的主口函数在boota
25、ble project中的usrAppInit(void)调用。建立建立TornadoTornado工程环境工程环境 3 3、在工程中新建和添加文件、在工程中新建和添加文件新建新建:选择“file-new”或ctrl+N,添加添加:project-Add/Include-file说明说明:如果建立bootable工程,工程建立后中会自动生成usrAppInit.c文件,应用程序和工程文件的连接是通过将应用程序的入口函数加入到usrAppInit.c中的usrAppInit ()函数来实现的。void usrAppInit (void)#ifdef USER_APPL_INITUSER_APPL
26、_INIT; /* for backwards compatibility */#endifmain(); /* add application specific code here */ 建立建立TornadoTornado工程环境工程环境 4 4、例、例1 1:BootableBootable工程环境工程环境Tornado自动生成makefile文件,并自动修改更新应用程序的入口函数添加在工程自动生成的usrAppinit.c文件中的usrAppInit()建立建立TornadoTornado工程环境工程环境 4 4、例、例2 2:DownloadableDownloadable工程环境工
27、程环境Tornado自动生成makefile文件,并自动修改更新建立建立TornadoTornado工程环境工程环境 5 5、源文件添加完毕后,点击菜单、源文件添加完毕后,点击菜单“build-build-buildbuild”, ,即可实现工程的编译。即可实现工程的编译。Bootable工程:工程:在工程目录下自动增添“default”目录,内有编译生成的各源文件的.O文件以及VxWorks的映象文件。Downloadable工程:工程:在工程目录下自动增添“PPC603gun”(该目录的名称取决于建工程时选择的toolchain的名称)目录,内有编译生成的各源文件的.O文件以及该工程的.o
28、ut文件。建立建立TornadoTornado工程环境工程环境 小结:无论采用哪种工程类型,其调试思路都是一致的,首先要生成单板上运行的烧结程序(bootrom或VxWorks映象),VxWorks映象要在RAM中运行(下载方式或烧结方式),下载要调试的.o或.out文件。 嵌入式操作系统嵌入式操作系统VxWorksVxWorks 开发实例之二 如何制作boot一、一、BootableBootable工程:工程:可加载可加载VxWorksVxWorks映象的映象的BootRomBootRom 方法一:方法一:DOS环境下命令行编译方式环境下命令行编译方式运行批处理文件:运行批处理文件:call
29、 torvarscall torvarsmake cleanmake cleanmake bootrom.hexmake bootrom.hexelftobinhcom.bin其中:torvars是环境变量的批处理,定义了makefile文件需要的环境变量 rem Command line build environmentsset WIND_HOST_TYPE=x86-win32set WIND_BASE=d:Tornadoset PATH=%WIND_BASE%host%WIND_HOST_TYPE%bin;%PATH% torvars.bat文件可在Tornado的安装目录Tornado
30、hostx86-win32bin中获得。制作制作BOOTBOOT方法二:方法二:Tornado的的bootrom生成工具生成工具Step1:BSP必须放在.Tornadotargetconfig路径下Step2:在Tornado开发环境中,通过在主窗口点击Build|BuildBootROM制作制作BOOTBOOT二、二、downloadabledownloadable工程:基于工程:基于ROMROM的的VxWorksVxWorks映象映象说明说明:这里的所说的Boot不是通常所说的引导BOOT,而是一种基于ROM的VxWorka映象。包括:起始引导程序(BootStrapPrograms)和
31、VxWorks映象。生成方法:生成方法:建立Bootable工程,在Tornado工作台的Build窗口中,选择VxWorks映象Rules属性页中的VxWorks_rom,编译即可生成基于ROM的未压缩的VxWorks映象的HEX文件,或选中VxWorks_romCompress即可编译生成基于ROM的压缩的VxWorks映象的HEX文件。制作制作BOOTBOOTBSP中config.h文件中这条定义缺省的BOOT引导参数的语句:#define DEFAULT_BOOT_LINE motfcc(0,0)qzch:vxWorksh=192.168.1.192e=192.168.1.2u=tar
32、getpw=targetmotfcc(0,0):FCC口启动qzch:主机名VxWorks:从主机加载的VxWorks文件h=192.168.1.192主机的IP地址e=192.168.1.2目标机的IP地址u=xxx用户名,pw=xxx密码:若通过网络加载调试时,主机的Ftp服务器和目标机的用户名和密码必须相同制作制作BOOTBOOT注意注意DEFAULT_BOOT_LINE:默认的每次系统启动时的参数制作制作BOOTBOOT 嵌入式操作系统嵌入式操作系统VxWorksVxWorks 开发实例之三 如何调试1 1、打开设置、打开设置FTPFTP服务器(如果是服务器(如果是Downloadab
33、leDownloadable工程,此工程,此步骤不用做)步骤不用做)Step1Step1:选择“Security-Users/rights”,弹出对话框。Step2:创建新的用户名和密码,注意要和config.h中的一致。Step3:用户名创建完毕后,在UserName 一栏选择该用户名 Step4:在Home Directory 一栏填入要下载的VxWorks映象的绝对路径。 Step5:点击“Done” 调试程序调试程序2 2、单板上电,、单板上电,VxWorksVxWorks映象会自动从映象会自动从FTPFTP服务器下载到服务器下载到单板单板RAMRAM上。上。3 3、打开、打开Torn
34、ado,Tornado,配置配置Target Server .Target Server .Step2Step2:设置Description域(可以任意设置)Step3Step3:设置TargetServer域(可以任意设置);Step4Step4:在TargetServerProperty域选取BackEnd项,如果使用网口调试,选择wdbrpc,在目标IP名或地址域中给出目标机的IP名;如果用串口调试,选择wdbserial,选择主机相应的串口和波特率调试程序调试程序Step1Step1:菜单选项“tools-target server-configure ”Step5Step5:在Cha
35、ngeProperty域选取CoreFileandSymbols项,选中File项输入相应的文件,同目标机上运行的内核要一致。即bootable工程目录中“default”目录下的VxWorks的映象文件。Step6Step6:点击Launch,运行目标服务器调试程序调试程序3 3、打开、打开Tornado,Tornado,配置配置Target Server .Target Server .4 4、下载文件、下载文件Bootlable工程下载的方法:下载的方法:1)“project-download”2)快捷工具,下载的文件下载的文件:Default调试目录下各源文件的. O文件 downlo
36、adlable工程调试目录(例“PPC603gun”)下工程的.out文件或各源文件的.o文件 调试程序调试程序5 5、调试程序、调试程序启动启动debuggerdebugger:1)“Tool-Debugger ”2)快捷工具,调试函数入口调试函数入口:“Debugger-Run”或F6, 弹出Task一栏填入要调试的函数名。Arguments中填入要调试函数的入口参数。Breakatentrypo复选框选中时,程序会自动在调试程序的第一条语句的地方调试程序调试程序BSPBSP的的config.hconfig.h文件文件 定义缺省的BOOT引导参数(格式)#define DEFAULT_BO
37、OT_LINE $dev(0,procnum)host:dirfile h=# e=# b=# g=# u=usr pw=passwd f=# tn=targetname s=script o=other $dev - boot device,启动的设备类型,必须是已包含的设备。 procnum - 处理器序号,一般从零开始。 host - 主机名 dir:file - 被加载的VxWorks文件所在的完整路径 h - 主机IP e - 目标板IP b - 背板IP,用户可不定义 g - 网关,用户可不定义 u - 用户名 pw - 登录口令 f - 定义网络加载方式。无此项时缺省值为零,为F
38、TP tn - 目标板名 s - 启动描述字符串,用户可不定义 o - 从SCSI启动时指明网络接口 依据不同的启动设备类型,其中某些项可无。附表附表BSP的的makefile中的主要宏定义中的主要宏定义CPU=PPCEC603TOOL=gnuTARGET_DIR=HCOM_BSPTGT_DIR=$(WIND_BASE)/targetROM_TEXT_ADRS=fff00000ROM_SIZE=00080000RAM_HIGH_ADRS=00800000RAM_LOW_ADRS=00010000单板单板CPU类型类型编译工具编译工具用它来指定用它来指定bspname指定指定target目录目录
39、用于生成用于生成romResident文件时指定入口文件时指定入口地址地址加载加载VxWorks的目标地址的目标地址ROM引导程序代码段的起始位置,或驻留引导程序代码段的起始位置,或驻留ROM引导程序数据段的起始位置引导程序数据段的起始位置.ROM的空间范围(的空间范围(512k)附表附表说明:说明:附表附表用Downloadable工程方式来调试应用程序,也需要同时建立一个对应的Bootlable工程Bootlable工程以便生成目标板上所谓的BOOT程序,即基于ROM的VxWorks映象的HEX文件Bootlable工程可提供配置Targetserver所需要的与目标板上运行相同的VxWo
40、rks映象文件。 嵌入式操作系统嵌入式操作系统VxWorksVxWorks 映像启动流程附表附表起始引导程序起始引导程序 和和 ROMROM引导程序引导程序 起始引导程序(起始引导程序(BootStrap ProgramsBootStrap Programs) 起始引导程序驻留在ROM中,主要包含: 1)汇编级的硬件初始化程序romInit.s,用于系统的基本初始化,设置一些重要寄存器的初始值,进行存储器的映射 2)搬移程序bootInit.c,将ROM引导程序拷贝至RAM的高端地址RAM_HIGH_ADRS,然后跳转到此处执行ROM引导程序。ROM引导程序(引导程序(ROMBootProgr
41、ams)ROM引导程序起初存放在ROM中,初始化时被拷贝到RAM中,主要用于系统的进一步初始化,并配置加载方式,将VxWorks映象加载至RAM。附表附表例:程序架构(任务与消息)例:程序架构(任务与消息)开发实例之一开发实例之一附表附表BootromBootrom执行流程执行流程 romInit.s:romInit设置机器状态字及其它硬件相关寄存器,关闭中断,禁止程序和数据CACHE,初始化内存,并设置堆栈指针bootInit.c:romStart()将ROM中的程序搬移至RAM中bootConfig.c:usrInit()设 置 cache的 工 作 模 式 , 板 级 硬 件 初 始 化
42、 , 调 用 sysHwInit( ),usrKernelInit(),KernelInit(),初始化Win内核,产生根任务usrRoot()bootConfig.c:usrRoot()初始化内存,系统时钟,I/O系统,标准输入输出错,异常处理,产生任务bootCmdLoopbootConfig.c:bootCmdLoop()调用自动引导程序autoboot(),此函数若成功则不返回bootConfig.c:autoboot()延时7s,以默认参数启动用户按键中断bootConfig.c:bootCmdLoop()启动命令行用于配置VxWorks启动参数bootConfig.c: bootL
43、oad( )加载VxWorks映象,并转向它进行重启等待超时用户输入BootStrap程 序 在ROM中 执行ROMBoot程序被搬移到RAM中执行附表附表可加载可加载VxWorksVxWorks映象执行流程映象执行流程 sysALib.s:sysInit()锁住中断,关闭cache(如果使用了话),初始化处理器的寄存器(包括C堆栈指针)至缺省值开 始 在 RAM中运行VxWorksusrConfig.c:usrInit()设置cache的工作模式,板级硬件初始化,初始化Win内核,启动usrRoot()usrConfig.c:usrRoot()初始化内存,系统时钟,I/O系统,标准输入输出错
44、,异常处理,添加用户应用程序启动应用程序任务usrAppInit()附表附表基于基于ROMROM的的VxWorksVxWorks映象执行流程映象执行流程 romInit.s: romInit()(a)禁止中断;(b)保存启动类型;(c)硬件初始化;(d)调用romStart();bootInit.c: romStart()(a)将数据段从ROM拷贝到RAM,清内存;(b)将代码段从ROM拷贝到RAM,有必要的话解压缩;(c)依据引导类型调用usrInit();BootStrap程序在ROM中执行usrConfig.c:usrInit()(a)将数据段从ROM拷贝到RAM,清内存;(b)将代码段
45、从ROM拷贝到RAM,有必要的话解压缩;(c)依据引导类型调用usrInit();开始在RAM中运行VxWorksusrConfig.c:usrRoot()初始化内存,系统时钟,I/O系统,标准输入输出错,异常处理 启动应用程序任务usrAppInit()usrKernel.cusrKernelinit()usrKernel.csysHwinit()sysLib.csysLib.cusrRoot()bootConfig.cusrConfig.c启动应用程序任务usrAppInit()usrAppInit.cromInit()romStart()romInit.sbootInit.cusrInit()bootConfig.csysInit()sysALib.susrConfig.cBootRom引导流程引导流程DownloadablevxWorks映像映像可加载VxWorks映象及其Bootrom执行流程基于ROM的VxWorks映象执行流程映象执行流程小结映象执行流程小结 附表附表