
VWorks基础知识.ppt
65页VWorks基础知识VxWorks基础知识及开发流程nVxWorks介绍n关于BSP以及映像nTornado介绍n开发实例之一n开发实例之二n开发实例之三n映像启动流程 课程大纲 VxWorks VxWorks 是美国是美国 Wind River System Wind River System 公司(公司( 简称风河简称风河 公司公司 ,即,即 WRS WRS 公司)推出的一个实时操作系公司)推出的一个实时操作系统VxWorks 嵌入式操作系统嵌入式操作系统VxWorksVxWorks Wind 内核多任务处理 虚拟内存操作系统模块I/O子系统网络子系统目标开发工具V Vx xW Wo or rk ks s基基本本体体系系结结构构 嵌入式操作系统嵌入式操作系统VxWorksVxWorkswind wind :VxWorks 的核心,被称作 wind,包括多任务调度(采用优先级抢占方式),任务间的同步和进程间通信机制,以及中断处理,看门狗定时器和内存管理机制。
I/O I/O 系统系统 :VxWorks 提供了一个快速灵活的与 ANSI C 兼容的 I/O 系统,包括 UNIX 标准的缓冲 I/O 和POSIX 标准的异步 I/OVxWorks 包括以下驱动程序:网络驱动、管道驱动、RAM盘驱动、SCSI驱动、键盘驱动、显示驱动、磁盘驱动、并口驱动等 文件系统文件系统 :支持四种文件系统: dosFs,rt11Fs,rawFs 和 tapeFs支持在一个单独的 VxWorks 系统上同时并存几个不同的文件系统 嵌入式操作系统嵌入式操作系统VxWorksVxWorks实实用用库库:VxWorks 提供了一个实用例程的扩展集,包括中断处理、看门狗定时器、消息登录、 内存分配、字符扫描、线缓冲和环缓冲管理、链表管理和 ANSI C 标准虚拟内存 :VxVMI 为带有 MMU 的目标板提供了虚拟内存机制VxMP(Share-Memory Object) 提供了共享信号量,消息队列和在不同处理器之间的共享内存区域,用于不同CPU的通讯与同步WBD协议:目标代理遵循 WBD(Wind Debug)协议,允许目标机与主机上的 Tornado 开发工具相连。
Tornado 目标服务器(Target Server)向目标代理发送调试请求 嵌入式操作系统嵌入式操作系统VxWorksVxWorks网络支持网络支持:它提供了对其它VxWorks系统和TCP/IP 网络系统的“透明”访问,包括与BSD套接字兼容的编程接口,远程过程调用(RPC),SNMP(可选项),远程文件访问(包括客户端和服务端的NFS机制以及使用RSH,FTP 或 TFTP的非NFS机制)以及BOOTP 和代理ARP、DHCP、DNS、OSPF、RIP基于目标机的工具:在 Tornado 开发系统中,开发工具是驻留在主机上的但是也可以根据需要将基于目标机的Shell 和装载卸载模块加入 VxWorks板级支持包 BSP :板级支持包向VxWorks操作系统提供了对各种板子的硬件功能操作的统一的软件接口,它是保证VxWorks操作系统可移植性的关键,它包括硬件初始化、中断的产生和处理、硬件时钟和计时器管理、局域和总线内存地址映射、内存分配等等 每个板级支持包括一个 ROM 启动(Boot ROM)或其它启动机制。
嵌入式操作系统嵌入式操作系统VxWorksVxWorks BSP 以及映像 介绍BSP(Borad Support Packet),板级支持包对单板的硬件功能提供了统一的软件接口,它包括硬件初始化、中断的产生和处理、硬件时钟和计时器管理、内存地址映射、内存分配等等每个板级支持包括一个 ROM 启动(Boot ROM)或其它启动机制 嵌入式操作系统嵌入式操作系统VxWorksVxWorksBSP在单板软件中的地位:BSP硬件vxWorks等操作系统driver OSS 嵌入式操作系统嵌入式操作系统VxWorksVxWorks最小BSP的定义广义上讲,单板中所有控制CPU系统硬件的程序,都属于单板的BSP,但为了调试方便和软件的模块化,通常将与单板最小系统相关的程序简称为BSP,而将其他程序称为驱动程序 对于嵌入式系统来说,所谓最小系统就是一个包含CPU, Bootrom, RAM,系统时钟,网口,串口的计算机运行环境。
其中之所以包含串口和网口,主要是因为系统调试的需要,通常网口用于软件调试,而串口用于通过计算机的超级终端来显示单板程序运行结果信息系统时钟是一个多任务OS所必须的资源因此最小系统BSP就包含了CPU系统的初始化程序以及网口,串口,系统时钟等设备的驱动程序VxWorks系统中的BSP 针对某类CPU的硬件单板,vxWorks通常提供有其DEMO板的BSP,也就是我们所说的最小系统BSP一般来说,我们在硬件系统设计好之后,都会先找到一个与自己系统相近的DEMO板BSP,并以此为基础,开发自己单板的BSP VxWorks为了最大限度的支持不同的硬件环境,也提供了一些常用硬件芯片的驱动程序,它们通常是与具体CPU无关的设备,如一些PCI网口芯片,串口芯片等这些驱动程序大多实现为CPU无关或很容易移植,可以方便的用于其他CPU平台这也是开发驱动程序所应该遵循的原理另外,我们的最小系统BSP,往往在默认情况下,使用这些驱动程序•BSP位于硬件平台与操作系统之间,类似普通操作系统的BIOS,用于对上层软件屏蔽各种硬件相关性 •给VxWorks提供硬件环境接口•BSP 主要负责:–硬件上电初始化.–支持 VxWorks访问硬件驱动.–把硬件相关和无关的软件很好地结合到VxWorks。
•BSP不是硬件驱动程序 :–是一种访问硬件的硬件驱动程序–硬件驱动分为通用和BSP有关两类–通用驱动管理可在目标环境间移动的设备 (如以太网芯片).–BSP 驱动管理特定目标环境的设备 (如中断控制器)BSPBSP功能功能BSPs BSPs 和和VxWorksVxWorks关系关系BootRom与VxWorks映象VxWorks借鉴了传统PC操作系统的引导原理,其将整个引导过程分为两个阶段:•BOOTROM启动•通过BOOTROM加载VxWorks映象BOOTROM相当于PC机中的BIOS,它完成对加载过程中所需设备的初始化及驱动;然后通过某种可选择的通讯手段(如网口,串口),将VxWorks内核映象到内存中,并执行此处的VxWorks映象就相当于我们在PC机上装的操作系统,如DOS,Windows BOOTROM和VxWorks使用不同方法来编译生成BootromBootrom类型说明:类型说明:用于可加载VxWorks映象的Bootrom包含两部分:起始引导程序(BootStrap Programs)和ROM引导程序(ROM Boot Programs) 起始引导程序驻留在ROM中 , ROM引导程序起初存放在ROM中,初始化时被拷贝到RAM中 bootrom_uncmp.hex(未压缩的BOOTROM): 未压缩的ROM引导程序,可直接拷贝,在RAM中执行 bootrom.hex(压缩的BOOTROM):压缩的ROM引导程序,在拷贝的过程中需要解压缩,在RAM中执行 bootrom_res.hex(驻留的BOOTROM):驻留ROM的ROM引导程序,仅拷贝ROM引导程序的数据段,代码段仍旧在ROM中执行 没有.HEX后缀的同名文件是其ELF格式的映象文件附表附表VxWorksVxWorks映象类型说明:映象类型说明:一、可加载的VxWorks映象 这是一种运行于RAM的VxWorks映象。
不包含搬移程序,需借助外部程序如bootRom才能加载到RAM通过Ftp协议从主机加载到目标机中 ROM/FLASHBootStartPrograms ROM Boot ProgramsRAMVxWorksBoot ProgramsLocal_MEM_Local_ADRSRAM_LOW_ADRSFREE_RAM_ADRSRAM_HIGH_ADRS主机主机可加载可加载VxWorks映象映象附表附表VxWorksVxWorks映象类型说明:映象类型说明:二、基于ROM的VxWorks映象 这是一种运行于RAM,但起初存放于ROM中的VxWorks映象即该映象需要和搬移程序一起固化在BOOT中该映象可分为:压缩的和未压缩的 ROM/FLASHBootStartPrograms ROM_base VxWorks imagesRAMVxWorksLocal_MEM_Local_ADRSRAM_LOW_ADRSFREE_RAM_ADRS基于基于ROM的的VxWorks映象映象附表附表VxWorksVxWorks映象类型说明:映象类型说明:三、驻留ROM的VxWorks映象 和搬移程序一起固化在BOOT中,仅将VxWorks映象的数据段和BSS段拷贝到RAM中,映象的代码段仍旧留在ROM中,从ROM中开始执行 。
该映象可分为:压缩的和未压缩的 ROM/FLASHBootStartProgramsVxWorks TextRAMVxWorks Data+BSSLocal_MEM_Local_ADRSRAM_LOW_ADRSFREE_RAM_ADRS驻留驻留ROM的的VxWorks映象映象VxWorks Data+BSS映象从文件的组织形式上可分为: TextText段段:存放的是可执行的代码 DataData段段:存放的是已经初始化的全局变量或静态变量; BSSBSS段段:存放的是未初始化的全局变量或静态变量 附表附表ß一个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中,特别是对字节的操作,需要注意这个问题ß在risc处理器中,endian模式的影响,一般是在加载和存储指令中。
所以,在系统内存,还是按照正常的顺序来操作(little)最小BSP系统的时钟配置ß一般而言,对CPU内核时钟部分部分不需要配置,我们需要改变的是外设的时钟最小BSP系统的串口ß一般而言,从程序调试来看,可以不用仿真器来调试在汇编最开始的地方,就将串口初始化好,通过从串口打印字符这种方式是最好 嵌入式操作系统嵌入式操作系统VxWorksVxWorks最小BSP系统的网口ß该部分所要做的,也就是需要配置ß1.连接中断ß2.在sysEnd.c文件的sysLanPciInit()文件中配置END_TBL_ENTRY结构类型的变量endDevTbl 嵌入式操作系统嵌入式操作系统VxWorksVxWorksBSP最小系统之外的DRIVERß对驱动而言,所做的也就是在厂家提供的驱动基础上修改ß现在驱动的编写,虽然都是C语言编写,但是采用面向对象的编程思想将对象在编程语言中组织成一个个的数据结构,然后对数据结构进行操作BSP最小系统之外的makefileßMakefile完成了对程序的编译控制功能,通过调用cc和ld,最终生成一个可以执行的应用程序ß对makefile的使用,需要掌握两点: 1.掌握makefile文件编写的基本规则 2.熟悉在Torndao环境下,也就是在Tornado安装目录/target/h/make 该目录下所有文件的了解 3.BSP 相关的子makefiles放在 ../h/make目录。
rules.bsp –包括创建各种 VxWorks image 文件的规则,也用于创建VxWorks 目标模块的规则defs.bsp – 定义编译和连接过程中的BSP控制宏/h/make目录下其他子makefiles控制主机和体系结构相关的创建参数BSP最小系统之外的OSSß该部分在vxworks层之上,向应用软件屏蔽了vxworks的API函数接口和vxworks的功能ß在实现形式有两种:ß1.直接对vxworks的API函数进行封装ß2.在vxworks上的基础上实现操作系统的实现的功能ßOSS实现几个基本功能:ß1.进程的调度ß2.时间片的管理ß3.内存管理软件模块 ß4.文件系统软件模块 ß5.异常和系统监测 嵌入式操作系统嵌入式操作系统VxWorksVxWorks Tornado 简介 Tornado Tornado 是是WRS WRS 公司推出的一套实时操作系统开发环境,提供了丰富的调试、仿真环境和工具公司推出的一套实时操作系统开发环境,提供了丰富的调试、仿真环境和工具Tornado 开发环境开发环境 TornadoTornadoVxWorksVxWorksWDB ProtocolWDB ProtocolDevelopment HostDevelopment HostTargetTarget(Ethernet, serial,(Ethernet, serial, netrom, custom) netrom, custom)WTX = Wind River Tool eXchange WDB = Wind DeBugWTX = Wind River Tool eXchange WDB = Wind DeBugApplicationApplicationX XtexttextdatadatabssbssX.cX.cppX.sMakefileGNUX.oX.outvxWorksCrossWindCrossWind集成调试器集成调试器WindShWindShShell Shell 工具工具BrowserBrowser浏览器浏览器其他其他TornadoTornadoToolsToolsWDBAgentTargetServerWTX ProtocolWTX ProtocolHostHostHost-Target CommunicationHost-Target Communication 开发环境开发环境 TornadoTornadoTarget Server Target Server 和和 WTXWTX协议协议 :Target Server运行在Host端,每一个Target Server连接一个Target。
所有的Host 工具通过Target Server与Target 集中通讯Target Server管理着Host-Target通讯的细节,从而简化了Host工具Host 工具通过WTX协议与Target Server交互,包括提出请求、获取Target的信息 Target AgentTarget Agent和和WDBWDB协议协议 :Target Agent完成Target Server传来的请求,并返回结果Target Agent中包含一个压缩版的UDP/IP用于支持RPC消息协议,即WDB协议WDB协议包含了内存处理、断点/事件通知服务、虚拟I/O支持及任务控制VxWorksTarget以太网RS232HostTornado典型的典型的TornadoTornado开发配置开发配置 嵌入式操作系统嵌入式操作系统VxWorksVxWorks 开发实例之一 如何建立工程开发工具以及资源ß1.Tornado 2.0---2.2n2.VxWorks 5.4----5.5n相关资源n n n www.xs4all.nl/~borkhuis/vxworks/vxworks.htmlVxWorks & Tornado FAQ)n(新闻组) 开发实例开发实例 …targetallcompsBsp nameconfigdrvendsioconfigunsupportedhlibsrc…(vxWorks核心的配置及编译的文件)(通用的配置文件)(Tornado工程管理工具配置的源文件)(单板BSP:代码文件,目标文件 及编译文件)(包含所有vxWorks操作系统的头文件及通用编译文件)(由vxWorks为不同平台提供的库文件及目标文件)(vxWorks提供的部分硬件芯片驱动程序的源代码文件)(vxWorks操作系统的一些通用的源代码文件)(vxWorks中一些硬件芯片的通用驱动程序源代码文件)(网口驱动)(串口驱动)(包含一些较古老的硬件BSP代码)TornadoTornado安装目录下安装目录下TargetTarget目录结构目录结构面对事业部提供的单板面对事业部提供的单板BSPBSP,如何建立,如何建立TornadoTornado工程环境?工程环境?建立建立TornadoTornado工程环境工程环境 1 1、、 BSPBSP可放在任何路径下,与可放在任何路径下,与TornadoTornado安装目录无关。
安装目录无关注意:注意:BSPBSP目录的命名要和目录的命名要和BSPBSP中的中的makefile makefile 中的这条语句中的这条语句TARGET_DIRTARGET_DIR =BSPname=BSPname设置的一致才可以设置的一致才可以2 2、打开、打开TornadoTornado,建立工程建立工程根据实际情况可选择建立两种类型的工程)(根据实际情况可选择建立两种类型的工程)•BootableBootable型工程型工程•DownloadableDownloadable型工程型工程1)是将VxWorks操作系统和自己的应用程序结合在一起 1)是纯粹的应用程序,不包含有操作系统分量 2)基于单板BSP才可建立工程2)建立工程时,不需要单板BSP;要选择主机编译工具toolchain,例如ppce630gun4)调试方法:先编译生成BootRom;单板上运行BootRom 的烧结程序,通过FTP将Tornado编译的可加载VxWorks映象下载到单板,也可将应用函数的.o文件分别下载进行调试3)应用程序的入口函数名添加在usrAppInit.c文件的usrAppInit(void)函数中 3)调试方法:先建立bootable工程,生成基于ROM的VxWorks映象;单板上运行该映象的烧结程序,将应用函数的.out文件分别下载调试;模块调试完成后,将其中的主口函数在bootable project中的usrAppInit(void)调用。
建立建立TornadoTornado工程环境工程环境 3 3、在工程中新建和添加文件、在工程中新建和添加文件新建新建:选择“file->new”或ctrl+N, 添加添加:project->Add/Include->file 说明说明:如果建立bootable工程,工程建立后中会自动生成usrAppInit.c 文件,应用程序和工程文件的连接是通过将应用程序的入口函数加入到usrAppInit.c中的usrAppInit ()函数来实现的void usrAppInit (void){#ifdefUSER_APPL_INITUSER_APPL_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工程环境工程环境Tornado自动生成makefile文件,并自动修改更新建立建立TornadoTornado工程环境工程环境 5 5、源文件添加完毕后,点击菜单、源文件添加完毕后,点击菜单““build->build”,build->build”,即可实现工程的编译。
即可实现工程的编译•Bootable Bootable 工程:工程:在工程目录下自动增添“default”目录,内有编译生成的各源文件的.O文件以及VxWorks 的映象文件•Downloadable Downloadable 工程:工程:在工程目录下自动增添“PPC603gun”(该目录的名称取决于建工程时选择的toolchain的名称)目录,内有编译生成的各源文件的.O文件以及该工程的.out文件建立建立TornadoTornado工程环境工程环境 小结:无论采用哪种工程类型,其调试思路都是一致的,首先要生成单板上运行的烧结程序(bootrom或VxWorks映象),VxWorks映象要在RAM中运行(下载方式或烧结方式),下载要调试的.o或.out文件 嵌入式操作系统嵌入式操作系统VxWorksVxWorks 开发实例之二 如何制作boot一、一、BootableBootable工程:工程:可加载可加载VxWorksVxWorks映象的映象的BootRomBootRom 方法一:方法一:DOSDOS环境下命令行编译方式环境下命令行编译方式运行批处理文件:运行批处理文件:call torvarscall torvarsmake cleanmake cleanmake bootrom.hexmake bootrom.hexelftobin
制作制作BOOTBOOT方法二:方法二:Tornado Tornado 的的bootrombootrom生成工具生成工具Step1: BSP 必须放在..\Tornado\target\config路径下 Step2:在Tornado开发环境中,通过在主窗口点击Build|Build Boot ROM 制作制作BOOTBOOT二、二、downloadabledownloadable工程:基于工程:基于ROMROM的的VxWorksVxWorks映象映象说明说明:这里的所说的Boot不是通常所说的引导BOOT,而是一种基于ROM的VxWorka映象包括:起始引导程序(BootStrap Programs)和VxWorks映象 生成方法:生成方法:建立Bootable工程,在Tornado工作台的Build窗口中,选择VxWorks映象Rules属性页中的VxWorks_rom,编译即可生成基于ROM的未压缩的VxWorks 映象的HEX文件,或选中VxWorks_romCompress即可编译生成基于ROM的压缩的VxWorks 映象的HEX文件 制作制作BOOTBOOTBSP中config.hconfig.h文件中这条定义缺省的BOOT引导参数的语句 : #define DEFAULT_BOOT_LINE \ "motfcc(0,0)qzch:vxWorks h=192.168.1.192 e=192.168.1.2 u=target pw=target" motfcc (0,0)motfcc (0,0) : FCC口启动 qzch:qzch: 主机名 VxWorks:VxWorks: 从主机加载的VxWorks文件 主机的IP地址 目标机的IP地址 u=xxxu=xxx 用户名,pw=xxxpw=xxx 密码: 若通过网络加载调试时,主机的Ftp服务器和目标机的用户名和密码必须相同 制作制作BOOTBOOT注意注意DEFAULT_BOOT_LINEDEFAULT_BOOT_LINE:: 默认的每次系统启动时的参数制作制作BOOTBOOT 嵌入式操作系统嵌入式操作系统VxWorksVxWorks 开发实例之三 如何调试1 1、打开设置、打开设置FTPFTP服务器(如果是服务器(如果是DownloadableDownloadable工程,此步骤不用做)工程,此步骤不用做)Step1Step1:选择“Security->Users/rights”,弹出对话框。
Step2Step2:创建新的用户名和密码,注意要和config.h中的一致Step3Step3:用户名创建完毕后,在UserName 一栏选择该用户名 Step4Step4:在Home Directory 一栏填入要下载的VxWorks映象的绝对路径 Step5Step5:点击“Done” 调试程序调试程序2 2、单板上电,、单板上电,VxWorksVxWorks映象会自动从映象会自动从FTPFTP服务器下载到单板服务器下载到单板RAMRAM上3 3、打开、打开Tornado,Tornado,配置配置Target Server .Target Server .Step2Step2:设置Description域(可以任意设置) Step3Step3:设置Target Server域(可以任意设置); Step4Step4:在Target Server Property域选取Back End项 ,如果使用网口调试,选择wdbrpc,在目标IP名或地址域中给出目标机的IP名 ;如果用串口调试,选择wdbserial,选择主机相应的串口和波特率 调试程序调试程序Step1Step1:菜单选项“tools->target server->configure ” Step5Step5:在Change Property域选取Core Symbols项,选中File项输入相应的文件,同目标机上运行的内核要一致。
即bootable工程目录中“default”目录下的VxWorks的映象文件Step6Step6:点击Launch,运行目标服务器调试程序调试程序3 3、打开、打开Tornado,Tornado,配置配置Target Server .Target Server .4 4、下载文件、下载文件•Bootlable 工程 下载的方法:下载的方法:1)“project->download” 2)快捷工具, 下载的文件下载的文件: :Default调试目录下各源文件的. O文件 •downloadlable 工程 调试目录(例“PPC603gun”)下工程的.out文件或各源文件的.o文件 调试程序调试程序5 5、调试程序、调试程序启动启动debuggerdebugger:1)“Tool->Debugger ”2)快捷工具, 调试函数入口调试函数入口:“Debugger->Run”或F6, 弹出 Task一栏填入要调试的函数名Arguments中填入要调试函数的入口参数Break at entry po 复选框选中时,程序会自动在调试程序的第一条语句的地方 调试程序调试程序BSPBSP的的config.hconfig.h文件文件 定义缺省的BOOT引导参数(格式) #define DEFAULT_BOOT_LINE \ "$dev(0,procnum)host:dir\\ 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 -- 定义网络加载方式。
无此项时缺省值为零,为FTP tn -- 目标板名 s -- 启动描述字符串,用户可不定义 o -- 从SCSI启动时指明网络接口 依据不同的启动设备类型,其中某些项可无 附表附表BSPBSP的的makefilemakefile中的主要宏定义中的主要宏定义CPU= PPCEC603CPU= PPCEC603TOOL= gnuTOOL= gnuTARGET_DIR= HCOM_BSPTARGET_DIR= HCOM_BSPTGT_DIR = $(WIND_BASE)/targetTGT_DIR = $(WIND_BASE)/targetROM_TEXT_ADRS = fff00000ROM_TEXT_ADRS = fff00000ROM_SIZE = 00080000ROM_SIZE = 00080000RAM_HIGH_ADRS = 00800000RAM_HIGH_ADRS = 00800000RAM_LOW_ADRS = 00010000RAM_LOW_ADRS = 00010000单板单板CPUCPU类型类型编译工具编译工具用它来指定用它来指定bsp name bsp name 指定指定targettarget目录目录用于生成用于生成romResidentromResident文件时指定入口文件时指定入口 地址地址加载加载VxWorksVxWorks的目标地址的目标地址 ROMROM引导程序代码段的起始位置,或驻留引导程序代码段的起始位置,或驻留ROMROM引导程序数据段引导程序数据段的起始位置的起始位置 . . ROMROM的空间范围(的空间范围(512k512k))附表附表说明:说明:附表附表•用Downloadable工程方式来调试应用程序,也需要同时建立一个对应的Bootlable工程•Bootlable工程以便生成目标板上所谓的BOOT程序,即基于ROM的VxWorks映象的HEX文件•Bootlable工程可提供配置Target server所需要的与目标板上运行相同的VxWorks 映象文件。
嵌入式操作系统嵌入式操作系统VxWorksVxWorks 映像启动流程附表附表起始引导程序起始引导程序 和和 ROMROM引导程序引导程序 起始引导程序起始引导程序((BootStrap ProgramsBootStrap Programs)) 起始引导程序驻留在ROM中,主要包含: 1)汇编级的硬件初始化程序romInit.s,用于系统的基本初始化,设置一些重要寄存器的初始值,进行存储器的映射 2)搬移程序bootInit.c,将ROM引导程序拷贝至RAM的高端地址RAM_HIGH_ADRS,然后跳转到此处执行ROM引导程序。
ROMROM引导程序(引导程序(ROM Boot ProgramsROM Boot Programs)) ROM引导程序起初存放在ROM中,初始化时被拷贝到RAM中,主要用于系统的进一步初始化,并配置加载方式,将VxWorks映象加载至RAM 附表附表例:程序架构(任务与消息)例:程序架构(任务与消息)开发实例之一开发实例之一附表附表BootromBootrom执行流程执行流程 romInit.s : romInit 设置机器状态字及其它硬件相关寄存器,关闭中断,禁止程序和数据CACHE,初始化内存,并设置堆栈指针bootInit.c : romStart( ) 将ROM中的程序搬移至RAM中bootConfig.c : usrInit( ) 设 置 cache的 工 作 模 式 , 板 级 硬 件 初 始 化 , 调 用 sysHwInit( ),usrKernelInit( ),KernelInit( ),初始化Win内核,产生根任务usrRoot( )bootConfig.c : usrRoot( ) 初始化内存,系统时钟,I/O系统,标准输入输出错,异常处理,产生任务bootCmdLoopbootConfig.c : bootCmdLoop( ) 调用自动引导程序autoboot( ),此函数若成功则不返回bootConfig.c: autoboot( ) 延时7s,以默认参数启动用户按键中断bootConfig.c :bootCmdLoop( )启动命令行用于配置VxWorks启动参数bootConfig.c: bootLoad( )加载VxWorks映象,并转向它进行重启等待超时用户输入‘@ ’BootStrap程 序 在ROM中 执行ROM Boot程序 被搬移到RAM中执行附表附表可加载可加载VxWorksVxWorks映象执行流程映象执行流程 sysALib.s : sysInit( )锁住中断,关闭cache(如果使用了话),初始化处理器的寄存器(包括C堆栈指针)至缺省值开 始 在 RAM中运行VxWorksusrConfig.c : usrInit( ) 设置cache的工作模式,板级硬件初始化,初始化Win内核,启动usrRoot( )usrConfig.c : usrRoot( ) 初始化内存,系统时钟,I/O系统,标准输入输出错,异常处理,添加用户应用程序启动应用程序任务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)将代码段从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 引导流程引导流程Downloadable vxWorks 映像映像可加载VxWorks映象及其Bootrom执行流程基于ROM的VxWorks 映象执行流程映象执行流程小结映象执行流程小结 附表附表Thank You !不尽之处,恳请指正!不尽之处,恳请指正!。
