vxworks653编程手册

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

一.VxWorks653运行时系统1.1.运行时层一个vxworks653模块由下面四层组成:■coreOS—必需■partition—至少需要一个(vThreads或COIL-based),每个都在一个分区的操作系统之中■APEXsharedlibrary—ARINC653应用所需■POSIXsharedlibrary—POSIX应用所需1.1.1.CoreOS层核心操作系统提供服务给分区。缺省的,核心操作系统使用ARINC653规范中的时间抢占的调度(TPS)来调度分区。Vxworks653的核心操作系统还可以采用APPS调度策略在TPS调度的空闲时间内调度优先级抢占调度(PPS)使能的分区。核心操作系统提供给每个VThreads分区操作系统的服务包括:分区系统资源调度分区代表分区的操作系统执行trap异常定义和强制分区边界装载分区使用端口和通道在分区间传递消息处理I/O代表应用完成系统调用支持分区的调试监控分区和系统的健康1.1.2.vThreads层vThreads分区操作系统在核心操作系统分配给该分区的时间内调度vThreads中的线程。vThreads不直接与设备交互,而是通过核心操作系统的系统调用。1.1.3.APEX层构建在vThreads之上,遵循ARINC653规范,并且提供相应功能和API。1.1.4.POSIX层构建在vThreads之上,遵循用于实时扩展的POSIX标准(1003.1b)。1.2.装载和启动当目标板加电时,按照下面的步骤进行装载和启动初始的启动码装载核心操作系统,分区操作系统,共享库,以及应用核心操作系统初始化自身,启动它自己的子系统核心操作系统创建分区核心操作系统启动分区调度器,并且让应用初始化自身核心操作系统可以在初始化完成之后下载在线装载的应用程序到分区。应用可以在分区运行之时装载到分区。1.3.运行时模型核心操作系统处理来自每个分区的系统调用,并且在运行系统调用前校验每个系统调用的语句。使用vThreads分区操作系统的应用拥有完全的vThreads任务间通信机制。APEX库提供了遵循ARINC653规范的分区管理,进程管理以及时间管理;为分区间通信提供了消息,通道,端口;为分区内通信提供缓冲区,黑板,信号量以及事件。端口映射允许在VxWorks653模块之外通信。二.开发APEX应用APEX是位于应用程序和支持ARINC653规范的操作系统之间的API。对于VxWorks653,操作系统是vThreads分区操作系统和核心操作系统。APEX给vThreads分区提供了时间、进程管理以及管理周期性和非周期性进程的能力。APEX提供如下服务:管理分区管理进程管理时间与其他分区通信(使用消息,端口和通道)分区内的通信(使用缓冲区,黑板,信号量以及事件)监控健康2.1.分区管理分区的管理包含分配分区内存以及依据ARINC653规范初始化分区。2.1.1.分配分区内存每个分区的资源分配都定义在基于XML的配置和编译过程中,根据指定在该规范中的分区需求,为每个分区分配唯一的物理内存。通过禁止对超过该分区的内存区域的写访问来确保内存分区。2.1.2.初始化分区:冷和热启动冷启动:当VxWorks653模块加电并且创建分区时,使用冷启动分区操作模式。在冷启动模式下,分区对象被分配并且初始化。热启动:热启动分区操作模式导致一个分区重新初始化或者由于遇到错误重新启动。在热启动模式下,持久数据不会重新初始化,分区代码也不会重新装载。每个分区所使用的资源(如通道、进程、队列、信号量或事件等)在系统编译时指定。在分区的初始化阶段,创建分区所需的资源,然后分区进入NORMAL模式。2.1.3.分区属性分区属性定义在XML配置文件中。固定的分区属性包括:标识符:定义在VxWorks653模块上唯一的分区标识符。内存需求:分配给分区的物理内存周期:分区的激活周期。用来确定核心操作系统的整个时间帧内的分区激活的运行时位置。持续时间:分区的每个周期内核心操作系统给予的处理器时间。关键级别:分区的RTCA/DO-178B认证级别。通信需求:分区与其他分区通信的通信通道分区健康监控表(健康监控配置):健康监控器对于故障的动作指令。2.1.4.获得分区状态GET_PARTITION_STATUS函数可以获得当前情况下的分区状态。typePARTITION_STATUS_TYPEisrecordIDENTIFIER:PARTITION_ID_TYPE;PERIOD:SYSTEM_TIME_TYPE;DURATION:SYSTEM_TIME_TYPE;LOCK_LEVEL:LOCK_LEVEL_TYPE;OPERATING_MODE:OPERATING_MODE_TYPE;START_CONDITION:START_CONDITION_TYPE;endrecord;typeOPERATING_MODE_TYPEis(IDLE,COLD_START,WARM_START,NORMAL);typeSTART_CONDITION_TYPEis(NORMAL_START,PARTITION_RESTART,HM_MODULE_RESTART,HM_PARTITION_RESTART);Where:NORMAL_STARTisanormalpower-up.PARTITION_RESTARTiseitherduetoCOLD_STARTorWARM_STARTbythepartitionitself,throughtheSET_PARTITION_MODEservice.HM_MODULE_RESTARTisarecoveryactiontakenatmodulelevelbytheHM.HM_PARTITION_RESTARTisarecoveryactiontakenatpartitionlevelbytheHM.2.1.5.设置分区模式SET_PARTITION_MODE函数可以设置分区模式为IDLE,COLD_START,WARM_START,NORMAL。其中IDLE模式:分区关闭。分区未被初始化,没有进程正在运行,但是分配给该分区的时间窗口未被改变。COLD_START模式:分区重启使用冷启动初始化。WARM_START模式:分区重启使用热启动初始化。NORMAL模式:激活的进程被调度。2.1.6.控制分区中的抢占进程的LOCK_PREEMPTION函数可以为分区中的抢占上锁。该函数增加了分区的锁级,使得进程不能在分区中重调度。当进程访问临界区时,或资源被同一分区中的多个进程共享时,这个能力十分重要。LOCK_PREEMPTION函数不会影响其他分区的调度。如果一个位于临界区的进程由于分区窗口结束而被中断时,当分区再次运行时仍然是该进程最先运行。UNLOCK_PREEMPTION函数可以解锁分区的抢占。这个函数降低了分区的锁级,仅当锁级达到零时,进程的重调度才能恢复。2.1.7.分区调度对于时间分区,ARINC653提供了两级调度机制。在核心模块级,采用预先确定的基于时间窗的循环调度算法来调度各个分区,分区没有优先级。核心操作系统根据每个分区的周期与持续时间信息,维护一个固定时间长度的主时间帧,该主时间帧的时间长度为所有分区周期的最小公倍数。静态调度算法为每个分区生成该主时间帧内相应的分区调度窗口,每个分区调度窗口由从主时间帧开始的偏移和期待的持续时间来定义。分区的调度窗口事先定义在配置表中。每个分区在其分区调度窗口内被激活并占用CPU,并保证每个分区在其调度窗口内运行时不被其他分区打断。主时间帧在模块的运行期内周期性的重复,每个主时间帧中拥有相同的分区调度窗口执行次序。2.2.进程管理APEX进程是包含在APEX分区内的编程单元。同一分区内的进程可以并发执行。进程由可执行程序、数据和栈、程序计数器、栈指针以及优先级期限组成。进程管理包含创建进程、改变进程当前优先级、得到进程的当前状态、得到进程ID、挂起和恢复进程、停止和启动进程、控制抢占等函数。2.2.1.进程类型周期性进程非周期性进程2.2.2.进程调度在分区级,调度单元是APEX进程。每个进程拥有优先级,调度算法是优先级抢占的。分区级操作系统总是选择处于就绪状态且具有最高优先级的进程获得处理器资源。如果多个进程拥有相同的优先级,则分区操作系统选择就绪队列中第一个进程。进程将控制处理器资源直到另一个进程重调度事件发生。2.2.3.进程状态变迁2.3.时间管理2.3.1.调度分区见2.1.7分区调度2.3.2.系统时钟时间系统时钟时间为系统提供了唯一的时间。GET_TIME函数可以获得系统时钟时间。2.3.3.请求资源和超时当进程请求一个APEX资源(例如信号量或事件)时,可以指定下列超时类型之一:INFINITE_TIME_VALUE从不过期。永久等待ZERO_TIME_VALUE不等待资源。如果资源不可得,则返回一个错误Finitevalueoftimeout等待一个资源的最大时间超时单元是SYSTEM_TIME_TYPE类型,纳秒单位。2.3.4.调度进程APEX时间管理函数让分区来控制进程。在每个处理周期(cycle)的末尾,一个周期性的进程请求PERIODIC_WAIT服务来获得一个新的期限。通过这个进程的下个周期的释放点来计算新的期限。对于所有进程,TIMED_WAIT服务让进程将自己悬挂一段时间。在等待时间过去后,进程能够被调度。REPLENISH服务让进程将它的当前期限推迟一段已过的时间。分区内的每个进程可以指定一段逝去的时间(叫做时间能力)。时间能力用来设置处理期限时间,vThreads周期性的评估该时间以确定是否进程在分配的时间内能够完成它的处理。2.3.5.期限每个进程关联了一个固定的时间能力,表示分配给它的响应时间用于满足它的处理需求。期限时间可以确定是否进程能够在它的时间能力内完成它的处理。可以通过REPLENISH服务增加期限时间,在下一次激活时将创建新的期限。有三种类型的期限:硬期限如果进程不能在一个指定的时间周期内满足一个硬期限,vThreads将采取补救动作软期限如果进程不能在一个指定的时间周期内满足一个软期限,失效将被记录,并且处理继续没有期限如果进程不能在一个指定的时间周期内完成处理,将不采取任何动作对于一个周期性进程,当进程的激活周期开始时,期限时间的倒计时也同时开始。当进程请求PERIODIC_WAIT服务时,倒计时停止(disabled)。当进程被停止或当它调用REPLENISH或PERIODIC_WAIT服务时,期限时间结束(ended)。当分区处于除NORMAL模式以外的模式时,倒计时被反激活(deactivated)对于一个非周期性进程,当进程启动并且分区模式是NORMAL时,期限时间的倒计时开始。当进程请求一个REPLENISH服务时,期限时间为当前时间加上额外的时间能力。当进程被停止时或当分区状态不是NORAML时,期限结束。在图4-5中,周期性线程处于下面的状态:1.DORMANT2.RUNNING(orREADYifanotherprocesshaspreemptedit).3.WAITING4.RUNNING(orREADYifanotherprocesshaspreemptedit)5.READYuntilthehealthmonitortakesanaction.Theprocesshasnotcompletedwithinthedeadlineinterval.1.DORMANT.2.RUNNING(orREADYifanotherprocesshaspreemptedit)3.RUNNING(orREADYifanotherprocesshaspreemptedit)4.WAITING.5.RUNNING(orREADYifanotherprocesshaspreemptedit).6.READYuntilthe

1 / 21
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功