使用VxWorks的一些总结
- 格式:doc
- 大小:65.50 KB
- 文档页数:13
VxWorks常用的命令1.与任务相关的命令sp function,[arg1],...,[arg9]-启动任务,最多接受9个参数,默认的优先级100、堆栈20000字节period n,function,[arg1],...,[arg8]-创建一个周期调用function的任务,周期为n秒,最多接受8个参数repeat m,function,[arg1],...,[arg8]-创建一个反复调用function的任务,调用次数为m,m=0时永久调用,最多也是8个参数ts tidX -挂起任务tr tidX -恢复挂起的任务td tidX -删除任务i tidX -显示任务基本信息,参数为0时显示全部任务ti tidX -显示任务详细信息,包括寄存器、堆栈等tt tidX -显示任务的函数调用关系checkStack tidX -显示任务堆栈使用的历史统计,参数为0时显示全部任务[其中tidX可以为任务ID 也可以为任务名]2、系统信息lkup ["string"] -在系统符号表中查找并列出含有"string"字符的函数及全局变量,有两个特殊参数:0,给出符号表统计;""(空字符串),列出全部符号lkAddr addr -显示addr地址附近的符号表l addr,[n] -显示addr地址开始的n条指令的反汇编,n省略时默认为10条指令h [n] -n为0时列出最近执行的shell命令,默认20条;n非0时,设定shell记录的历史命令的数目d [addr,[number],[width]]-显示addr地址开始的number个单元的内容,width定制每个单元的宽度,可以是1、2、4、8m addr,[width] -按width宽度修改addr地址的内容,width可以是1、2、4、8 memShow 1 -显示系统分区上空闲和已分配空间的总数等printErrno value -打印系统定义的错误码的宏3、与网络相关的命令ifShow ["ifname"] - show info about network interfacesinetstatShow - show all Internet protocol socketstcpstatShow - show statistics for TCPudpstatShow - show statistics for UDPipstatShow - show statistics for IPicmpstatShow - show statistics for ICMParpShow - show a list of known ARP entriesmbufShow - show network stack data pool statistics netStackSysPoolShow - show network stack system pool statistics routeShow - display all IP routes (summary information) mRouteShow - display all IP routes (verbose information) routestatShow - display routing statisticsrouteAdd "destaddr","gateaddr" - add route to route tablerouteDelete "destaddr","gateaddr" - delete route from route table说明:上述大多数命令都可以在help、netHelp中查到vxWorks命令规则:名词+动词,第二个单词开始大写序号状态命令备注1 BSP c 改变配置2 BSP p 打印当前配置信息3 BSP @ 开始加载内核4 BSP ctrl+x 重新启动5 BSP6 BSP7 vxWorks i 查看进程8 vxWorks ifShow 查看当前网络设置9 vxWorks devs 查看所有的设备10 vxWorks cd "/xxx/" 进入目录11 vxWorks cfIdeInit 每次上电后执行12 vxWorks cfFormat 新卡(或者是未格式化的卡)插入的时候执行,只需执行一次13 vxWorks ll 以详细模式查看当前目录下的文件14 vxWorks ls 以简单模式查看当前目录下的文件15 vxWorks version 查看编译时间16 vxWorks td xxx 终止xxx进程17 vxWorks help 帮助18 vxWorks tffsShow 查看tffs的相关信息19 vxWorks tffsDevFormat 格式化tffs文件系统20 vxWorks showTime 查看系统时间21 vxWorks usrTffsConfig(0,0,"/tffs0") 新增一个tffs格式的文件系统22 vxWorks pwd 查看当前操作所在的目录路径23 vxWorks ping "xx.xx.xx.xx",10,0 ping地址xx.xx.xx.xx,共计10次24 vxWorks pciDeviceShow 查看当前系统中的所有PCI设备25 vxWorks pciHeaderShow,0,xx 查看当前系统中的组号为0、地址号为xx 的PCI设备VxWorks中如果稍有不慎,就可能导致task suspend,如果运气好,shell没有被挂起,则可以通过系统的一些命令追踪一下挂起的原因。
vxworks 使用案例VxWorks是一款实时操作系统(RTOS),广泛应用于嵌入式系统、工业控制、航空航天、军事等领域。
以下是一些VxWorks的典型使用案例:1. 嵌入式设备:VxWorks可用于各种嵌入式设备,如智能家居、无人驾驶汽车、工业机器人等。
在这些设备中,VxWorks可以提供实时性能、低功耗和紧凑的系统资源占用。
2. 航空航天:VxWorks在航空航天领域有着广泛应用,如飞行控制系统、卫星通信系统、航空电子设备等。
在这些系统中,VxWorks需要具备高可靠性、实时性和强大的内存管理能力。
3. 军事系统:VxWorks在军事领域也有广泛应用,如导弹控制系统、雷达系统、指挥控制系统等。
在这些系统中,VxWorks需要满足严格的性能、安全性和可靠性要求。
4. 工业控制:VxWorks可用于各种工业控制系统,如生产线自动化、智能仪表、传感器等。
在这些系统中,VxWorks可以提供实时性能、稳定性和易于扩展的特性。
5. 医疗设备:VxWorks在医疗设备中有广泛应用,如超声波设备、心电监测设备、手术机器人等。
在这些设备中,VxWorks需要具备高可靠性、实时性和良好的兼容性。
6. 通信设备:VxWorks可用于通信设备,如交换机、路由器、基站的控制系统等。
在这些设备中,VxWorks需要提供高性能、低功耗和稳定的系统运行。
7. 汽车电子:VxWorks在汽车电子领域也有广泛应用,如发动机控制系统、刹车控制系统、车载信息娱乐系统等。
在这些系统中,VxWorks 需要满足功能安全、实时性和低功耗的要求。
总之,VxWorks作为一款实时操作系统,在众多领域发挥着重要作用。
其高性能、实时性、可靠性和易用性使得它成为许多嵌入式系统和实时控制应用的首选操作系统。
VxWorks固件分析⽅法总结VxWorks固件分析⽅法总结最近研究基于VxWorks系统的iot设备的固件分析⽅法,将学习⼼得记录于此,以备将来的查询需要。
1.VxWorks是什么?VxWorks是美国WindRiverSystem公司(风河公司)推出的⼀个RTOS(实时操作系统),凭借良好的持续发展能⼒、⾼性能的内核以及友好的⽤户开发环境,在嵌⼊式实时操作系统领域占据⼀席之地。
⾃从1987年⾸次问世以来,VxWorks系统版本经历了5.x,6.x到如今的7版本。
VxWorks系统凭借其优秀的实时性占据着不⼩的市场份额,包括NASA的⽕星探测器、波⾳787客机、⽹络路由器等,市场范围跨越各种安全领域。
按照所运⾏的操作系统区分,嵌⼊式iot设备可以⼤致上分为基于linux和基于VxWorks的两类。
VxWorks⽀持⼏乎所有现代市场上的嵌⼊式CPU架构,包括x86系列、MIPS、PowerPC、Freescale ColdFire、Intel i960、SPARC、SH-4、ARM、StrongARM以及xScale CPU。
2.如何定位VxWorks固件的加载地址使⽤ida pro、ghidra等反汇编⼯具进⾏分析时,需要了解固件的加载地址,否则⽆法正确的分析固件。
下图所⽰为填写固件加载地址前后的函数识别情况的对⽐,可以看出确定了固件加载地址之后函数的识别度更⾼。
2.1通过ELF⽂件头读取通常固件⽂件会使⽤ELF格式进⾏封装,因此可以使⽤readelf等⼯具对头部⽂件进⾏分析,进⽽得到固件的加载地址。
IDA pro已经集成了这个功能,可以直接分析出常见的固件的加载地址。
2.2通过分析内存中的相邻位置如图所⽰为VxWorks固件在mips架构中的内存分布图,可知固件加载地址与栈初始化地址相邻,可以通过定位栈初始化地址确定固件的加载地址。
那么如何定位栈初始化地址呢?那就是寻找栈指针寄存器sp的位置。
vxworks使用过程中的100个疑问与解答1. VxWorks是什么?VxWorks是一种实时操作系统(RTOS),由美国Wind River公司开发,适用于嵌入式系统。
2. VxWorks有哪些特点?VxWorks具有高度可靠性、实时性、可移植性和可扩展性等特点。
3.如何安装VxWorks?安装VxWorks需要下载安装包,然后按照安装指南进行安装。
4.如何创建VxWorks任务?可以使用taskSpawn函数来创建任务,指定任务的入口函数、优先级等参数。
5. VxWorks如何进行任务间通信?任务间可以使用消息队列、信号量、共享内存等机制进行通信。
6.如何调试VxWorks程序?可以使用Wind River公司的调试工具Wind River Workbench进行调试。
7. VxWorks支持哪些开发语言?VxWorks主要支持C和C++开发,也可以使用汇编语言和Java等。
8.如何加载和运行VxWorks程序?VxWorks程序可以通过TFTP、FTP等网络协议加载到目标设备上,然后使用命令运行。
9. VxWorks是否支持多任务?是的,VxWorks支持多个任务的同时运行,并通过任务调度器进行任务切换。
10.如何实现任务间的同步?可以使用信号量、事件标志等机制实现任务间的同步。
11. VxWorks中如何实现中断处理?VxWorks提供了中断服务例程(ISR)和处理器驱动程序(DPC)来处理中断。
12.如何列出VxWorks系统中的任务?可使用taskShow命令列出系统中所有任务的详细信息。
13.如何获取任务的优先级?可以使用taskPriorityGet命令获取任务的优先级。
14.如何设置任务的优先级?可以使用taskPrioritySet命令设置任务的优先级。
15.如何控制任务的时间片轮转?可以使用taskDelay命令来控制任务的时间片轮转。
16.如何查看VxWorks系统的中断信息?可以使用intShow命令来查看系统中的中断信息。
一章:.嵌入式系统定义:以应用为中心,以计算机技术为基础,软硬件可裁减,适用于系统对功能,可靠性,成本,体积,功耗有严格要求地计算机系统.文档收集自网络,仅用于个人学习.整个嵌入式系统地体系结构:部分,嵌入式处理器,嵌入式外围设备,嵌入式操作系统,嵌入式应用软件.嵌入式系统特点:针对性强,实时性强,高可靠性,系统精简,需要开发工具和环境..嵌入式处理器组成:嵌入式微处理器,嵌入式控制器,嵌入式处理器,嵌入式片上处理系统..嵌入式外围设备:存储设备,通信设备,显示设备.嵌入式应用软件特点:系统软件高实时性,要求固态化存储,软件代码高质量,高可靠性,多任务操作系统是走向工业标准化道路地基础.文档收集自网络,仅用于个人学习.代码临界区:有临界区地概念.临界区内放地一般是被个以上地进程或线程(以下只说进程)共用地数据.临界区内地数据一次只能同时被一个进程使用,当一个进程使用临界区内地数据时,其他需要使用临界区数据地进程进入等待状态.文档收集自网络,仅用于个人学习.非抢占式内核抢占式内核,中断时钟节拍—特定地周期性中断.进程与线程都是由操作系统所提供地程序运行地基本单元,系统利用该基本单元实现系统对应用地并发性,进程和线程地区别在于:线程地划分尺度小于进程,使得多线程地并发性高,另外,进程再执行过程中拥有独立地内存单元而多个线程共享内存,从而极大地提高了程序地运行效率.文档收集自网络,仅用于个人学习二章:.任何对外界地激励能够及时及时响应地系统就是实时系统,系统运行地正确性不仅依靠结果还依靠响应时间.文档收集自网络,仅用于个人学习.实时系统特性:多任务和可抢占性..任务具有优先级,支持优先级调度..具备支持可预测地任务同步机制..多任务间地通信..操作系统具备消除优先级转置地机制..存储器管理优化..系统行为是可知或者是可预测地.文档收集自网络,仅用于个人学习.实时系统地主要评价指标:任务调度机制..内存管理.最小内存开销.最大中断禁止时间.实时系统地任务转换图:任务调度地功能:.记录当前地任务状态并保存到中..根据调度算法决定就绪任务种哪个任务能够执行.可以拥有处理器资质..分配处理器..任务运行结束后作善后处理工作,如保存当前信息等.文档收集自网络,仅用于个人学习.任务调度地性能准则:.响应时间..处理器利用率..等待时间..吞吐量..其他指标.任务调度方式从任务可否被抢占地角度分为可打断调度和不可打断调度..任务调度算法:.基于时钟驱动地调度方法(根据任务特定地周期来决定调度哪个任务).事件驱动地调度算法(根据事件出现地先后以及任务地优先级安排任务地执行,优先调度优先级高地任务,任务执行时间非周期.)文档收集自网络,仅用于个人学习.基于时钟驱动地调度算法:运行时间(),<<截止时间().能被超周期(最小公倍数)整除.文档收集自网络,仅用于个人学习.基于优先级地调度算法可以分为静态优先级调度算法和动态优先级调度算法,静态优先级调度算法给任务里所有作业分配同样地优先级或者说各个作业地优先级不随时间改变.动态优先级调度算法给任务里地所有作业分配不同地优先级,优先级随时间变化文档收集自网络,仅用于个人学习.单调速率算法()和最早时限优先算法是处理器算法.都是基于优先级地调度算法.是模型地静态优先算法.是典型地动态优先级算法.文档收集自网络,仅用于个人学习其他算法:先进先服务()调度算法:优点:实现简单,效率低下.再一些实际地系统和一般应用程序种采用这种算法较多,很少单独使用.一般配合其他算法..短作业优先调度算法:每次选择一个运行时间最小地任务调入内存.给其分配处理机等资源,比效率高,但实现起来困难..可变时间轮转调度法:系统可根据当前地任务数确定时间段地大小.克服了系统中任务数很小时系统开销大地特点,但修改时间片地大小,统计系统任务地数量也需要消耗系统时间.还有一个调整时间片大小地周期,如果这个周期太大,系统开销很大,得不偿失..均衡调度算法:理想化地调度算法采用复杂地算法均衡考虑各种因素).时限起来更加困难.算法本省地开销远大于地不足.文档收集自网络,仅用于个人学习.在多任务系统中存在着多个并发地任务.多个任务共享系统资源,共同完成某项任务和功能,所以任务之间并不是孤立地,而是有很多地相互制约或者相互依赖关系.这种关系有两种基本形式互斥和同步.文档收集自网络,仅用于个人学习.任务不论是同步还是互斥,之间都有一种相当制约地关系,但是他们地不同之处在于:.互斥地各个任务可以自己独立执行,并且得到地正确地结果,而同步地任务则不行,同步地任务必须协同工作才可以得到正确地结果.互斥地各个任务执行地时间可以没有时序要求,只要在访问临界资源地时候才必须等待,同步地任务则有严格地时序要求,不能异步进行.文档收集自网络,仅用于个人学习.所谓优先级倒置是指临界资源地任务在达到其临界区时,因为临界资源地任务在达到其临界区时因为临界资源地竞争而造成高优先级任务被低优先级任务阻塞地情况.文档收集自网络,仅用于个人学习.优先级继承算法:目地是让它尽快结束对临界资源地访问,以便其他任务可以及时使用资源死锁:两个并发任务由于相互占用资源,想索取对方资源但对方又不肯出让资源.导致谁也得不到自己想要地资源使系统任务无法继续执行地现象文档收集自网络,仅用于个人学习.优先级上限算法:这种协议防止了死锁现象和递归阻塞,支持互斥访问资源.优先级继承协议和优先级上限协议最大地不同点是:优先级继承协议允许任务在资源没有被占地时候锁住资源,而优先级上限协议则可能不允许这样地访问.文档收集自网络,仅用于个人学习死锁起因:.互斥条件.不可抢占地限制,.资源分配不完全.环路条件.解决死锁地策略:.死锁地预防,静态资源分配发和有序资源分配发..死锁地避免:银行家算法..死锁地检测和恢复.文档收集自网络,仅用于个人学习.通信机制:信号量通信,消息队列,信号,管道等.信号量是时限任务同步和互斥地重要手段,信号量相对于其他通信手段来说实现速度最快,提供了种不同功能地信号量:二进制信号量:用于相互协作任务间地同步..互斥信号量:用于对单一临界资源地保护..计数信号量:用于管理各个临界资源地作用.广泛地用于任务地同步与互斥文档收集自网络,仅用于个人学习.按速度由快到慢:.共享内存(数据简单共享).信号量(基本地互斥和同步).消息队列(同内多任务间消息传递).管道(同内多任务间消息传递).网络套接字(任务间透明地网络通信)文档收集自网络,仅用于个人学习.实时操作系统中几个重要概念:系统响应时间:系统发出处理要求到系统给出应答所需要地时间.任务切换时间:任务间切换所使用地时间.中断延迟:计算机接收到中断信号到操作系统做出响应并完成转入中断服务所需要地时间.任务:实时操作系统中任务与分时系统种地进程概念相似.文档收集自网络,仅用于个人学习.使用实时操作系统主要有以下几个因素:.嵌入式操作系统提高了系统地可靠性..提高了开发效率.缩短了开发周期..嵌入式实时操作系统充分发挥了位地多任务潜力.文档收集自网络,仅用于个人学习.实时操作系统地优点:在嵌入式实时操作系统环境下开发实时应用程序使程序地设计和扩展变得容易,不需要大地改动就可以增加新地功能,通过将应用程序分割成若干个独立地任务模块,使应用程序地设计过程大为简化,而且对实时性要求苛刻地事件都得到了快速,可靠地处理.通过有效地系统服务,嵌入式实时操作系统使得系统资源得到更好地利用,缺点:适用嵌入式实时操作系统还需要额外地开销,—地额外负荷,以及内核地费用.文档收集自网络,仅用于个人学习三章、操作系统地特点:()操作系统运行环境支持大量同时支持、技术()地微内核是一个具有高性能地、标准地嵌入式实时操作系统内核,其主要特点是:快速多任务切换、抢占式任务调度、多样化地任务通讯.任务间地切换时间短、中断延迟小、网络流量大.()具有良好地功能可裁性,用户可以定制需要地系统()支持应用程序地动态链接和动态下载()具有良好地兼容性,兼容标准.文档收集自网络,仅用于个人学习、操作系统地组成包括进程管理、存储管理、设备管理、文件管理、网络协议以及系统应用等几部分.它占用很小地存储空间,并且可以高度裁剪,保证了系统能够高效地运行.文档收集自网络,仅用于个人学习、和调度地差异:()调度基于进程,调度基于任务()使用基于优先级地抢占调度,使用调度策略,调度算法应用在进程到进程基础之上调度室基于整个系统基础之上.()优先级编号和相反,中优先级数越大优先级越高()使用调度,在配置时,包括宏定义,系统将自动包含调度.文档收集自网络,仅用于个人学习、连接链提供以下几种操作:()在链中任意位置插入和删除节点()在链尾增加一个节点()连接两个链()从一个链中提取一个子链()删除并返回链地首节点()计算链中地节点数.文档收集自网络,仅用于个人学习、库提供环形缓冲管理函数,实现以下功能:()创建和删除环形缓冲()从环形缓冲取得字符()向环形缓冲中添加字符()以不同方式操作环形缓冲.文档收集自网络,仅用于个人学习、、互斥:互斥就是以某种手段确保当一个进程或任务在访问临界区(使用一个共享变量或文件)地时候,其他进程不能做同样地操作.文档收集自网络,仅用于个人学习、二进制信号量:()互斥,信号量最初创建时,应该设置为可用状态.()同步,信号量最初创建时,应该设置为不可用状态.()使用是通过接触阻塞在该信号量上所有任务而实现同步地.文档收集自网络,仅用于个人学习.互斥信号量:互斥信号量地基本行为与二进制信号量一致,不同之处在于:.它仅用于互斥..仅能由取()它地任务释放..不能在中释放(())()操作非法文档收集自网络,仅用于个人学习.硬件中断处理是实时系统设计中最重要最关键地问题.中断与任务地通信,支持运行在中断级种地中断服务程序直接与一般任务进行通信,其相关机制有以下几种:.共享存储区和环形缓冲:中断服务程序可以与任务共享变量.缓冲区..信号量:中断服务程序能够释放信号量,但不能获取..消息队列:中断服务程序能够向消息队列发送消息,如果消息队列已满,则丢弃该消息..管道:中断服务程序可以向管道写数据.如果管道已满,则丢弃数据..信号灯:中断服务程序能够通过发信号来通知任务.触发相应地信号处理程序地异步调度.文档收集自网络,仅用于个人学习。
VxWorks 操作系统学习笔记1. VxWorks 任务任务:在执行时每个程序都被称之为任务。
VxWorks操作系统中,任务可以直接地或者以共享方式访问大多数系统资源,为了维护各自的线程,每个任务必须保持有足够的上下文环境。
(1) 任务状态:就绪(READY):该状态时任务仅等待CPU的状态,不等待其他任何资源。
阻塞(PEND):任务由于一些资源不可用而被阻塞时的状态。
睡眠(DELAY):出于睡眠的任务状态。
挂起(SUSPEND):该状态时任务不执行,主要用于调试用。
挂起仅仅约束任务的执行,并不约束状态的转换,因此pended-suspended状态时任务可以解锁,delayed-suspended状态时任务可以唤醒。
DELAY+S:既处于睡眠又处于挂起的任务状态。
PEND+S:既处于阻塞又处于挂起的任务状态。
PEND+T:带有超时值处于阻塞的任务状态。
PEND+S+T:带有超时值处于阻塞,同时又处于挂起的任务状态。
state+I:任务处于state且带有一个继承优先级。
------------------------------------------------------------------------| ready | ——> | pended | semTake () / msgQReceive () || ready | ——> | delayed | taskDelay () || ready | ——> | suspended | taskSuspend () || pended | ——> | ready | semGive () / msgQSend () || pended | ——> | suspended | taskSuspend () || delayed | ——> | ready | expired delay || delayed | ——> | suspended | taskSuspend () || suspended | ——> | ready | taskResume () / taskActivate () || suspended | ——> | pended | taskResume () || suspended | ——> | delayed | taskResume() |------------------------------------------------------------------------(2) Wind任务调度在Wind内核中,默认算法是基于优先级的抢占式调度算法,也可以使用轮转调度算法。
vxworks 程序开发实践-回复为什么选择使用VxWorks进行程序开发实践。
VxWorks是一种实时操作系统(RTOS),开发者可以使用它来编写、测试和部署实时应用程序。
它提供了广泛的功能和工具,旨在帮助开发者更加高效地构建稳定的实时系统。
在本文中,我们将深入探讨VxWorks 的一些关键特性,以及为什么选择VxWorks进行程序开发实践。
首先,VxWorks具有广泛的硬件支持。
它能够运行于大量的硬件平台上,包括嵌入式系统、工控设备和航空航天系统等。
这种广泛的硬件支持使得VxWorks成为企业级应用程序开发的首选,无论是开发工业自动化系统还是嵌入式设备。
其次,VxWorks拥有稳定和可靠的实时性能。
实时应用程序的最大挑战之一就是确保任务能够在严格的时间限制内完成。
VxWorks通过实时内核和实时调度器来确保任务的实时性能。
实时内核能够快速响应事件和中断,而实时调度器能够高效地管理任务的执行顺序。
这些特性使得VxWorks成为开发大规模实时系统的理想选择。
此外,VxWorks提供了丰富的开发工具和功能模块。
它提供了多种编程语言的支持,包括C、C++和Ada等。
此外,VxWorks还内置了许多常见的功能模块,如网络协议栈、文件系统和图形库等。
这些功能模块使得开发者可以更加高效地完成各种任务,从网络通信到数据存储再到用户界面设计。
另外,VxWorks拥有强大的调试和性能分析工具。
在开发大规模实时系统时,调试和性能分析是至关重要的。
VxWorks提供了丰富的调试工具,如调试器和跟踪工具,方便开发者进行代码调试和性能分析。
这些工具可以帮助开发者快速定位问题,并优化系统的性能。
最后,VxWorks还拥有完善的安全性和可靠性机制。
实时系统往往需要面对各种安全威胁和故障情况。
VxWorks提供了严格的权限控制和错误处理机制,以确保系统的安全性和可靠性。
它还支持现代的安全标准和协议,如SSL/TLS和IPsec等,以保护系统的通信和数据传输。
VxWorks之认识(转)Tornado是WindRiver公司开发的用于嵌入式开发的一组产品,它包括32位实时操作系统VxWorks,集成开发环境(IDE,包括编译器等)。
下面是我阅读完VxWorks相关文档后的一些个人认识。
一.VxWorks操作系统VxWorks时实时多任务的嵌入式操作系统,它主要包括任务调度、I/O功能、文件系统、中断管理、内存管理、网络功能、内存管理、BSP(系统启动模块)等。
它的多任务的实现是由中断驱动的,即在每个系统时钟中断中,实现任务的调度。
VxWorks中的任务有优先级的概念。
与其它嵌入式操作系统相比,它有如下优点:1.任务之间的切换快,任务间通信手段多样;2.中断响应的延时短;3.内存管理安全:VxWorks把内存分成很多区域,包括内核区、用户区,并且采用虚拟内存管理的方法,这样大大提高了系统的安全性,并且增加了堆栈溢出的判断;4. I/O功能丰富,硬件驱动全面;5.文件系统强大;6.网络功能全面;7.对任务的实时监控;8. BSP(启动模块)的支持;9.多CPU的支持;10.系统各模块是单独的库,可以根据需要加载。
下面就详细讲述各部分内容。
1.多任务功能:VxWorks的任务有优先级的概念,其任务调度也是基于优先级考虑的,是抢占式的,VxWorks的任务有256个等级,0—255,数目越小表示优先级越高。
高优先级的任务可以打断低优先级的任务而抢先执行,只有在高优先级的任务执行完后,低优先级的任务才可以执行。
其调度算法有两种:完全抢占式的和循环分配式的。
完全抢占式的是除了高优先级任务可以打断低优先级任务外,在相同优先级的任务之间,不可以相互打断,并且同优先级任务不是同时执行的,只有等该任务执行完后,与其相同优先级的任务才可以执行;循环分配式除了具有抢占功能之外,相同优先级的任务是可以同时执行的,即系统时间片是在它们之间平均分配的,这样,相同优先级的任务可以同时执行。
使用VxWorks的一些总结摘要:本文主要介绍VxWorks操作系统的集成环境Tornado的使用,介绍了PPC平台和X86平台上Tornad o1.0.1集成环境的使用。
内容包括:Tornado集成环境的安装,X86平台上目标机启动软盘的制作;PPC平台上bootrom的制作;一般的使用流程;编译链接;任务调试模式使用;系统调试模式使用。
涉及到的工具主要有CrossWind、Browser、Target Server 、Target Agent、 WindSh、Editor。
1、概述VxWorks操作系统的集成环境叫Tornado。
Tornado集成环境提供了高效明晰的图形化的实时应用开发平台,它包括一套完整的面向嵌入式系统的开发和调测工具。
Tornado环境采用主机-目标机交叉开发模型,应用程序在主机的Windows环境下编译链接生成可执行文件,下载到目标机,通过主机上的目标服务器(Ta rget Server)与目标机上的目标代理(Target Agent)的通信完成对应用程序的调试、分析。
它主要由以下几部分组成:VxWorks高性能的实时操作系统;x 应用编译工具;x 交互开发工具;下面对Tornado集成环境的各组件功能分别介绍:x Tornado开发环境Tornado是集成了编辑器、编译器、调试器于一体的高度集成的窗口环境,同样也可以从Shell窗口下发命令和浏览。
x WindConfig:Tornado系统配置通过WindConfig可选择需要的组件组成VxWorks实时环境,并生成板级支持包BSP的配置。
通过修改config.h可以实现WindConfig的所有功能,并且,可以实现WindConfig不能实现的功能。
x WindSh:Tornado外壳WindSh是一个驻留在主机内的C语言解释器,通过它可运行下载到目标机上的所有函数,包括VxWorks和应用函数。
Tornado外壳还能解释常规的工具命令语言TCL。
VxWorks基础知识收藏1.多任务:允许一个实时应用作为一系列独立任务来运行,各任务有各自的线程和系统资源。
3.任务切换之前要保存上下文。
4.优先级是动态的0~255,0级最高。
5.Wind内核taskLock()和taskUnlock()禁止和解除抢占,但对中断不起作用。
6.异常处理:VxWorks异常处理包,一般是将引起异常的任务休眠,保存任务在异常出错处的状态值。
内核和其它任务继续执行。
7.为什么要共享存储区:任务间通信的最简单的方法是采用共享存储区,也即相关的各个任务分享属于它们的地址空间的同一内存区域。
8. 为什么要互斥:当某一地址空间用于数据交换时,为了避免冲突,对于内存的锁定是非常重要的。
一般来说,关中断是最有效的解决互斥的方法。
但这对于实时应用来说,它阻止系统对外部事件的响应,无法满足实时性的要求。
同样,中断延迟也是不能接受。
因为它们没有实时性。
所以要用信号量来完成互斥,主要是二进制信号量,并且二进制信号量不仅能完成互斥而且能完成同步!,但是关中断应该用到程序的初始化过程中。
9.信号量:VxWorks信号量提供最快速的任务间通信机制,它主要用于解决任务间的互斥和同步。
针对不同类型的问题,有以下三种信号量:⊙二进制信号量使用最快捷、最广泛,主要用于同步或互斥;⊙互斥信号量主要用于优先级继承、安全删除和回溯;⊙计数器VxWorks还提供POSIX信号量和多处理器上信号量的应用。
10.消息队列,任务之间利用消息队列发送和接收消息。
11.管道:管道是一种灵活的消息传送机制,它比消息队列强在有一个select()12.信号量的创建与删除:semBCreate() 创建(产生并激活)一个二进制信号量semMCreate() 创建(产生并激活)一个互斥信号量semCCreate() 创建(产生并激活)制一个计数信号量semDelete() 中止并自由信号量semTake()获得信号量semGive() 给出信号量semFlush() 解锁所有正等待某一信号量的任务13.消息队列的创建与删除:msgQCreate() 创建(产生并激活)消息队列msgQDelete() 中止并自由信号量msgQSend() 向消息队列发送消息msgQReceive() 从消息队列接收消息14.网络通讯:与其它主机进行通信。
使用VxWorks的一些总结摘要:本文主要介绍VxWorks操作系统的集成环境Tornado的使用,介绍了PPC平台和X86平台上Tornad o1.0.1集成环境的使用。
内容包括:Tornado集成环境的安装,X86平台上目标机启动软盘的制作;PPC平台上bootrom的制作;一般的使用流程;编译链接;任务调试模式使用;系统调试模式使用。
涉及到的工具主要有CrossWind、Browser、Target Server 、Target Agent、 WindSh、Editor。
1、概述VxWorks操作系统的集成环境叫Tornado。
Tornado集成环境提供了高效明晰的图形化的实时应用开发平台,它包括一套完整的面向嵌入式系统的开发和调测工具。
Tornado环境采用主机-目标机交叉开发模型,应用程序在主机的Windows环境下编译链接生成可执行文件,下载到目标机,通过主机上的目标服务器(Ta rget Server)与目标机上的目标代理(Target Agent)的通信完成对应用程序的调试、分析。
它主要由以下几部分组成:VxWorks高性能的实时操作系统;x 应用编译工具;x 交互开发工具;下面对Tornado集成环境的各组件功能分别介绍:x Tornado开发环境Tornado是集成了编辑器、编译器、调试器于一体的高度集成的窗口环境,同样也可以从Shell窗口下发命令和浏览。
x WindConfig:Tornado系统配置通过WindConfig可选择需要的组件组成VxWorks实时环境,并生成板级支持包BSP的配置。
通过修改config.h可以实现WindConfig的所有功能,并且,可以实现WindConfig不能实现的功能。
x WindSh:Tornado外壳WindSh是一个驻留在主机内的C语言解释器,通过它可运行下载到目标机上的所有函数,包括VxWorks和应用函数。
Tornado外壳还能解释常规的工具命令语言TCL。
WindSh不仅可以解释几乎所有的C语言表达式,而且可以实现所有的调试功能。
它主要有以下调试功能:下载软件模块;删除软件模块;产生任务;删除任务;设置断点;删除断点;运行、单步、继续执行程序;查看内存、寄存器、变量;修改内存、寄存器、变量;查看任务列表、内存使用情况、CPU利用率;查看特定的对象(任务、信号量、消息队列、内存分区、类);复位目标机。
x 浏览器Tornado浏览器可查看内存分配情况、任务列表、CPU利用率、系统目标(如任务、消息队列、信号量等)。
这些信息可周期性地进行更新。
x CrossWind:源码级调试器源码级调试器CrossWind提供了图形和命令行方式来调试,可进行指定任务或系统级断点设置、单步执行、异常处理。
有些功能如修改内存、寄存器、变量的值通过菜单操作是无法实现的,需要在WindSh中执行原语操作实现。
x 驻留主机的目标服务器目标服务器管理主机与目标机的通信,所有与目标机的交互工具都通过目标服务器,它也管理主机上的目标机符号表,提供目标模块的加载和卸载。
x Tornado注册器所有目标服务器注册其提供的服务在注册器中。
注册器映射用户定义的目标名到目标服务器网络地址。
x VxWorksTornado集成了VxWorks操作系统。
x 目标代理程序目标代理程序是一个驻留在目标机中的联系Tornado工具和目标机系统的组件。
一般来说,目标代理程序往往是不可见的。
3、MPC750/MCPN750上bootrom的制作MPC750/MCPN750上的 bootrom用于初始化MPC750/MCPN750的硬件,通过网口加载 VxWorks 的内核映象。
因为MPC750/MCPN750的bootrom已经制作,如果没有特殊需要,不需重新制作bootrom。
制作MPC750/MCPN750上 bootrom的步骤:x 在Tornado集成环境下,使用菜单命令Project | Make MCP750/MCPN750 | Comman Targets | clean删除以前生成的bootrom文件,使用菜单命令Project | Make MCP750/MCPN750 | Comman Targets | bootr om.hex生成bootrom文件。
生成的bootrom文件在相应的BSP目录中(MCP750为c:\tornado\target\con fig\mcp750,MCPN750为c:\tornado\target\config\mcpn750)x 使用elftobin < bootRom > mcp750.bin 生成mcp750.bin 文件x 启动TFTP服务器tftpd32.exe,设置下载文件(mcp750.bin)的目录x 用PPCBug启动目标系统x 运行并配置超级终端。
配置:9600bps波特率、8位数据位、1位停止位、无校验位、无流量控制。
x 在超级终端中,使用niot命令修改客户(目标机)IP地址和服务器(主机)IP地址x 使用niop命令设置加载的文件名(mcp750.bin)x 使用pflash 4000:FFF00 ff000100命令写FLASH B。
4、启动软盘制作目标机启动软盘用于启动目标机,通过网口使用Ftp协议从主机下载VxWorks映象。
在X86平台上,一般使用启动软盘来启动目标机。
.1 .启动盘的制作在实时应用系统的开发调测阶段,往往采用以PC机作为目标机来调测程序。
主机PC和目标机PC之间可采取串口或是网口进行联结。
由于大多数目标已配有网卡,网络联结成为最简单快速的连接方式。
串口联结虽通信速率不高,也有它自己的优点,系统级任务调试(如中断服务程序ISR)需使通信方式工作在Poll ed 模式,网口联结就不支持,因此可以裁剪掉系统中网络部分,以使VxWorks系统更小,满足目标板的内存约束。
下面分别对这两种通信方式下目标机VxWorks系统启动盘的制作作一简要介绍(以PC机为目标系统)。
串口通信时目标机VxWorks系统启动盘的制作步骤:1.修改通用配置文件\\Tornado\target\config\pc486\config.h.在config.h文件中加入以下宏定义:#define INCLUDE_WDB#define INCLUDE_WDB_TTY_TEST#undef WDB_COMM_TYPE#define WDB_COMM_TYPE WDB_COMM_SERIAL /*定义通信方式为串口联结*/#define WDB_TTY_CHANNEL 1 /*通道号*/#define WDB_TTY_BAUD 9600 /*串口速率,可设置至38400*/#define WDB_TTY_DEV_NAME "tyCo/1"#define CONSOLE_TTY 0#define DEFAULT_BOOT_LINE \"fd=0,0(0,0)hostname:/fd0/vxWorks h=主机ip e=目标机ip u=主机上的登录用户名"2. 在Tornado集成环境中执行菜单命令Project | Make PC486 | Common Targets | clean删除以前生成的文件,执行菜单命令Project | Make PC486 | Boot Rom Targets | bootrom_uncmp编译链接生成b ootrom_uncmp ;再选择VxWorks Target,编译生成vxworks。
3.拷贝\\Tornado\target\config\pc486\bootrom_uncmp至\\Tornado\host\bin下;4.重命名文件bootrom_uncmp为bootrom;5.准备一张已格式化的空盘插入软驱;6.在目录\\Tornado\host\bin下执行命令 mkboot a: bootrom;7.拷贝\\Tornado\target\config\pc486\VxWorks至软盘;8.将系统制作盘插入目标机软驱,加电启动目标机即载入VxWorkst系统。
网口通信时目标机VxWorks系统启动盘的制作步骤:1.配置目标机网卡,设置其中断号和输入输出范围(I/O地址);2.修改通用配置文件\\Tornado\target\config\pc486\config.h.针对不同的网卡,其名称不同,如NE2000及其兼容网卡为ENE,3COM以太网卡为ELT,Intel网卡为EEX。
在config.h文件中修改相应网卡类型(如网卡为3COM网卡)的定义部分:#define IO_ADRS_ELT 网卡I/O地址#define INT_LVL_ELT 网卡中断号并且修改#define DEFAULT_BOOT_LINE的定义:#define DEFAULT_BOOT_LINE \"elt(0,0)主机标识名:C:\\tornado\\target\\config\\pc486\\vxWorks h=主机IP e=目标机IP u=登录用户名 pw=口令 tn=目标机名"DEFAULT_BOOT_LINE宏定义,使缺省配置符合自己的调试环境#define DEFAULT_BOOT_LINE \"ene(0,0)host:c:/tornado/target/config/pc486/vxWorks h=129.9.75.39 e=129.9.49.7 u=x86 pw=x86 tn=x86"ene(0,0) /* 启动设备为网卡 */host /* 主机标识,可以任意填写,不影响启动过程 */c:\tornado\target\config\pc486\vxWorks /* 需要从主机加载的映象文件 */h=129.9.75.39 /* 主机的IP地址 */e=129.9.49.7 /* 目标机的IP地址 */u=x86 /* 用户名,主机的Ftp服务器必须有相应的同名用户 */pw=x86 /* 密码,必须与主机的Ftp服务器相应的同名用户的密码相同*/tn=x86 /*目标名,可以任意设置,不影响启动过程*/3.主机信息的确定(可无)主机操作系统Win95安装目录下有一文件hosts.sam,向其中加入:主机IP 主机名目标机IP 目标机名4.在Tornado集成环境中点取Project菜单,选取Make PC486,选择Common Target,先进行clean操作;再选择Boot Rom Target,进行bootrom_uncmp操作;再选择VxWorks Target,进行vxworks操作。