新闻  |   论坛  |   博客  |   在线研讨会
实时操作系统VxWorks介绍
yanqin | 2009-04-16 17:28:28    阅读:9053   发布文章

一 概况
%A 1.1        介绍
%A VxWorks是一种高性能的实时操作系统,对于实时应用程序又是一种有效的开发环境。VxWorks包括快速,可裁剪的运行时系统,测试和调试工程性程序,和UNIX交叉开发软件包。VxWorks产品的核心所在是扩展的UNIX―可兼容连网工具性程序。
%A 连网工具性程序使VxWorks和UNIX可以结合而形成一个完整的,综合的开发与操作环境。这样可以利用每种操作系统的优势,UNIX系统用于软件开发和应用程序的非实时部分,而VxWorks则用于测试,调试和运行实时应用程序。
%A 一旦开发完成,VxWorks系统既可以独立运行,也可以连网与其他VxWorks,UNIX操作系统共同运行。
%A VxWorks可以应用到若干目标微处理机系列上,并可以与任何具有TCP/IP连网工程性程序的操作系统连网。
%A      ・ 高性能的内核
%A           VxWorks的核,“wind”包含多重任务处理,其中有抢占调度,任务的同步          
%A     与通信,中断处理,监视计时器和内存的管理。
%A      ・ 网络性软件
%A           “透明 ”地访问带有BSD UNIX可兼容套接字的其他VxWorks和UNIX系统,  
%A     进行远程命令执行,远程注册,远程过程调用(RPC),SNMP(选项),远程编码级
%A     调试,远程文件存取,ARP和BOOTP:既可以采用松偶合及网络连接方式,又可以
%A     采用紧偶合通过背板总线使用共享内存方式。所有的VxWorks工具都遵守标准交
%A     互式网络协议。
%A       ・ 模块装入与系统符号表
%A             具有运行状态下的目标文件模块再定位和连接特性。即将网络上的或磁
%A     盘上的UNIX格式的某一目标文件格式化模块动态装入和卸载。
%A       ・ 壳(WindShell)
%A              这是一种C语言的解释性接口程序,可容许VxWorks功能和应用功能的
%A     交互式执行,解释C语言的大多数表达式并且允许对变量的符号访问。
%A       ・ 调试工具
%A              源码级调试,符号反汇编,符号C-子程序跟踪,任务专用断点和单步,
%A     系统状态的显示,以及对安全陷阱的异常处理,中断报告以及象总线或地址错误
%A     这样的硬件异常的报告所做的异常处理。有效的基于宿主机的调试器扩展了这些
%A     对源级调试的能力。任选的产品添加了可视,实时逻辑分析(Wind View)和一个
%A     实时系统仿真器( Vx Sim)。
%A       ・  I/O系统
%A              为一种快速和灵活的UNIX源兼容I/O系统,包括有UNIX标准的缓冲的
%A     I/O和POSIX标准的异步I/O。
%A       ・  局部文件系统
%A     是一种实时的快速的文件系统,与MS-DOS和RT-11文件系统以及“原
%A         磁盘“(RAW DISK)文件系统兼容。
%A           ・  虚拟存储器(包括VxVMI选项)
%A                  是一种对带有MMU的插体可附随亦可不附随的虚拟存储器支持  
%A    (VxVMI),是对非高速缓冲或只读存储器划区以及对虚拟存储器管理的成套工具。
%A       ・  共享内存目标程序(VxMP选项)
%A              用于在不同处理机上任务之间的共享信号量,消息队列和存储区域的程
%A     序。
%A       ・  远程文件系统
%A              一个具有客户/服务器的网络文件系统(NFS)通过网络可“透明”地与
%A     另一个具有客户/服务器的网络文件系统共享文件。而非NFS网络是通过RSH,FTP
%A     或TFTP来存取宿主机上的文件系统。
%A       ・  POSIX兼容性
%A              VxWorks可依照1003。1B标准提供大多数接口,简化了你由其他相容
%A     系统来的移植。
%A       ・  性能评估工具
%A              用于程序或程序组定时的计时器,还有表示各任务占用CPU效用百分比
%A     的实用程序。
%A       ・  实用程序库
%A              一种有利于应用程序开发人员的实用程序功能扩展集合,包括消息登录
%A     ,串格式化和扫描,线性和循环缓冲操作,联接表操作,符号表操作和ANSI C程
%A     序库。
%A       ・  I/O驱动程序
%A             终端驱动程序               用于串行I/O设备
%A             网络驱动程序               用于远程文件
%A             管道驱动程序               用于任务间通信
%A             RAM“磁盘”驱动程序        用于存储器常驻文件
%A             SCSI程序库                 用于SCSI硬盘和软盘
%A       ・  系统配置实用程序
%A             用于重新配置和扩展VxWorks,在ROM建立应用程序的实用程序。
%A       ・  可裁剪性
%A             你可以裁剪VxWorks以便把你的应用程序的要求特征准确地包容其中,
%A      在开发工作中,你可以考虑额外的特征来加速工作(比如 VxWorks壳),然后在
%A      你的应用程序的最后文本中除去他们以节省空间。
%A        ・  板支持软件包(BSP)
%A             用于硬件初始化,中断设置,计时器,存储映射等的程序包。
%A        ・  引导ROMS
%A             使目标机CPU被直接引导到网络上或允许CPU使用其他设备的只读存储
%A       器。
%A 1.2        VxWorks:UNIX的实时朋友
%A      UNIX操作系统早已被证实,对于程序开发和许多交互式应用程序来讲,是一种优秀的系统。但不管如何,它不适用于实时应用。从另一方面看,传统的实时操作系统只能为程序开发或应用程序的非实时部分,比如图形用户接口(BUIs)提供薄弱的环境。
%A      Wind River的观点是,与其非要建立一个“无所不能”的单一系统,不如让两个互补的和协作的操作系统VxWorks和UNIX连网,使其“各尽所能”。VxWorks处理临界实时的工作,而UNIX用来搞程序开发和非实时的应用程序。VxWorks的UNIX一起工作得很出色,因为VxWorks被设计成在许多级上都与UNIX兼容,特别是在其扩展网络工具性程序方面。由于VxWorks是可裁剪的,你可以根据你的应用需求最大或最小程度地用UNIX兼容性特性。
%A      你可以用UNIX交叉式开发宿主机来编辑,编译,连接和存储实时码,而后在VxWorks上运行和调试那种实时码,最后VxWorks程序可以独立运行―无论在ROM还是在磁盘中―不再对网络或宿主机系统产生要求。
%A      总之,UNIX和VxWorks亦可在一件混合应用任务中合作工作,UNIX在连网环境中把VxWorks系统本身可以同时被运行着专家系统的UNIX系统控制着。或者,若干正在运行的VxWorks系统设备,可以被连接在生成报表的UNIX系统上。
%A      注: 本手册使用于具有UNIX宿主机的VxWorks开发,但你也可以使用具有运行Windows 95/Windows NT而不是UNIX宿主机的VxWorks。    
%A 1.3        开发周期
%A      为了解Tornado给出的环境,有必要浏览一下典型的开发周期。首先,一个典型的开发环境的硬件应包括一个或多个UNIX宿主机系统和一个或多个Vxworks目标机系统,它们用以太网串行线路等来连接。UNIX系统可以用大量的RAM和磁盘空间,备份介质,打印机和其他外设充分装备起来。
%A      另一方面,目标机系统仅有实时系统所需的资源和一些用于测试和调试时所需的资源。甚至可以仅限于CPU和一些串行I/O通道。
%A      实时应用的软件开发在UNIX宿主机上开始。使用UNIX的开发和管理工具,应用程序开发人员设计和运行应用程序模块。开发者可任意使用通用的UNIX工具,如文本编辑程序,make,源码控制等。应用程序本身可以使用许多由Vxworks提供的程序库
%A      C语言的应用模块由C交叉式编译器编译,这种编译器配有每种专用宿主机和目标机相连接所需的VxWorks。应用模块不需要连接到VxWorks系统程序库上,更没有必要互相连接,实际上,VxWorks可直接装入生成的目标模块上,使用目标模块的符号表动态地分辨外部符号参量。所选模块可通过网络被动态装入以用来测试和调试。次后可交互的使用VxWorks壳调用和测试单独的应用子程序或者全部任务。
%A      VxWorks从预先装入的目标模块上记录符号表,根据给出的符号表可存取数据和子程序名。你可以审查数据变量,调用子程序,产生任务,反汇编存储器中的代码,设置断点,获取子程序调用追忆等,所有这些都是使用原始符号表名。而且,被硬件检测出的程序错误,如非法存储器或非法指令,也可以被VxWorks安全的俘获和报告,使下一步调试得以进行。
%A      CrossWind,VxWorks的源码级调试器,可以让开发者观察和调试源码级的应用程序,设置断点,单步运行,审查变量等等,可在源码级进行,即可使用ASCII终端的命令,也可以使用基于鼠标器的,工作站上的菜单驱动界面的命令。
%A      建立,下载和测试模块的循环一直在进行,直到应用程序准备好了它的生产环境,在那一刻VxWorks可以缩小,从生产系统除去调试程序,产生一个不需要多少资源的系统,最后,应用程序可以很容易地被连接到VxWorks上,如果需要还可以写入ROM。
%A      余下的篇幅将简要介绍列出的各部分,并且给出更进一步的资料参考。
%A 1.4        多任务和任务间的通信
%A 现代实时系统是建立在多任务和任务间通信的互补概念上的,一个多任务环境可将实时应用程序构造为一种独立任务的集合,每项任务都有其单独的执行线索和自己的系统资源集合。任务间通信应使这些任务同步并且协调他们的活动。
%A VxWorks多任务核“Wind”使用中断驱动、基于优先级的任务调度,它以快速上下文转换时间和低中断等待为特点。
%A 在VxWorks下,任何子程序都可产生具有自身的上下文和堆栈的单独任务。其他的基本任务控制程序可使任务悬挂、重开、删除、延迟和改变优先级。
%A Wind核提供任务封锁信号作为基本任务同步和互斥机制。Wind中有若干中信号量,分别为不同应用需要所用:二进制信号量、计数信号量、互斥信号量和POSIX信号量。所有这些信号量类型都是快速的和高效的。除了有利于应用程序开发人员之外,他们还可扩展用途在VxWorks中建立更高级的程序。
%A 为了任务间通信,Wind还可提供消息队列、管道、套接字和信号。套接字是一种UNIX兼容机构,在网络应用中,用做交换任务间的字节流,这些任务与位置无关。信号,基于硬件和软件异常,是在一项任务中用来控制异步传递的UNIX兼容机构。可选部件VxMP,则提供不同CPU上任务执行的任务间通信。
%A 1.5        网络
%A VxWorks是UNIX的朋友之关键在于其扩展的连网工具性程序。它可提供两个系统间的快速、易用的连接,网络可以充分把UNIX用做一个开发系统、一个调试宿主机和最终系统中非实时服务的供应者。
%A VxWorks现行支持网络连接―松连接到以太网或串口,紧连接到使用共享存储器的底板总线。VxWorks使用互联网协议,在所有网络通信的BSD4.3中执行此协议。
%A VxWorks提供若干网络存取级:进程间套接字、进程命令执行、远程注册、远程过程调用、远程文件存取、远程源码级调试、从宿主机引导参数存取和ARP网络。
%A 1.5.1        套接字
%A VxWorks提供标准的UNIX套接字调用,这样可使实时的VxWorks任务与其他的进程(比如UNIX进程)在网络上以任何互相配合的形式进行通信。有两种VxWorks套接字调用的集合:你可以使用与BSD4.3 UNIX源兼容的套接字,也可以使用流线型通信流量的zbuf套接字接口。(zbuf接口的TCP子集有时被称为”零拷贝TCP”。)
%A 任何任务都可以打开一个或多个套接字,其他的套接字也可以被连接其上。被写在一个连接成对的套接字上的数据,可以从另一个套接字上读出。网络连接在通信上是完全透明的。实际上,两件任务没有必要非要知道他们是否与同一个CPU或另一个CPU上的别的进程正在通信。类似地,使用zbuf套接字接口的任务,也没必要知道是否他们的通信伙伴正在利用标准套接字,或者也在利用zbuf套接字。
%A 1.5.2        远程文件存取:NFS、RSH、FTP、TFTP
%A 通过网络远程文件存取也是可行的。一个运行在VxWorks上的程序能够把UNIX系统当作一个”虚拟文件系统”。任何UNIX系统上的文件都可以通过网络正确地存取,仿佛他们就在VxWorks系统之中。一个在VxWorks下适行的程序不必知道文件在哪儿,或如何存取它。例如,/dk/file也许对于VxWorks系统是本地的,而host:file也许完全是定位在另一台机器上的文件。相反地,VxWorks可容许UNIX系统透明地使用完全保存在VxWorks上的文件:运行在UNIX上的程序不需知道他们正用的文件会不会被实际保存在VxWorks实时系统中。
%A VxWorks拥有Sun微系统标准的网络文件系统(NFS)。VxWorks系统可以运行NFS作为客户机即可使用来自其他系统的文件,而这些系统通过NFS方式输出文件。VxWorks系统也可以运行NFS作为服务机,向其他系统输出文件。交替变换,VxWorks可以利用提供透明远程文件存取其他两个协议中一个:远程shell协议(RSH),或文件传递协议(FTP),一个FTP服务机利用FTP提供来的其他系统的VxWorks文件的远程存取。文件也可使用TFTP进行传递。
%A 1.5.3        远程登录:rlogin、telnet
%A 远程登录特点使得用户可以从网上的任何其他VxWorks或UNIX机器注册到VxWorks或UNIX机器上去。从程序员的角度是很方便的。例如,在一个UNIX工作站,程序人员可打开一个与VxWorks通信的rlogin窗口。(假如系统没有rlogin的话,VxWorks也可用telnet来实现此功能。)打开此窗口,程序人员在UNIX系统桌前就可监测和控制VxWorks系统,可通过网络而不需要物理地与目标机硬设备相连。
%A
%A 1.5.4远程过程调用(RPC)
%A 最初由Sun徽系统公司设计并用于公共领域的远程过程调用(RPC)是一种工具性程序,它可使甲机器上的一个进程调用乙机器上的另一个进程。因此,有了RPC,一个VxWorks任务和UNIX进程可以调用其他的、任何一川配合形式的VxWorks和UNIX机器上执行着的子程序,参见RPC资料(公用和商用均可行)和rpcLib入门手册.
%A 简单网络管理协议(WindNet SNMP选项)
%A WindNet SNMP可选部件使VxWorks目标机通过 SNMP(简单网络管理协议)得以远程地管理和构造.应用程序开发者也可裁剪SNMP管理 信息库以便得到对每种应用程序和环境专用的信息.
%A 欲查 WindNet SNMP的详细资料,请看《WindNet SNMP VxWroks Optional Component Supplement》
%A
%A 1.6  模块装入和系统符号表
%A VxWorks 实时操作系统的工具性程序很适用于应用程序被简单地当作一个C子程序集的情况,在这点上,它是独具特色的. VxWorks不需象存取的系统函数的系统陷阱这样的机构,而是给出一个系统符号表、带有实时连接的装入程序、和一个动态移动模块的卸载程序.这些程序提供动态的甚至交互式的对所有的存取.
%A VxWorks模块装入程序可以在网络上或从磁盘上装入目标模块,以及在存储器的任何地方重新将其定们.装入程序也使用包含在每个目标模块中的符号表, 建立一个装入函数、变量名和模块Ids的全系统符号表.系统来的名字和应用模块同样被加到系统符号表上.由于模块可以动态装入,开发周期大大缩短:当开发者改变一个特殊功能部件时,只有受影响的模块被重新编译和重新装入,不用变动整个应用程序.
%A 这个符号表是众多最重要的 VxWorks开发辅助程序听核心.首先,装入程序本身使用系统符号表认正在装入的模块上的未定义的参量,动态连接装入的模块至预先装入的模块.同时 VxWorks还利用系统符号表对所有已装入的系统和应用模块进行交互式访问.最后,所有的VxWorks调试程序使用系统符号表来解释任何可能之处的符号参量.
%A 实时连接易于真正共享子程序库,此种情况下一个子程序集的拷贝可以为若干任务所用,而不必将每一任务都连接到所需子程序的各自拷上.结果是, VxWorks系统模块与应用模块之间没有固有差异,从而使VxWorks实时系统成为一种特别“开放”系统:系统程序很容易存取、修改和扩展.
%A 卸载程序提供了从系统移出模块的能力.当一个模块移出的时候,所有关联的符号均被从符号表中移出,存储器可重新使用.
%A 关于模块装入、卸载程序以及系统符号表,参见9交叉式开发,亦可见LoadLib, unldLib和symLib入门手册。
%A
%A 1.7 壳
%A VxWorks 具有一个交互工具叫“壳”,它可以使开发者与所有VxWorks 工具性程序相联系。VxWorks 壳可提供一种简单而有效的能力:它可以解释并执行几乎所有c语言表达式,包括调用对系统符号表内的所有变量,函数与参量。
%A 因此, 壳可以用来调用VxWorks 系统函数,调用任何的应函数、检查和设置应用变量、应生新变量、检查和修改存储器,甚至可执行具有c运算符的通用计算。
%A 壳也提供联接目标机符号调试,包括任务专用断点、单步运行、堆栈检查和符号反汇编。
%A 此外,壳还包括命令历史程序和类似Vi状的命令行编辑,还可用来注册到一个带有rlogin的远程系统。壳还具有重定的标准办理入与标准输入与标准输出的能力。
%A VxWorks 壳在11。壳中有详细讨论。也可参见shellLib usrLib 和dbgLib入门手册―些程序库包含特别适合于交互存取VxWorks 程序的例行程序。
%A
%A 1.8 调试程序
%A VxWorks具有强有力的调试程序集合,包括:
%A 显示系统和任务状态的例行程序
%A 可反汇编任何装入模块的符号或反汇编程序
%A 符号或C子程序追忆程序,它可随时调用以显示任何任务的嵌套子程序调用的现行序列
%A 在允许符号式调试继续进行这种非致命情况下完成硬件异常的俘获
%A 个断点和可以用于特殊任务、甚至共享代码的单步程序。
%A 如上所述,这些程序利用系统符号表,在一切可能之处提供符号参量。
%A VxWorks调试程序的资料,详见VxWorks12。调试和usrLib dbgLib和 excLib入门手册 。
%A 此外,VxWorks的分布式包括远程源级调试器 CrossWind ,一个GNU源级调试器( GDB)的扩展文本。这使来自宿主机系统变量的远程VxWorks应用程序的全源级调试得以实现。因为VxWorks是基于宿主机的,它提供综合调而对新的目标机提供高度可移杆性的状态,以便开发人员可以利用VxWorks,甚至为用户插件写入支持。
%A CrossWind用直通图形接口扩展GDB,也运用了可使开发人员高级调试顺宏指令的综合TCL(Tool Commond Language)原本接口。
%A CrossWind使产生和调试从VxWorks目标机上的任务成为可能。你也可使用 CrossWind去调试从VxWorks壳上产生出来的已运行的任务。当使用CrossWind的时候,你可以继续利用本机VxWorks开发工具的特长。这种配合给出综合的高等级调试解法。
%A CrossWind详细记载在另一册资料上: CrossWind使用手册。
%A
%A 1.9 性能评估
%A 要想了解和优化一个实时系统的性能,常常有必要计时一些系统执行的功能。VxWorks有各种各样协助这种任务的计时程序。
%A VxWorks执行地器可计时任何子程序或子程序组。因为系统进钟太慢,无法对时间特别快的功能进行必要的分辨,计时器还可以重复一个功能组的执行直到单迭代时间已达到合理的容差。执行计时器的资料,可见timxLib入门手册。
%A VxWorks还有侦察(spy)应用程序,可显示每一任务占用CPU时间,中断级所用时间和空闲时间,时间按一步一步地和按百分比来显示。这方面的应用程序的资料,参见spyLib入门手册。
%A
%A 1.10 实时逻辑分析器(WindView先项)
%A WindView,这种实时软件上的逻辑分析器,是在实时系统中图解动态交互作用的选项产品。 WindView显示提供了实时系统中事件的动态交互作用方面的信息资源。事件包括上下文转换、信号量释放与获取、消息队列发送与接收和计时器时钟。WindView在系统级和应用级上采集全部的事件流。你可以将时间推前或拉后并且可用不同的时间标尺拉开、缩进。每一事件的详细情况均可显示(比如事件发生的活动、它所产生的上下文和与它相关的目标)。事件可以用微秒级时间标记也可以用事件队列数来进行标识。
%A WindView还允许你在源代码中或实时上生成应用专用事件。例如,你也许要分析由每个存储器分配调用来分配的比特数,或者你会对一个特殊功能的执行在什么时间和用多长时间感兴趣。
%A WindView加入Wind核内去收集这种信息的核测试工具得到高度优化,使得实时系统中的干扰最小,系统从不会被停运而去收集信息。
%A 你也可以用WindView做算后检查、审核应用程序运行后的事件流的记录。
%A 另有一个手册,WindView用户手册(The WindView User’s Guide)对WindView有更详细的介绍。
%A
%A 1.11 VxWorksI/O系统可以对多种设备进行统一的设备进行统一的设备独立存取。你可以调用7种基本的 I/O功能: creat( )、 remove( )、 open( ) 、close( )、 read( )、 write( )、和ioctl( )。还可以提供更高级的I/O功能(比如printf( ) 和scanf( )与UNIX上的程序兼容的应用程序。
%A VxWorks还提供一种stdio缓冲I、O软件包,其中有与UNIX兼容的应用程序,例如 fopen( )、 fclose( )、 fread( )、 fwrite( )、getch( )和punch( )。这些应用程序在许多情况下增加了I/O的性能。
%A VxWorks具有符合POSIX标准的异步I/O:一种执行与任务的其他活动并行的输入与输出操作的程序库。
%A VxWorks包括用于串行通信线、磁盘、RAM磁盘、任务间通信设备(称为ipies)和网络上设备的设备驱动程序器。应用程序开发人员或如有需要,很容易地写入额外的驱动程序器。VxWorks容许不再引导系统而动态安装和拆去驱动程序器。
%A 实际上,VxWorks I/O系统允许个别驱动程序完成用户要求得以服务控制。驱动程序器可易于实现不同的协议、独特的设备专用功能甚至不同的文件系统,而不受I/O系统本身的干扰。VxWorks也供应若干方便驱动程序去实行公共设德协议和文件系统的高等级软件包。
%A 对于I/O系统的详尽讨论,见于4 I/O系统。相关的入门手册有适用任务的基本 I/O应用程序ioLib、各类格式化驱动 I/O应用程序的fioLib和stdioLib,异步 I/O的aioPxLib和用于驱动记录器应用程序的iosLib与tyLib。要可参见所供驱动程序器的入门手册。
%A
%A 1.12 局部文件系统
%A VxWorks包含若干用于程序块设备(磁盘)的局部文件系统。这些设备都使用标准接口以使文件系统可以随意与设备驱动程序混接。VxWorks I/O 的结构可以在一个VxWorks 系统上、甚至在同一时间里存在若干不同的文件系统。
%A
%A 1.12.1 MS-DOS兼容的文件系统:dosFs
%A VxWorks 提供dosFs文件系统,它是与 MS-DOS文件系统兼容的( MS-DOS版本可达到和包括6.2)。 dosFs的权能提供了适用于实时应用方面各种需要的相当的灵活性。主要特征有:
%A 文件和目录的层次排列,带来有效的组织和允许在一郑中产生不一定数的文件
%A 按文件库指定相连文件地址分配的能力。相连的文件提供增强的性能,而非相连文件带来磁盘空间更有效的使用;
%A 广泛适于存储和检索媒体的兼容性。 DosFs和在 MS-DOS个人计算机上建立的磁盘可以自由互换。
%A DosFs文件系统在 dosFsLib中有补充。
%A 1.12.2 RT-11兼容的文件系统:rt11Fs
%A VxWorks 提供与RT-11操作系统的文件库系统兼容的 rt11Fs文件系统。此文件系统适用于实时应用程序,因为所有文件都是相连的。不过,rt11Fs确实有一些缺点。它缺少在大磁盘上特别  有用的层次文件组织。而且,刚性的相连分配方案也会导致未用满  的磁盘空间。由于此种原因, dosFs通常比 rt11Fs更优越些。
%A VxWorksRT-11文件系统的执行包括对所有文件进行按字节编址的随机存取(查找)。每一打开的文件都有一个块缓冲区用于优化的读和写 rt11Fs文件系统在rt11FsLib中有所补充。
%A
%A 1.12.3 原(始磁)盘文件系统rawFs
%A VxWorks 提供一种用于磁盘设备的简单的“原盘文件系统”。RawFs把整个磁盘差不多当作一个大文件来处理。RawFs文件系统使得读写字节区距规定的磁盘区域成为可能,并且执行初级缓冲。只有需要初级、低级磁盘I/O时, rawFs才具有空间和速度方面的优势。
%A 关于使用rawFs的文件定向设备驱动器的服务,在rawFsLib中有所补充。
%A 交替文件系统
%A
%A 1.12.4 在VxWorks中,文件系统中没有被束缚到设备或其驱动程序上,一个设备可以与任何文件系统相联。依靠文件系统、驱动程序和VxWorksI/O系统之间具有同样的标准接口,你可以提供你自己的、使用标准驱动程序的文件系统。
%A
%A 1.13        虚拟存储器(包括VxVMI选项)
%A 虚拟存储器支持用于存储器管理单元插件(MMU)。附随的虚拟存储器支持提供了标记非超高速缓冲器的能力,这在存储器由多处理机共享的多处理机环境中很有用的。
%A 附随的虚拟存储器支持作为选项单元VxVMI是合适的。VxVMI提供了使文本段和希望矢量成为只读的能力,并且对于开发者建立他们自己虚拟存储器管理来说包括了例程集。
%A 1.14        共享内存模块(VxMP选项)
%A 共享内存模块用于不同CPU上的任务间通信与同步。他们(作为一个可选部件VxMP)可适用于VxWorks。
%A 共享信号量可以使不同CPU的任务同步以及提供互斥信号量来共享数据结构。共享消息队列可以使多个处理机上的任务交换信息。共享存储器管理适用于对不同处理机上的任务分配公共数据缓冲器。
%A 1.15        POSIX接口
%A POSIX(可移植操作系统接口),是属于遵照ISO/IEEE章程的软件工作者的代表进行研究开发下的标准系列。这项标准工作的目的在于支持通过类UNIX操作系统的源级上应用程序的可移植性。尽管这些标准仍在研究中,成绩已经产生出一系列的接口(POSIX标准1003.1b)用在一些重要的实时操作系统服务上。应用这些接口可以比较容易地将应用程序从一个操作系统移到另一个操作系统。
%A 几乎所有POSIX1003.1b接口都适合于VxWorks,他们是用于异步I/O、信号量、消息队列、存储管理、队列信号、调度、时钟和同步器。
%A 1.16        应用(程序)库
%A VxWorks为应用程序开发人员提供了许多通用子程序。如下所述,这些程序被编制成一系列的子程序库。我们鼓励你尽可能地使用这些库。使用库程序既减少了开发时间也减少了应用程序对内存的需要。
%A ・中断处理支持
%A VxWorks支持用于处理硬件中断和软件陷阱的程序,而不必求助于汇编语言代码,这部分库为C程序连接到硬件中断向量和控制处理机中断级上而提供的子程序,它是关于中断级代码运行的上下文的信息,和用于中断服务程序的特定约束。
%A ・监视计时器
%A 监视计时器可使调用程序延迟一定时间后再执行其本身程序。除非先取消了监视计时器,只需滴答数一过去,规定的“超时”程序就在系统时钟的中断级被调用,这种机制完全不同于核任务延时。
%A ・信息注册
%A 一个简单的信息注册程序可使应用程序向注册任务发送出错或状态信息,这项注册任务随后格式化和输出信息到一个系统范围的注册设备上(比如系统控制台、磁盘或可存取内存)。信息注册程序现可以在中断级、亦可在任务级使用。
%A ・存储器分配
%A VxWorks提供一个UNIX源码兼容内存管理程序,用于动态分配、释放和重新分配来的存储池的存储块。任意尺寸的块都可分配,你可以规定存储池的尺寸。这个内存模式是建立在可以让VxWorks管理若干分别的存储池的非常通用的机制之上。
%A ・串格式化和扫描
%A VxWorks包括一整套ANSI C字符串格式化,和扫描子程序库,他们有执行UNIX兼容的pirnf()/scanf()格式驱动编码与解码和关联功能的能力。
%A ・线性和环形缓冲器操纵
%A 程序库bLib具有缓冲器操纵功能,比如拷贝、编档、比较等等,在速度方面也发挥了最大限度。程序库rngLib提供了一系列管理先入先出(FIFO)循环缓冲器的通用环形缓冲器程序。此外,这些环形缓冲器具有一个特点,这就是但记录器和但输入器可以“同时”存取一个环形缓冲器,而不必明确地互锁他们的存取。
%A ・链接表操纵
%A 程序库IstLib含有一整套产生和操纵双链表的程序。
%A ・ANSI C程序库
%A VxWorks提供ANSI X3.159-1989规定的所有C程序库。ANSI C规定涉及下列程序库:assert ctype errno float Limits Locale math setjmp signal stdarg stdop stddef stdLib string和time。
%A 头文件float.h Limits.h errno.h和stddef.h提供ANSI规定的定义和说明。
%A 下面列出更通用的一些程序库:
%A ansiCtype-字符处理程序
%A ansiMath-三角、指数和对数程序
%A ansiSetjmp-执行非本地goto的程序
%A ansiStdarg-交叉可变长度自变量表的程序
%A ansiStdio-操纵输入/输出流的程序
%A ansiStdLib-多种程序,包括类型转换、内存分配和随机数产生等
%A sigLib-信号操纵程序
%A 1.17        插件支持软件包(BSPs)
%A 两个目标专用库,sysLib和sysALib包含在VxWorks的。这些库是VxWorks可移植性的核心所在;他们给所有插件的硬件功能提供恒等的软件接口。他们包括硬件初始化、中断处理生成、硬件时钟和计数器管理、本地与总线内存空间,内存尺寸等等的映射。
%A 1.18        VxWorks仿真器(VxSim)
%A VxSim是一种作为原型开发和测试环境来用的、模拟VxWorks目标机的UNIX程序。
%A VxSim基本上是VxWoks到UNIX的移植。在大多数情形下,它的能力对真实地运行在远程目标硬件上的VxWorks系统是恒等的。你可以连接一个应用程序,重建VxWorks就象在任何一、其他的交叉式开发环境中完全相同的方式。
%A VxSim与远程VxWorks目标环境的区别在于,在VxSim中,所构造的VxWorks操作系统在UNIX机上把自己当作一个UNIX进程来执行。没有指令的仿真,因为代码是在宿主机自己的CPU结构中。VxSim具有一个用户级IP(ULIP)驱动程序,可以是其获得互连地址和使用VxWorks网络工具与宿主机(或网络其他节点)互相通信。
%A 因为目标硬件交互作用是不可能的,设备驱动程序的开发也许不适合仿真。无论如何,VxWorks的调度程序执行在VxSim UNIX过程,保持就优先级和抢占而言真正的任务交互作用,这表明任何以轻便型的方式写入并且具有最少硬件交互作用的应用程序在VxSim和VxWorks之间都是轻便型的。
%A 1.19        用户服务
%A     用户可以从Wind River System公司得到全面的支持服务,并保证有机会对VxWorks提供的扩展程序加以充分、最佳的使用。
%A
%A%A
%A

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客