VxWorks基础知识.ppt_第1页
VxWorks基础知识.ppt_第2页
VxWorks基础知识.ppt_第3页
VxWorks基础知识.ppt_第4页
VxWorks基础知识.ppt_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VxWorks基础知识及开发流程 nVxWorks介绍 n关于BSP以及映像 nTornado介绍 n开发实例之一 n开发实例之二 n开发实例之三 n映像启动流程 课程大纲 VxWorks 是美国 Wind River System 公司( 简称风河 公司 ,即 WRS 公司)推出的一个实 时操作系统。 VxWorks 嵌入式操作系统VxWorks Wind 内核 多任务 处理 虚拟 内存 操作系统 模块 I/O子 系统 网络子 系统 目标开发 工具 VxWorks基本体系结构 嵌入式操作系统VxWorks wind :VxWorks 的核心,被称作 wind,包括多任务调度(采用优先 级抢占方式),任务间的同步和进程间通信机制,以及中断处理, 看门狗定时器和内存管理机制。 I/O 系统 :VxWorks 提供了一个快速灵活的与 ANSI C 兼容的 I/O 系统,包括 UNIX 标准的缓冲 I/O 和POSIX 标准的异步 I/O。 VxWorks 包括以下驱动程序:网络驱动、管道驱动、RAM盘驱动、 SCSI驱动、键盘驱动、显示驱动、磁盘驱动、并口驱动等。 文件系统 :支持四种文件系统: dosFs,rt11Fs,rawFs 和 tapeFs 支持在一个单独的 VxWorks 系统上同时并存几个不同的文件系统。 嵌入式操作系统VxWorks 实用库:VxWorks 提供了一个实用例程的扩展集,包括中断处理、 看门狗定时器、消息登录、 内存分配、字符扫描、线缓冲和环缓 冲管理、链表管理和 ANSI C 标准。 虚拟内存 :VxVMI 为带有 MMU 的目标板提供了虚拟内存机制。 VxMP(Share-Memory Object) 提供了共享信号量,消息队列和在 不同处理器之间的共享内存区域,用于不同CPU的通讯与同步。 WBD协议:目标代理遵循 WBD(Wind Debug)协议,允许目标机与 主机上的 Tornado 开发工具相连。 Tornado 目标服务器(Target Server)向目标代理发送调试请求。 嵌入式操作系统VxWorks 网络支持:它提供了对其它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)或其它启动机制。 嵌入式操作系统VxWorks BSP 以及映像 介绍 BSP(Borad Support Packet),板级支持 包对单板的硬件功能提供了统一的 软件接口,它包括硬件初始化、中 断的产生和处理、硬件时钟和计时 器管理、内存地址映射、内存分配 等等。每个板级支持包括一个 ROM 启动(Boot ROM)或其它启动机制 。 嵌入式操作系统VxWorks BSP在单板软件中的地位: BSP 硬件 vxWorks等操作系统 driver OSS 嵌入式操作系统VxWorks 最小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 驱动管理特定目标环境的设备 (如中断控制器)。 BSP功能 BSPs 和VxWorks关系 BootRom与VxWorks映象 VxWorks借鉴了传统PC操作系统的引导原理,其将 整个引导过程分为两个阶段: BOOTROM启动 通过BOOTROM加载VxWorks映象 BOOTROM相当于PC机中的BIOS,它完成对加载过 程中所需设备的初始化及驱动;然后通过某种可 选择的通讯手段(如网口,串口),将VxWorks 内核映象到内存中,并执行。此处的VxWorks映 象就相当于我们在PC机上装的操作系统,如 DOS,Windows。 BOOTROM和VxWorks使用不同方法来编译生 成。 Bootrom类型说明: 用于可加载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格式的映象文件 附表 VxWorks映象类型说明: 一、可加载的VxWorks映象 这是一种运行于RAM的VxWorks映象。不包含搬移程序,需借助外部程 序如bootRom才能加载到RAM。通过Ftp协议从主机加载到目标机中 。 ROM/FLASH BootStart Programs ROM Boot Programs RAM VxWorks Boot Programs Local_MEM_Local_ADRS RAM_LOW_ADRS FREE_RAM_ADRS RAM_HIGH_ADRS 主机 FTP Server 可加载VxWorks映象 附表 VxWorks映象类型说明: 二、基于ROM的VxWorks映象 这是一种运行于RAM,但起初存放于ROM中的VxWorks映象。即该映象 需要和搬移程序一起固化在BOOT中。该映象可分为:压缩的和未压缩的 ROM/FLASH BootStart Programs ROM_base VxWorks images RAM VxWorks Local_MEM_Local_ADRS RAM_LOW_ADRS FREE_RAM_ADRS 基于ROM的VxWorks映象 附表 VxWorks映象类型说明: 三、驻留ROM的VxWorks映象 和搬移程序一起固化在BOOT中,仅将VxWorks映象的数据段和BSS段拷 贝到RAM中,映象的代码段仍旧留在ROM中,从ROM中开始执行 。该 映象可分为:压缩的和未压缩的 。 ROM/FLASH BootStart Programs VxWorks Text RAM VxWorks Data+BSS Local_MEM_Local_ADRS RAM_LOW_ADRS FREE_RAM_ADRS 驻留ROM的VxWorks映象 VxWorks Data+BSS 映象从文件的组织形式上可分为: Text段:存放的是可执行的代码。 Data段:存放的是已经初始化的全 局变量或静态变量; BSS段:存放的是未初始化的全局变 量或静态变量 附表 一个BSP最小系统需要知道的知识: 1. CPU所采用的endian模式 2.时钟配置 3.串口 4.网口部分 嵌入式操作系统VxWorks n一个BSP最小系统以外需要知道的知识 n1、driver n2、makefile n3、OSS 最小BSP的endian模式 一般而言,我们是endian有两种模式:big和 little。 对big模式,以32bits中4个字节存放而言,低 有效字节放在高地址处 对little模式,以32bits中4个字节存放而言,高 有效字节放在高地址处 在写BSP中,特别是对字节的操作,需要注意 这个问题 在risc处理器中,endian模式的影响,一般是 在加载和存储指令中。所以,在系统内存,还 是按照正常的顺序来操作(little) 最小BSP系统的时钟配置 一般而言,对CPU内核时钟部分部分不 需要配置,我们需要改变的是外设的时 钟 最小BSP系统的串口 一般而言,从程序调试来看,可以不用仿 真器来调试。在汇编最开始的地方,就将 串口初始化好,通过从串口打印字符。这 种方式是最好。 嵌入式操作系统VxWorks 最小BSP系统的网口 该部分所要做的,也就是需要配置 1.连接中断 2.在sysEnd.c文件的sysLanPciInit()文件 中配置END_TBL_ENTRY结构类型的变量 endDevTbl。 嵌入式操作系统VxWorks BSP最小系统之外的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.异常和系统监测 嵌入式操作系统VxWorks Tornado 简介 Tornado 是WRS 公司推出的一 套实时操作系统开发环境,提 供了丰富的调试、仿真环境和 工具。 Tornado 开发环境 Tornado VxWorks WDB Protocol Development Host Target (Ethernet, serial, netrom, custom) WTX = Wind River Tool eXchange WDB = Wind DeBug Application X text data bss X.c X.cpp X.s Makefile GNU X.o X.out vxWorks CrossWind 集成调试器 WindSh Shell 工具 Browser 浏览器 其他 Tornado Tools WDB Agent Target Server WTX Protocol Host Host-Target Communication 开发环境 Tornado Target Server 和 WTX协议 :Target Server运行在Host端 ,每一个Target Server连接一个Target。所有的Host 工具 通过Target Server与Target 集中通讯。Target Server管 理着Host-Target通讯的细节,从而简化了Host工具。Host 工具通过WTX协议与Target Server交互,包括提出请求、获 取Target的信息。 Target Agent和WDB协议 :Target Agent完成Target Server传来的请求,并返回结果。Target Agent中包含一个 压缩版的UDP/IP用于支持RPC消息协议,即WDB协议。WDB协 议包含了内存处理、断点/事件通知服务、虚拟I/O支持及任 务控制。 VxWorks Target 以太网 RS232 Host Tornado 典型的Tornado开发配置 嵌入式操作系统VxWorks 开发实例之一 如何建立工程 开发工具以及资源 1.Tornado 2.0-2.2 n2.VxWorks 5.4-5.5 n相关资源 n/ n/ n/ nhttp:/www.xs4all.nl/borkhuis/vxworks/vxworks.html (VxWorks /* for backwards compatibility */ #endif main(); /* add application specific code here */ 建立Tornado工程环境 4、例1:Bootable工程环境 Tornado自动生成makefile文件, 并自动修改更新 应用程序的入口函数添加在工程自动生成的usrAppinit.c文件中的 usrAppInit() 建立Tornado工程环境 4、例2:Downloadable工程环境 Tornado自动生成makefile文件, 并自动修改更新 建立Tornado工程环境 5、源文件添加完毕后,点击菜单“build-build”, 即可实现工程的编译。 Bootable 工程: 在工程目录下自动增添“default”目录,内有编译生成的各源文件的.O文件 以及VxWorks 的映象文件。 Downloadable 工程: 在工程目录下自动增添“PPC603gun”(该目录的名称取决于建工程时选择 的toolchain的名称)目录,内有编译生成的各源文件的.O文件以及该工程 的.out文件。 建立Tornado工程环境 小结:无论采用哪种工程类型,其调试思路都是一致的,首先要生成单板 上运行的烧结程序(bootrom或VxWorks映象),VxWorks映象要在RAM中 运行(下载方式或烧结方式),下载要调试的.o或.out文件。 嵌入式操作系统VxWorks 开发实例之二 如何制作boot 一、Bootable工程:可加载VxWorks映象的BootRom 方法一:DOS环境下命令行编译方式 运行批处理文件: call torvars make clean make bootrom.hex elftobin hcom.bin 其中: torvars是环境变量的批处理,定义了makefile文件需要的环境 变量 rem Command line build environments set WIND_HOST_TYPE=x86-win32 set WIND_BASE=d:Tornado set PATH=%WIND_BASE%host%WIND_HOST_TYPE%bin;%PATH% torvars.bat文件可在Tornado的安装目录Tornadohostx86-win32bin中获得。 制作BOOT 方法二:Tornado 的bootrom生成工具 Step1: BSP 必须放在Tornadotargetconfig路径下 Step2:在Tornado开发环境中,通过在主窗口点击Build|Build Boot ROM 制作BOOT 二、downloadable工程:基于ROM的VxWorks映象 说明:这里的所说的Boot不是通常所说的引导BOOT,而是一种基于ROM的 VxWorka映象。包括:起始引导程序(BootStrap Programs)和VxWorks映象。 生成方法: 建立Bootable工程,在 Tornado工作台的Build 窗口中,选择VxWorks 映象Rules属性页中的 VxWorks_rom,编译即 可生成基于ROM的未 压缩的VxWorks 映象 的HEX文件,或选中 VxWorks_romCompress 即可编译生成基于 ROM的压缩的 VxWorks 映象的HEX 文件。 制作BOOT BSP中config.h文件中这条定义缺省的BOOT引导参数的语句 : #define DEFAULT_BOOT_LINE “motfcc(0,0)qzch:vxWorks h=92 e= u=target pw=target“ motfcc (0,0) : FCC口启动 qzch: 主机名 VxWorks: 从主机加载的VxWorks文件 h=92 主机的IP地址 e= 目标机的IP地址 u=xxx 用户名,pw=xxx 密码: 若通过网络加载调试时,主机的Ftp服务 器和目标机的用户名和密码必须相同 制作BOOT注意 DEFAULT_BOOT_LINE: 默认的每次系统启动时的参数 制作BOOT 嵌入式操作系统VxWorks 开发实例之三 如何调试 1、打开设置FTP服务器(如果是Downloadable工程,此 步骤不用做) Step1:选择“Security-Users/rights”,弹出对话框。 Step2:创建新的用户名和密码,注意要和config.h中的一致 。 Step3:用户名创建完毕后,在UserName 一栏选择该用户名 Step4:在Home Directory 一栏填入要下载的VxWorks映象的绝对路径。 Step5:点击“Done” 调试程序 2、单板上电,VxWorks映象会自动从FTP服务器下载到 单板RAM上。 3、打开Tornado,配置Target Server . Step2:设置Description域(可以任意设置 ) Step3:设置Target Server域(可以任意设置 ); Step4:在Target Server Property域选取Back End项 ,如果使用网口调试,选择wdbrpc,在 目标IP名或地址域中给出目标机的IP名 ;如果 用串口调试,选择wdbserial,选择主机相应 的串口和波特率 调试程序 Step1:菜单选项“tools-target server- configure ” Step5:在Change Property域选取Core File and Symbols项,选中File项输入相应的文 件,同目标机上运行的内核要一致。即 bootable工程目录中“default”目录下的 VxWorks的映象文件。 Step6:点击Launch,运行目标服务器 调试程序 3、打开Tornado,配置Target Server . 4、下载文件 Bootlable 工程 下载的方法:1)“project-download” 2)快捷工具, 下载的文件: Default调试目录下各源文件的. O文件 downloadlable 工程 调试目录(例“PPC603gun”)下工程的.out文 件或各源文件的.o文件 调试程序 5、调试程序 启动debugger:1)“Tool-Debugger ” 2)快捷工具, 调试函数入口:“Debugger-Run”或F6, 弹出 Task一栏填入要调试的函数名。 Arguments中填入要调试函数的入口参数。 Break at entry po 复选框选中时,程序会自动在调试程序的第一条语 句的地方 调试程序 BSP的config.h文件 定义缺省的BOOT引导参数(格式) #define DEFAULT_BOOT_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 - 定义网络加载方式。无此项时缺省值为零,为FTP tn - 目标板名 s - 启动描述字符串,用户可不定义 o - 从SCSI启动时指明网络接口 依据不同的启动设备类型,其中某些项可无。 附表 BSP的makefile中的主要宏定义 CPU= PPCEC603 TOOL= gnu TARGET_DIR= HCOM_BSP TGT_DIR = $(WIND_BASE)/target ROM_TEXT_ADRS = fff00000 ROM_SIZE = 00080000 RAM_HIGH_ADRS = 00800000 RAM_LOW_ADRS = 00010000 单板CPU类型 编译工具 用它来指定bsp name 指定target目录 用于生成romResident文件时指定入口 地址 加载VxWorks的目标地址 ROM引导程序代码段的起始位置,或驻留 ROM引导程序数据段的起始位置 . ROM的空间范围(512k) 附表 说明: 附表 用Downloadable工程方式来调试应用程序,也需要同时建立一个对应 的Bootlable工程 Bootlable工程以便生成目标板上所谓的BOOT程序,即基于ROM的 VxWorks映象的HEX文件 Bootlable工程可提供配置Target server所需要的与目标板上运行相同的 VxWorks 映象文件。 嵌入式操作系统VxWorks 映像启动流程 附表 起始引导程序 和 ROM引导程序 起始引导程序(BootStrap Programs) 起 始引导程序驻留在ROM中,主要包含: 1 )汇编级的硬件初始化程序romInit.s,用于系统的基本初始化,设置一些 重要寄存器的初始值,进行存储器的映射 2)搬移程序bootInit.c,将ROM引导程序拷贝至RAM的高端地址 RAM_HIGH_ADRS,然后跳转到此处执行ROM引导程序。 ROM引导程序(ROM Boot Programs) ROM引导程序起初存放在ROM中,初始化时被拷贝到RAM中,主要用于系 统的进一步初始化,并配置加载方式,将VxWorks映象加载至RAM。 附表 例:程序架构(任务与消息) 开发实例之一 附表 Bootrom执行流程 romInit.s : romInit 设置机器状态字及其它硬件相关寄存器,关闭中断,禁止 程序和数据CACHE,初始化内存,并设置堆栈指针 bootInit.c : romStart( ) 将ROM中的程序搬移至RAM中 bootConfig.c : usrInit( ) 设置cache的工作模式,板级硬件初始化,调用sysHwInit( ),usrKernelInit( ),KernelInit( ),初始化Win内核,产生根任务 usrRoot( ) bootConfig.c : usrRoot( ) 初始化内存,系统时钟,I/O系统,标准输入输出错,异常 处理,产生任务bootCmdLoop bootConfig.c : bootCmdLoop( ) 调用自动引导程序autoboot( ),此函数若成功则不返回 bootCon

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论