vxworks及tornado_哈尔滨工业大学_第1页
vxworks及tornado_哈尔滨工业大学_第2页
vxworks及tornado_哈尔滨工业大学_第3页
vxworks及tornado_哈尔滨工业大学_第4页
vxworks及tornado_哈尔滨工业大学_第5页
已阅读5页,还剩172页未读 继续免费阅读

下载本文档

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

文档简介

1、嵌入式操作系统第2章 VxWorks及其集成开发及其集成开发 环境Tornado嵌入式操作系统主要内容1、VxWorks操作系统操作系统2、VxWorks映像及其启动过程映像及其启动过程3、Tornado集成开发环境集成开发环境嵌入式操作系统 重点掌握 映像的类型及启动顺序 生成映像相关的代码 Tornado集成开发环境搭建集成开发环境搭建 创建映像 动态加载、运行、调试应用程序嵌入式操作系统1、VxWorks操作系统操作系统VxWorks操作系统的体系结构操作系统的体系结构VxWorks主机与目标机主机与目标机VxWorks模块库模块库VxWorks与与BSP嵌入式操作系统1.1 VxWor

2、ks体系结构体系结构VxWorks的网络设施VxWorks的网络设施包括:远程文件访问,包括基于client/Server的 嵌入式操作系统NFS机制以及使用RSH、FTP或TFTP的非NFS机制远程的登录和telnet以及bootp和ARP代理远程过程调用RPC(Remote Procedure Call与BSD套接字兼容的编程接口TCP/IP协议栈可选的简单网络管理协议SNMP(Simple Network Management Protocol无论是松耦合的串行线路、标准的以太网连接还是紧耦合的利用共享内存的背板总线,所有的VxWorks网络机制都遵循标准的Internet协议嵌入式操作

3、系统其他组件 虚拟内存(VxVMI)与共享内存(VxMP) VxVMI为带有为带有MMU的目标板提供了虚拟内存的目标板提供了虚拟内存 机制 VxMP提供了共享信号量、消息队列和在不同提供了共享信号量、消息队列和在不同 处理器之间的共享内存区域 加载调试等开发工具组件 提供运行在目标机上的动态加载器Loader、目 标机调试代理WDB Agent、Target Shell等等嵌入式操作系统1.2 VxWorks的主机与目标机的主机与目标机 VxWorks的开发使用基于主机的开发使用基于主机/目标机结构的交目标机结构的交 叉开发环境 主机:运行Tornado集成开发环境,为目标 机生成VxWork

4、s和应用程序 目标机:运行VxWorks和应用程序的嵌入式 系统 主机与目标机之间通过以太网或串口相连, 其通信由Target server/Agent方式进行方式进行嵌入式操作系统默认方式下,target server与target agent通过网络通信,但用户也可以改变通信方式嵌入式操作系统 目标代理( Target Agent ) 遵循WDB(Wind Debug)协议,允许目标机)协议,允许目标机 与主机上的Tornado开发工具相连 在目标代理的默认设置中,目标代理是以 VxWorks的一个任务的一个任务tWdbTask的形式运行的的形式运行的 TargetServer向目标代理发

5、送调试请求(断点向目标代理发送调试请求(断点 设置、任务控制等等),调试请求可以决定目标 代理对系统中其他任务的控制和处理嵌入式操作系统1.3 VxWorks模块库模块库 VxWorks子程序都组织成库,每个库都有一个或子程序都组织成库,每个库都有一个或 多个头文件,如:库函数taskLibsemLib 函数taskSpawnsemTake头文件taskLib.hsemLib.h嵌入式操作系统嵌入式操作系统1.4 VxWorks与与BSP BSP由代码、文档和规范组成,用作由代码、文档和规范组成,用作VxWorks程程 序和特定硬件之间的接口 BSP代码用于完成系统初始化,设备驱动和其他代码用

6、于完成系统初始化,设备驱动和其他 一些硬件相关的操作 VxWorks提供定制硬件的板级支持包提供定制硬件的板级支持包BSP,实现,实现 硬件抽象层 VxWorks自带的自带的BSP代码是针对硬件厂商的代码是针对硬件厂商的Demo 板定制的,用户可以根据自己的单板对Demo板代 码进行修改嵌入式操作系统2、VxWorks映像及其启动过程映像及其启动过程 VxWorks映像类型映像类型 映像相关的文件 VxWorks的启动过程的启动过程嵌入式操作系统映像格式 ELF格式(格式(Executable and Linking Format)Executable file嵌入式操作系统2.1 VxWor

7、ks映像分类映像分类 Bootrom型型常称常称bootrom或或boot 是一个最小化、专用的VxWorks引导映像,实现最少 的系统初始化 主要用于启动装载VxWorks映像,其功能类似于PC机 的BIOS 运行时也建立起多任务环境 通常存放在ROM或Flash中 Vxworks型型常称常称Vxworks映像映像 是系统最终要运行的映像 在运行时至少有一部分需要在RAM中运行嵌入式操作系统 这两大类型的映像都由BSP、VxWorks和 Application 3个部分组成,可以在其开发工具个部分组成,可以在其开发工具 Tornado上通过建立一个上通过建立一个bootable image获

8、得获得ApplicationVxWorksWind内核WDB AgentShellFile SystemBSP嵌入式操作系统 BSP(Board Support Pakage,板级支持包):它,板级支持包):它 由初始化和基本驱动程序两部分组成 初始化是指从系统上电复位开始直到Wind内核和 UsrRoot根任务启动的这段时间,系统的执行过程根任务启动的这段时间,系统的执行过程 初始化过程包括:CPU Init、Board Init、System Init。 CPU Init:初始化:初始化CPU的内部寄存器的内部寄存器 Board Init:初始化:初始化I/O的寄存器的寄存器 System

9、 Init:为系统的运行准备数据结构,进行数据初:为系统的运行准备数据结构,进行数据初 始化嵌入式操作系统 基本驱动程序完成对最小I/O设备的读写访问等驱 动操作 VxWorks:包括定制的:包括定制的VxWorks内核和各种外挂内核和各种外挂 功能模块 Application:为用户编写的应用程序:为用户编写的应用程序 BSP代码位于代码位于targetconfig下硬件相关子目录下硬件相关子目录嵌入式操作系统VxWorks映像映像 当构造VxWorks映像时,可以根据需要构造不同 类型的映像,系统把这些映像分成三种类型: ROM驻留(驻留(ROM-Resident image)的映像)的映

10、像 具备自启动功能 基于ROM的映像(ROM-based image) 可加载的映像(loadable image)嵌入式操作系统ROM驻留(驻留(ROM-Resident)的映像)的映像 它在启动时把数据段拷贝到目标机RAM中 这种类型的映像在启动阶段比较快,但它在目标 机上执行的速度比其他类型的映像要慢 升级不方便,适合内存资源有限的场合嵌入式操作系统 执行顺序:嵌入式操作系统基于ROM的映像(ROM-based image) 不具备自启动功能,它的执行需要通过bootrom 把它从ROM或Flash中装载到目标机RAM中,然 后才开始执行 这种类型的映像通常在启动阶段比较慢,但在目 标机

11、上执行的速度要快 方便升级 产品发布时,常使用这种映像 执行顺序:嵌入式操作系统嵌入式操作系统可加载的映像(loadable image) 不具备自启动功能,它的执行需要通过bootrom 把它装载到目标机RAM中,然后才开始执行 调试时,一般使用这种映像 加载时需要相关协议支持:串口、网口及其他协 议 执行顺序:嵌入式操作系统嵌入式操作系统典型的VxWorks映像 按照VxWorks构造规则可以创建以下多种典型的 VxWorks映像映像 VxWorksloadable image,由,由bootrom加载,在加载,在RAM 中运行,使用宿主机上的WindSh工具和符号表 VxWorks.st

12、loadable image,加载方式同上,但它内,加载方式同上,但它内 置符号表 VxWorks_romrom-based image,写入,写入rom,自启,自启 动,在RAM中运行 VxWorks.st_romcompressed rom-based image,加,加 载方式同上嵌入式操作系统 VxWorks.res.romrom-resident image,代码在,代码在ROM 中运行 VxWorks.res_rom_nosymrom-resident image,代码,代码 在ROM中运行,不包含符号表以上几种均为VxWorks 映像 bootrom基于基于rom压缩型的引导映像

13、压缩型的引导映像 bootrom_uncmp基于基于rom非压缩型的引导对象非压缩型的引导对象 bootrom_resrom驻留型引导映像驻留型引导映像以上3种均为bootrom嵌入式操作系统2.2 映像相关的文件 映像相关文件主要包含在四个目录下(BSP相关 文件): Tornadotargetconfigall:所有:所有BSP的公共部分的公共部分 Tornadotargetconfigcompsvxworks:内核基本模块描内核基本模块描 述文件(*.cdf) Tornadotargetconfigcompssrc:模块配置文件(被模块配置文件(被 usrConfig.c使用)使用) T

14、ornadotargetconfigbspname:与目标板相关的部分:与目标板相关的部分嵌入式操作系统 configall目录下主要有如下几个文件目录下主要有如下几个文件 bootConfig.c :是所有是所有Bootrom的主要初始化与的主要初始化与 控制文件 BootConfig.c是是usrConfig.c的一个子集,所以的一个子集,所以 Bootrom只能提供完整只能提供完整VxWorks Image中的部分功中的部分功 能 Boot Image不使用不使用MMU库(库(SPARC除外)。在集除外)。在集 成环境下修改工程相关的配置信息不会影响 Bootrom,只有直接修改只有直接

15、修改config.h、configAll.h、 bootConfig.c和和bootInit.c文件才会影响到文件才会影响到Bootrom嵌入式操作系统 bootInit.c:定义了:定义了romStart()函数,用于函数,用于 Bootrom的第二阶段初始化。首先把的第二阶段初始化。首先把text和和data 段从ROM拷到RAM中,然后初始化部分RAM, 进行解压 usrConfig.c:包含:包含VxWorks Image的主要初始的主要初始 化代码,非常完整。使用命令行编译时才会用 到此文件 configAll.h:设置了所有:设置了所有VxWorks映像的默认映像的默认 配置,包括

16、内核配置、组件配置、参数配置、 Agent配置等等配置等等嵌入式操作系统 configbspname:在该目录下主要有如下几个文:在该目录下主要有如下几个文 件 makefile: 用于命令行下编译,其中定义了一些 宏,如:CPU,TOOL,TARGET_DIR,VENDOR,BOARD,ROM_TEXT_ADRS,ROM_BASE_ADRS,ROM_SIZE,RAM_LOW_ADRS,RAM_HIGH_ADRS; config.h:包含所有的头文件和与目标板相关的:包含所有的头文件和与目标板相关的 特殊定义,如:BSP版本号和修订版本号、默 认引导参数、对Cache和MMU的配置、RAM和

17、ROM的定位以及大小配置、外部总线地址映 射,网络设备和中断向量嵌入式操作系统 romInit.s:该文件包含该文件包含Bootrom和和Rom-based VxWorks Image的初始化入口汇编代码,即实的初始化入口汇编代码,即实 现了romInit()。目标板一上电就开始执行 romInit(),主要完成三部分工作:,主要完成三部分工作: 屏蔽中断,初始化CPU 配置内存系统,通常包括关闭cache,初始化内存控制 器 初始化堆栈指针和其它寄存器以执行C语言,然后 调用romStart()Note:romInit()函数必须设计成与内存地址无关的函数必须设计成与内存地址无关的代码(PI

18、C),romInit.s只执行一些必要的初始化,只执行一些必要的初始化,其余的初始化工作可放到sysHwInit()中实现嵌入式操作系统 sysALib.s:包含目标板或系统相关的汇编语言:包含目标板或系统相关的汇编语言 函数,即实现了_sysInit()。这是Bootrom起来 以后执行的第一段代码,sysALib.s类似于 romInit.s完成的工作,但它不必设计成完成的工作,但它不必设计成PIC,且且 可调用其它库中的函数嵌入式操作系统 sysLib.c:包含目标板或系统相关的:包含目标板或系统相关的C语言函数语言函数, 该文件提供板级接口,通过该接口,VxWorks 和应用程序的实现

19、与目标系统无关,sysLib.c包 含srcdrv目录下的驱动程序子文件,驱动程序 的安装和初始化在子文件中完成。它中一般应 实现以下几类函数: 系统时钟相关函: sysClkConnect(),sysClkDisable(),sysClkEnable(),sysClkInt(),sysClkRateGet(),sysClkRateSet()嵌入式操作系统 系统硬件初始化函数:sysHwInit(),sysHwInit2() ; 内存相关函数:sysMemTop() 串口相关函数:sysSerialHwInit(), sysSerialHwInit2(),sysSerialChanGet()

20、杂项函数:sysBspRev(),sysModel(),sysToMonitor() 其他可选函数:如:辅助时钟中断相关函数,总线 相关函数 sysSerial.c:串口驱动程序的安装和初始化:串口驱动程序的安装和初始化 sysNet.c:网络接口设备的安装和初始化:网络接口设备的安装和初始化嵌入式操作系统 bspname.h:包含与板子相关的宏定义。若要:包含与板子相关的宏定义。若要 把srcdrv下的某驱动程序移植到目标板上,必 须在bspname.h文件开始包含目录targethdrv 下该驱动程序相对应的头文件 bspname.h应该定义:中断向量或中断号;应该定义:中断向量或中断号;

21、I/O 设备地址;设备寄存器位的含义定义;系统时 钟和辅助时钟最大和最小时钟速率嵌入式操作系统2.3 VxWorks的启动过程的启动过程 以可加载型映像为例,给出VxWorks操作系统的 启动过程 BSP启动过程可以分成两部分:启动过程可以分成两部分: bootrom启动过程(又简称启动过程(又简称boot启动过程)启动过程) VxWorks映像启动过程映像启动过程(又简称映像启动过程又简称映像启动过程) 两者在使用BSP文件上的区别在于:在启动顺序 中所调用的文件不同。如:romInit.s/sysAlib.s、 bootConfig.c/usrConfig.c等等嵌入式操作系统bootro

22、m启动过程启动过程Power up/resetromInitromStartusrInitusrRootbootCmdLoopbootLoadtargetconfigbspnameromInit.stargetconfigallbootInit.ctargetconfigallbootConfig.cVxWorks嵌入式操作系统romInit() 引导映像首先执行的函数。路径: targetconfigbspnameromInit.s 屏蔽处理器中断 保存启动类型(冷/热启动) 硬件相关的初始化 初始化处理器 初始化堆栈指针 初始化SDRAM控制器(时钟频率、等待状态、刷新频 率等) 如果需要

23、屏蔽二级高速缓存 初始化内存 调用romStart()嵌入式操作系统romStart() 引导映像第一个执行的C函数。路 径:./all/bootInit.c 将数据段从ROM拷贝到RAM 将代码段从ROM拷贝到RAM 清理没有使用的那部分内存(冷启动时) 执行解压操作(如果需要) 调用预内核的通用初始化程序(usrInit())嵌入式操作系统 在开发过程中往往需要修改,尤其是一些宏定义, 如: LOCAL_MEM_LOCAL_ADRS目标板本地目标板本地RAM起始地起始地 址 LOCAL_MEM_SIZE本地本地RAM大小大小 USER_RESERVED_MEM从从RAM顶端其用户保留字节顶

24、端其用户保留字节 数 RAM_HIGH_ADRS拷贝引导映像的入口地址拷贝引导映像的入口地址 RAM_LOW_ADRS拷贝拷贝VxWorks映像的入口地址映像的入口地址 ROM_TEXT_ADRS引导引导ROM的入口地址的入口地址 ROM_SIZEROM空间大小空间大小 ROM_BASE_ADRSROM基地址基地址 RESERVED从从RAM底部其用户保留字节数底部其用户保留字节数 STACK_SAVE为为RomStart()准备的最大堆栈大小准备的最大堆栈大小嵌入式操作系统SYS_MEM_BOTTOM系统存储区底部地址系统存储区底部地址SYS_MEM_TOP系统存储区顶部地址系统存储区顶部地

25、址binArrayStart压缩型二进制映像的起始地址压缩型二进制映像的起始地址binArrayEnd压缩型二进制映像的结束地址压缩型二进制映像的结束地址 romStart()运行完后,运行完后,RAM的布局:的布局:嵌入式操作系统嵌入式操作系统usrInit()路径: ./all/bootConfig.c对BSS段赋零把BootType值赋给sysStartType调用excVecInit(),初始化所有系统和缺省中断向量调用sysHwInit(),初始化与目标板相关的硬件调用usrKernelInit(),配置VxWorks内核调用kernelInit(),初始化并启动内核调用usrRoo

26、t()嵌入式操作系统usrRoot() 路径: ./all/bootConfig.c 初始化内存池 调用sysClkConnect(), sysClkRateSet(), sysClkEnable()初始化系统时钟初始化系统时钟 初始化I/O、文件系统 安装控制台 配置、初始化WDB 初始化网络接口(MUX) 启动bootCmdLoop任务任务嵌入式操作系统bootCmdLoop() 初始化bootline 调用autoboot,并启动延迟机制 设置命令行,判断输入命令(boot提供的命令)?,- print this list,- boot (load and go),p,- print b

27、oot params,c,- change boot params,l,- load boot file,g adrs,- go to adrs,d adrs,n,- display memory,m adrs,- modify memory,f adrs, nbytes, value, - fill memory,t adrs, adrs, nbytes, - copy memory,e,- print fatal exception,v,- print boot logo with version,嵌入式操作系统 调用bootLoad()下载VxWorks映像 之后控制台(或超级终端)会有

28、以下打印:嵌入式操作系统此时按任意键可停止自动启动,打印启动行参数:嵌入式操作系统 如果键入,则boot启动继续,按默认下载方式 下载映像(一般情况下默认网口):嵌入式操作系统bootLoad() 读取boot参数(bootline) 根据下载接口设置,调用相应函数下载VxWorks 映像。提供以下几种下载方式: 网口 SCSI接口接口 软盘 硬盘接口(ATA、IDE、PCMCIA、TFFS) 嵌入式操作系统 下载映像时控制台会有如下显示:Loading. 881680Starting at 0 x10000嵌入式操作系统VxWorks image启动过程启动过程sysInit()usrIni

29、t()sysHwInit()usrKernelInit()KernelInit()UsrRoot()usrAppInit()targetconfigbspnamesysAlib.stargetprojProject1prjConfig.ctargetconfigbspnamesyslib.ctargetconfigcompssrcusrKernel.ctargethkernelLib.htargetprojProject1prjConfig.ctargetprojbspnameusrAppInit.c嵌入式操作系统sysInit()路径: targetconfigbspnamesysAlib.

30、s用缺省值初始化系统中断表用缺省值初始化系统异常表初始化堆栈初始化处理器关中断激活usrInit()嵌入式操作系统usrInit()路径: targetprojProject1prjConfig.c对bss赋零把bootType值赋给sysStartType调用excVecInit(),初始化所有系统和缺省中断向量调用sysHwInit(),初始化与目标板相关硬件调用usrKernelInit(),配置VxWorks内核调用kernelInit(),初始化并启动内核嵌入式操作系统sysHwInit() 路径: targetconfigbspnamesysLib.c 初始化内存映射(MMU) 初

31、始化PCI库 初始化可编程中断控制器(可选) 初始化PCI设备 初始化串口设备 初始化网口 初始化电源管理模块(可选)嵌入式操作系统usrKernelInit() 路径:targetconfigcompssrcusrKernel.c 配置内核数据结构 按照系统配置,添加相关组件嵌入式操作系统KernelInit() 路径:targethkernelLib.h初始化并启动内核创建系统内存分区激活intLockLevelSet()从内存池顶部创建根堆栈和TCB调用taskInit(),taskActivate()调用usrRoot()嵌入式操作系统UsrRoot()路径:usrConfig.c初始

32、化I/O系统,安装设备驱动程序,创建设备(在configAll.h和config.h中指定)等调用sysClkConnect()、sysClkRateSet()、iosInit()安装系统时钟驱动程序调用ttyDrv(),安装控制台驱动程序调用excInit()、logInit()、sigInit()初始化异常管理调用pipeDrv()初始化管道驱动程序调用stdioInit()初始化标准的I/O库调用wdbConfig()配置并初始化目标代理机如果系统配置了target shell,则启动它,则启动它启动用户应用程序usrAppInit()嵌入式操作系统 映像下载成功后,控制台会有映像、BS

33、P的版本 信息打印:嵌入式操作系统VxWorks image启动后的内存(启动后的内存(RAM)分布)分布用来在目标板上为Tornado所用,主要用于动态下载目标模块,传送参数存放中断向量表、BootLine,系统引导配置,异常信息OS未启动前,所使用的堆栈区存放存放操作系统映像,vxsorks的text段,data段,BSS段用于动态内存的分配,任务的堆栈,控制块,VxWorks运行时需要的内存。保留给用户管理的内存嵌入式操作系统Bootrom与与VxWorks映像启动过程比较映像启动过程比较 Bootrom 和VxWorks 都对硬件进行了初始化,但 两次硬件初始化的是不同的。 BootR

34、om映像主要作用是通过网口或串口下载映像主要作用是通过网口或串口下载 VxWorks系统,所以它只是初始化很少的硬件系统如系统,所以它只是初始化很少的硬件系统如 串口、网口等来满足下载VxWorks的需要,一旦 VxWorks下载完毕。这些初始化过的硬件的作用也就下载完毕。这些初始化过的硬件的作用也就 完成了 VxWorks启动后会从新对几乎所有的硬件设备进行完启动后会从新对几乎所有的硬件设备进行完 全的初始化来满足VxWorks操作系统运行的需要嵌入式操作系统嵌入式操作系统映像的开发过程 尽量获得一个与目标硬件环境相近的参考板级支 持包和相关代码模板 开发环境准备 编写引导代码的初始化代码

35、提供一个轮询访问串口的驱动程序,以便调试 提供一个网口驱动程序,以便下载映像 一旦启动VxWorks内核,则需要 连接系统中断 启动系统时钟 根据目标板硬件环境,完成板级支持包内的驱动 程序和设备初始化 板级支持包的测试和文档编写嵌入式操作系统3、Tornado集成开发环境集成开发环境Tornado集成开发环境介绍集成开发环境介绍安装Tornado2.2用Tornado创建一个bootable image用Tornado创建一个downloadableapplication module嵌入式操作系统3.1 Tornado集成开发环境集成开发环境 Tornado集成开发环境集成开发环境 是实现

36、嵌入式实时应用程序的完整的软件开 发平台 是交叉开发环境运行在主机上的部分 是开发和调试VxWorks系统不可缺少的系统 组成部分 Tornado是一个窗口环境,是一个窗口环境, 集成了编辑器、编译器、调试器于一体嵌入式操作系统Tornado开发系统的组成开发系统的组成 主机工具与VxWorks系统之间 的通信由TargetTornado开发系统包含三个高度集成的部分: server/Agent共 同完成VxWorks:运行在目标机上的高性能、可剪裁的实时操作系统Tornado开发环境:运行在宿主机上,包括一组交叉开发工具和实用程序,可对目标机上的应用进行跟踪和调试连接宿主机和目标机的多种通信

37、方式以太网、串口线等等嵌入式操作系统 命令执行工具WindShTornado IDE的主要组成工具的主要组成工具 C语言命令shell 这是Tornado所独有的功能强大的命令行 解释器 可以直接解释C语言表达式、调用目 VxSim对软件开发者的意义: 标机上的函数、访问系统符号表中 在嵌入式系统开发中软件的开发通常受到硬件开发 登记的变量 进度的制约 集成的源代码编辑器 还可以直接执行语言 由于软件开发必须滞后于硬件开发,影响了产品调试器,包括命令行和图形接口 可以实现所有的调试功能,包括 工具CrossWind/WDB就是图形化的增强型交叉调试器研发进度 下载/删除软件模块 VxSim在一

38、定程度上解决了这个问题:使得用户可以远程源代码集成调试器C/C+编译环境工程配置工具Project Facility/Configuration 创建并发起一个任务、删除任务目标机系统状态浏览器browser 在工程开发初期,在硬件环境尚不具备的情况下,可支持任务级和系统级调试VxWorks提供交叉编译器、iostreams类库和 可以对VxWorks操作系统及其组件进行自动地配置这是Tornado shell的一个图形化组件 创建/删除端点 以利用Tornado进行与硬件无关模块的设计 支持混合源代码和汇编代码显示一系列的工具来支持C语言和C+语言 Makefile自动生成维护提供目标系统的

39、全面状态总结,也允许开发者监视独立 运行/单步/继续执行程序 WindView, 支持多目标机同时调试 Diab C/C+ Compiler:唯一获得Motorola软件工程维护的目标系统对象:任务、信号灯、消息队列、内存分区 查看/修改内存、寄存器、变量 集成的软件逻辑分析仪(诊断分析工具) 白金大奖的嵌入式编译器自动的依赖性分析、定时器、模块、堆栈等 查看任务列表、内存使用情况、可以向开发者提供目标机硬件上实际运行的应用程序的详细情况 GNU C/C+ Compiler:应用最广泛的编译器 CPU利用率 代码容量计算开发者可以选择周期性或条件性的更新状态值 集成的VxWorks目标仿真器V

40、xSim自动剪裁 可以与VxSim一起使用查看特定的对象(任务、信号量、提供对C+全面的支持 提供与真实目标机一致的调试和仿真运行环境 消息队列、内存分区、类) 大大缩短了开发周期 允许开发者可以在没有BSP、操作系统配置以及目标机 复位目标机等 硬件的情况下进行开发嵌入式操作系统其他核心工具 多语言浏览器WindNavigator 提供源代码浏览 图形化显示函数调用关系 快速代码定位嵌入式操作系统 图形化核心配置工具WindConfig 使用图形向导方式智能化的自动配置VxWorks 内核及其组件参数 增量加载器 可以动态的加载新增模块并在目标机与内核实 现动态链接运行,不必重新下载内核及未

41、改动 的模块嵌入式操作系统Tornado IDE的工作方式的工作方式 Tornado IDE不受目标机资源的约束不受目标机资源的约束 上述工具运行在主机上,依赖存放在主机上的目 标机系统的符号表 它们与目标机通过target server/agent交互交互 支持动态链接与加载 开发者可以分批将目标模块加载到目标系统上 不必在主机上将应用程序与内核链接起来,然后整个 的下载到目标系统上去 可以大大缩短编辑-测试-调试周期嵌入式操作系统3.2 Tornado2.2安装安装 安装文件: 41/software/Engineering.Gener al/EDA/_

42、Others/WINDRIVER.TORNADO/WIN DRIVER.TORNADO.V2.2.FOR.PENTIUM/或学或学 院ftp 安装步骤除下面外,都按默认选择: tornado registry选择手动配置选择手动配置 license选择固定选择固定phone或或fax项项嵌入式操作系统 License除两个除两个key外(外( CD1: cAQ8i-qP2I&-g$vT6-3&gjw-bEk9g CD2: A7KbB-Rd37p-hNFBE-kzgaT-b9gpC ), 还需: 创建c:/flexm文件夹,将安装文件crack中的 license.dat拷贝到上

43、述文件夹拷贝到上述文件夹 添加环境变量: LM_LICENSE_FILE = c:flexlmlicense.dat 如果在使用vxsim仿真时,不能成功加载VxSim, 则需要安装xp的补丁:KB924867嵌入式操作系统安装后的目录结构嵌入式操作系统VxWroks相关的文件目录相关的文件目录嵌入式操作系统VxWorks工程管理工程管理 Tornado能够创建两种工程类型:能够创建两种工程类型:bootable和和 downloadable Bootable类型可用来生成类型可用来生成bootrom和和VxWorks映映 像,生成的VxWorks映像,它包含的操作系统组 件,经过完全连接,可

44、以独立运行 Downloadable类型用于生成应用程序模块目标映类型用于生成应用程序模块目标映 像,只是部分连接,存在未解析的外部符号引 用,不能独立运行,但它支持动态加载和连接, 为VxWorks所特有,能进行应用代码的快速开发 和调试嵌入式操作系统嵌入式操作系统3.3 创建一个bootable image 通过创建Bootable Image,可以生成运行在目标,可以生成运行在目标 机上的各种bootrom和VxWorks映像 这里以loadable image(bootrom+VxWorks)启)启 动方式为例,构造一个完整的开发环境软盘引导目标机网络连接下载映像网络连接下载模块网络连

45、接调试串口控制台嵌入式操作系统 我们利用VMware软件模拟真实的目标机,来搭 建一个VxWorks操作系统的交叉开发环境 宿主机:PC机 目标机:VMware虚拟机 操作步骤: (一)利用VMware软件创建一个虚拟目标机 (二)在PC机上构造虚拟目标机的loadable image映像映像 (三)修改Tornado相关设置,连接宿主机和目标机, 建立调试通道 通常情况下,在开发阶段,如果没有合适的开发 板,建议使用Tornado自带的VxSim进行仿真嵌入式操作系统(一)利用VMware软件创建一个虚拟目标机 下载并安装VMware软件 使用VMware向导创建一个虚拟机嵌入式操作系统 设

46、置虚拟机软盘属性嵌入式操作系统 设置虚拟机网卡属性嵌入式操作系统 修改VMnet1的IP地址为主机IP地址主机IP地址与bootline一致嵌入式操作系统 如果PC机上没有软驱,下载并安装ramdiskNT,创 建一个虚拟软驱A:嵌入式操作系统(二)在PC机上创建虚拟目标机的bootrom 和VxWorks映像 确定网卡类型,选择合适网卡驱动程序 因为VMware虚拟机上的网卡类型默认为AMD PCNET Family PCI Ethernet Adapter ,而 Tornado自带的自带的ln97x驱动不适合虚拟机上的网驱动不适合虚拟机上的网 卡,需要找到合适的驱动程序 将ftp上的pcP

47、entium文件夹替换Tornado安装目录 C:Tornado2.2targetconfig下的下的pcPentium,替,替 换pcPentium文件夹的主要目的就是替换ln97x驱 动程序嵌入式操作系统 打开Tornado工具,创建一个bootable image嵌入式操作系统嵌入式操作系统嵌入式操作系统 修改配置文件targetconfigpcPentiumconfig.h config.h定义:定义: 引导行,引导行定义了引导设备、引导路径、 操作系统文件名、主机/目标机IP地址、子网掩 码、FTP用户名和口令等参数 目标机操作系统包含的主要成分,例如软驱、 IDE硬盘、硬盘、SCS

48、I设备、网络等设备驱动设备、网络等设备驱动 文件系统(DOSFS、TFFS、CDROMFS等) 调试方式 内存地址 以及有关参数嵌入式操作系统 修改配置文件config.h中的启动网卡设置,确定目 标机使用的网卡类型号:嵌入式操作系统 修改config.h中的default_boot_line嵌入式操作系统 修改为: lnPci(0,0)host:vxworks h= e=8 u=target pw=target 解释如下: 启动设备名lnPci(0,0),意思是目标机第0 个处理器的第0块lnPci网卡。 启动设备名会因驱动程序的不同而不同

49、嵌入式操作系统 常用设备:fdideataslenefeiINCLUDE_FDINCLUDE_IDEINCLUDE_ATAINCLUDE_SCSIINCLUDE_ENEINCLUDE_FEI软驱IDE硬盘ATA硬盘SCSI硬盘Eagle/NE2000兼容网卡兼容网卡Intel 82557/8/9 PCI interfaceelPci INCLUDE_EL_3C90X_END3Com905系列系列 3Com EtherLink III interfaceelt INCLUDE_ELT_3C509_ENDlnPciINCLUDE_LN_97X_END AMD 79C97x PCI interfac

50、e嵌入式操作系统 主机标志名,可以任意填写,不影响启动过 程host 主机端映像存放路径和名称VxWorks 主机IP地址h= 目标机IP地址e=8嵌入式操作系统 添加控制台 修改为嵌入式操作系统 生成bootrom,选择菜单Build-Build Boot Rom嵌入式操作系统 弹出的窗口 BSP选择选择pcPentium,Image选择选择bootrom和和gnu 点击OK,会弹出Build Output窗口显示编译过窗口显示编译过 程 等待编译成功,生成的bootrom存放在 C:Tornado2.2targetconfigpcPent

51、ium下下嵌入式操作系统 生成VxWorks映像。VxWroks有很多组件需要 配置:黑色为VxWorks当前所包含的组件嵌入式操作系统 打开development tool components为了能够使用shell,选择target shell components嵌入式操作系统为了能够使用telnet服务,选择网络组件中的telnet server嵌入式操作系统 选择菜单build rebuild all 等待编译结束 编译出来的VxWorks映像在工程目录下的 default目录下,其名称:目录下,其名称:VxWorks嵌入式操作系统 制作启动软盘 在windows的cmd命令窗口下,

52、进入 C:Tornado2.2hostx86-win32bin目录:目录: 把前面生成的bootrom拷贝至此目录 命令:format a: 用于格式化软盘,第一次使用时需要 mkboot a: bootrom 制作启动盘嵌入式操作系统(三)修改Tornado相关设置,连接宿主机和 目标机,建立调试通道 设置FTP服务器 可以使用常用的FTP服务器 例如Serv_U 也可以使用Tornado自带的FTP Server 使用FTP服务器的关键在于提供正确的用户名、 密码和映像所在路径嵌入式操作系统 启动Tornado组件FTP Server 在WFTPD窗口中选择菜单Security中的 Use

53、r/right 在其弹出窗口中选择New User嵌入式操作系统 根据提示信息输入: 登录用户名和密码(要与 DEFAULT_BOOT_LINE中指定的一致)中指定的一致) Home Directory 如果这个路径不是默认的vxWorks镜像生 成目录的路径,则需要拷贝生成的 vxWorks镜像到该路径下镜像到该路径下 比如从上面的default目录下拷贝到D盘 D:嵌入式操作系统 启动虚拟目标机嵌入式操作系统嵌入式操作系统嵌入式操作系统嵌入式操作系统嵌入式操作系统 使用Target Server从主机连接到目标机从主机连接到目标机 在tornado菜单Tools Target Server

54、 Configure 在弹出窗口中 首先给目标服务器命名 在Target Servers Property中,选择中,选择Back End, 并在Available Back中选择中选择wdbrpc,在,在Target Ip/Address中输入目标机中输入目标机IP嵌入式操作系统嵌入式操作系统 在Target Servers Property中,选择中,选择Core File and Symbols,选择,选择File为为BSP目标文件所在目录的目标文件所在目录的 VxWorks Launch嵌入式操作系统嵌入式操作系统 点击图形按钮中下拉框,选择目标机,即可嵌入式操作系统 Launch s

55、hell嵌入式操作系统演示从网络方式启动可能失败的原因 非正确的网卡驱动 防火墙设置 IP设置设置 操作系统映像路径 用户名和密码嵌入式操作系统Bootable Application代码组成代码组成 当创建可启动的应用时,在 Workspace窗口的窗口的Files栏栏 中,可以看到:嵌入式操作系统 linkSyms.c 动态生成的配置文件,用来获得正确的 symbols references prjConfig.c 动态生成的配置文件 包含VxWorks中当前包含的各个组件的初始 化代码 romInit.s bootrom的入口代码的入口代码嵌入式操作系统 romStart.c 将VxWo

56、rks映像装入RAM sysALib.s 包含系统开始运行的代码 sysLib.c 包含体系结构相关的一些例程 usrAppInit.c 应用程序的初始化入口嵌入式操作系统3.5 配置VxWorks的组件 打开Workspace中的VxWorks,可以看到当前 VxWorks的配置情况的配置情况 黑色:当前已经选用的组件 在配置过程中,如果知道组件的部分信息,可 以根据该信息查找所属的组件 例如嵌入式操作系统嵌入式操作系统获得组件的属性 双击感兴趣的组件 例如:嵌入式操作系统增加/删除一个组件 在感兴趣的组件上。使用右键 对于当前没有包含的组件,使用Include 增增 加 对于当前已经包含的

57、组建,使用Exclude删 除 如果组件中还包括其他组件(显示为+,-),将 会显示一个选择框,根据需要打勾嵌入式操作系统 有的组件目录中包含若干个不相容的选项,只 能选择其中一个,例如嵌入式操作系统修改组件的参数 对于感兴趣的组件,有些参数可以修改,例如嵌入式操作系统估计已有组件的大小 在项目上:右键 Properties size嵌入式操作系统作业 利用VMware搭建一个交叉开发环境,并编写一 个test函数(test函数的功能是:打印“This is xxxs homework”),将其添加到),将其添加到VxWorks映像映像 中,在shell下运行,将运行结果粘贴到作业中 (粘贴内

58、容如下页所示)。并找到启动过程中的 显示信息所在源代码的位置,顺便尝试一下修改 VxWorks映像加载到内存的地址,重新编译后,映像加载到内存的地址,重新编译后, 观察修改前后启动显示部分哪里有变化?嵌入式操作系统运行信息嵌入式操作系统3.4 创建一个downloadable application module 什么是Downloadable application module 它是可动态加载的应用程序目标文件 可通过网口或串口加载到目标机上与目标机中已存在 的bootable image动态链接后运行动态链接后运行嵌入式操作系统作为演示,我们创建一个downloable的应用程序模块,并

59、让其运行在目标机仿真器上嵌入式操作系统确定project名与路径嵌入式操作系统选择工具链(toolchain)工具链是一套用来建造针对特定目标机 针对目标仿真器,默认的工具链名字形式应用的交叉开发工具 是SIMhostOsgnuTornado提供的工具链是基于GNU的预处 对NT主机是SIMNTgnu理、编译、汇编和链接器嵌入式操作系统确认所做的选择嵌入式操作系统Workspace0和example1的信息窗口嵌入式操作系统嵌入式操作系统添加源文件 第一步:添加源文件到开发目录中 第二步:将这个源文件加入到example1中嵌入式操作系统第一步:添加源文件到开发目录中从Tornado的安装目录

60、下:(安装目录)targetsrcdemostart拷贝源文件到开发目录中D:VxWorks_examples嵌入式操作系统右键嵌入式操作系统加入的源文件 源文件所依赖的外部文件 即将由源文件所产生的目标文件cobble.c产生的目标文件 Tornado自动为example1生成的目标文件, 包含所有目标文件嵌入式操作系统Build project 首先预览一下默认的build设置编译器、汇编器、链接器选项双击 宏Makefile默认规则嵌入式操作系统 根据上述默认规则,Build example1右键嵌入式操作系统嵌入式操作系统假如在源文件中有错误 例如,在cobble.c中不小心使用了“/” 在build

温馨提示

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

评论

0/150

提交评论