RTA-OS
概要
RTA-OS是一个静态可配置的、先发制人的实时操作系统用于高性能、资源受限的应用程序。RTAOS是开放标准AUTOSAR R3的完整实现。AUTOSARR4.0(含多核)、AUTOSAR R4.1、AUTOSAR R4.2、AUTOSAR R4.3操作系统规范,也完全符合版本2.2.3的OSEK/VDX操作系统的标准。OSEK现已在ISO 17356中标准化。
- rtaoscfg是一个读取和写入配置的图形配置工具在AUTOSAR XML配置语言中。
- rtaosgen是一个命令行工具,用于生成RTA-OS内核库从你的输入配置。
- rtaosanvis是在RTA-OS上执行时间分析的图形工具系统。
- Port plug-ins,每个目标/编译器组合一个使用RTA-OS。可以同时安装多个端口并进行切换多个版本。
- VRTA是一个特殊的端口插件,它提供了RTA-OS在标准Windows PC上的功能。这允许您在不需要真正的目标硬件1的情况下设计和测试应用程序行为。VRTA附带一个开发工具包,允许您构建可以模拟中断、I/O等的虚拟ecu。
OS没有强制依赖其他模块,然而:
操作系统可以直接使用定时器单元来驱动计数器。
如果用户需要直接从全局时间驱动调度,那么需要一个全局时间中断。
如果用户需要将调度表的处理同步到全局时间,则需要使用SyncScheduleTable()服务告知操作系统全局时间。
OC提供os -app之间的通信。IOC生成基于RTE生成器生成的配置信息。另一方面,RTE使用IOC生成的函数来传输数据。
模块配置
ETAS RTA-OS中主要配置或修改内容如下:
OsAlarmSetEvent
OsAlarmSetEventRef
引用将由该警报操作设置的事件
OsAlarmSetEventTaskRef
引用将由该事件激活的任务
OsAlarm
OsAlarm可用于异步通知或激活特定的任务。根据应用程序模式,可以在系统启动时自动启动警报。
OsAlarmAccessingApplication
引用具有此对象访问权的应用
OsAlarmCounterRef
参考指定的计数器进行警报
OsAlarmAction
此容器定义在警报过期时使用哪种类型的通知。
OsAlarmActivateTask/OsAlarmActivateTaskRef
引用将由该警报操作激活的任务
OsAlarmCallback/OsAlarmCallbackName
在触发此警报回调时调用的函数的名称。
OsAlarmIncrementCounter/OsAlarmIncrementCounterRef
引用将由该警报操作递增的计数器
OsAlarmAutostart
如果存在,这个容器定义在系统启动时是否根据应用程序模式自动启动警报。
OsAlarmAlarmTime
当闹铃第一次超时时的相对或绝对刻度值。请注意,对于相对警报,其值必须大于0。
OsAlarmAutostartType
指定了警报的自动启动类型。
OsAlarmCycleTime
循环报警的周期时间。如果该值为0,则报警不循环。
OsAlarmAppModeRef
参考应执行自动启动的应用程序模式
OsApplication
OsTrusted
参数指定操作系统应用程序是否受信任。
OsTrustedApplicationDelayTimingViolationCall
用于指定在受信任的os -app中发生的时间冲突是否立即引发,或者指定是否延迟到当前任务返回到调用的os -应用程序(CallTrustedFunction的返回)
OsTrustedApplicationWithProtection
指定是否使用内存保护执行受信任的os app。
OsAppAlarmRef
指定属于OsApplication的osalarm。
OsAppCounterRef
引用属于OsApplication的oscounter。
OsAppEcucPartitionRef
表示哪个“EcucPartition”是由这个“OSApplication”实现的。
OsAppIsrRef
引用哪些OsIsrs属于OsApplication
OsApplicationCoreRef
在定义CoreId的Ecuc模块中引用核心定义。这个引用用于描述OsApplication被绑定到哪个核心。
OsAppScheduleTableRef
引用属于OsApplication的OsScheduleTables。
OsAppTaskRef
ostask属于OsApplication的引用
OsRestartTask
os -app的一个任务可以定义为Restart任务。
OsApplicationHooks
OsAppErrorHook
OsAppShutdownHook
OsAppStartupHook
OsMemoryMappingCodeLocationRef
对内存映射的引用,其中包含有关代码所在部分的详细信息。
OsTrustedFunctionName
可用于其他os应用程序的可信函数(作为可信os应用程序的一部分)。这也取代了在应用程序中受信任的ISO 17356-6属性。
OsAppMode
OsAppMode是用于为ISO 17356-3应用程序模式定义ISO 17356-3属性的对象。没有为AppMode定义标准属性。在一个CPU中,必须定义至少一个AppMode对象。
OsCounter
OsCounterMaxAllowedValue
系统计数器的最大允许值。
OsCounterMinCycle
MINCYCLE属性指定链接到计数器的循环警报的最小允许计数次数。
OsCounterTicksPerBase
TICKSPERBASE属性指定到达特定单元所需的节拍数。
OsCounterType
此参数包含计数器的自然类型或单元。
OsSecondsPerTick
一个计数器的时间以秒计。
OsCounterAccessingApplication
引用具有此对象访问权的应用程序。
OsTimeConstant
OsTimeValue
此参数包含常数的值(以秒为单位)。
OsEvent
OsEventMask
如果在OIL中将事件掩码设置为AUTO,这里应该省略这个参数。
OsOs
OsNumberOfCores
操作系统控制的最大内核数。
操作系统在内部使用该值。这取决于ECU HW。
OsScalabilityClass
必须为每个系统对象“OS”选择一个可伸缩性类。为了根据用户的需要定制操作系统并充分利用处理器特性,操作系统可以根据可伸缩性类进行伸缩。
如果可伸缩性类被省略,这将转换为OIL自动机制。
OsStackMonitoring
选择任务的堆栈监控/第2类ISRs
OsStatus
Status属性指定是否必须使用具有标准状态或扩展状态的系统。此属性不支持自动分配。
OsUseGetServiceId
OsUseParameterAccess
OsUseResScheduler
osuseressch调度程序属性定义了资源RES_SCHEDULER是否在应用程序中使用
OsHooks
OsErrorHook
ISO 17356定义的错误钩子
OsPostTaskHook
ISO 17356定义的任务后挂钩
OsPreTaskHook
ISO 17356定义的任务前钩子
OsProtectionHook
切换到启用/禁用对(用户提供的)保护钩子的调用。
OsShutdownHook
按ISO 17356定义的关闭挂钩
OsStartupHook
启动挂钩定义的ISO 17356
OsMemoryMappingCodeLocationRef
对内存映射的引用,其中包含有关代码所在部分的详细信息。
OsIsr
OsIsrCategory
此属性指定此ISR的类别。
OsIsrResourceRef
这个引用定义了ISR访问的资源。
OsMemoryMappingCodeLocationRef
对内存映射的引用,其中包含有关代码所在部分的详细信息。
OsIsrResourceLock
OsIsrResourceLockBudget
此参数包含允许中断持有给定资源的最大时间(以秒为单位)。
OsIsrResourceLockResourceRef
锁定时间取决于对资源的引用
OsIsrTimingProtection
OsIsrAllInterruptLockBudget
这个参数包含允许ISR锁定所有中断的最大时间(通过suspend endallinterrupts()或DisableAllInterrupts()(以秒为单位)。
OsIsrExecutionBudget
该参数包含中断的最大允许执行时间(以秒为单位)。
OsIsrOsInterruptLockBudget
这个参数包含允许ISR锁定所有2类中断的最大时间(通过suspend endosinterrupts())(以秒为单位)。
OsIsrTimeFrame
此参数包含连续中断之间的最小到达时间(以秒为单位)。
OsPeripheralArea
OsPeripheralAreaEndAddress
外设区域的最后一个有效地址
OsPeripheralAreaId
外设区域的Id
OsPeripheralAreaStartAddress
外设区域的第一个有效地址
OsPeripheralAreaAccessingApplication
引用可以访问此对象的应用程序
OsResource
OsResourceProperty
指定了资源的类型
OsResourceAccessingApplication
引用具有此对象访问权的应用程序
OsResourceLinkedResourceRef
指向资源的链接。必须是有效的,如果OsResourceProperty是链接的。如果没有链接OsResourceProperty,则忽略该值。
OsScheduleTable
OsScheduleTableDuration
此参数定义调度表的模量
OsScheduleTableRepeating
是否附表上的第一个有效期点应在最后一个有效期点处理后的最后一个有效期点进行处理。
OsScheduleTableCounterRef
此参数包含对驱动进度表的计数器的引用。
OsSchTblAccessingApplication
引用具有此对象访问权的应用程序。
OsScheduleTableAutostart
OsScheduleTableAutostartType
指定调度表的自动启动类型。
OsScheduleTableStartValue
当进度表启动时,自动启动的绝对值。只在OsScheduleTableAutostartType是绝对的情况下使用。进度表启动时的相对偏移量。只在OsScheduleTableAutostartType是相对的情况下使用。
OsScheduleTableAppModeRef
参考在启动过程中应以何种应用程序模式启动进度表
OsScheduleTableEventSetting
OsScheduleTableSetEventRef
引用将由操作设置的事件
OsScheduleTableSetEventTaskRef
OsScheduleTableExpiryPoint
OsScheduleTblExpPointOffset
从零开始的偏移量(以刻度为单位),在该偏移量处处理失效点。
OsScheduleTableTaskActivation
OsScheduleTableActivateTaskRef
引用将被操作激活的任务
OsScheduleTblAdjustableExpPoint
OsScheduleTableMaxLengthen
可以对失效点偏移量(以刻度为单位)进行的最大正调整。
OsScheduleTableMaxShorten
可对失效点偏移量(以刻度为单位)进行的最大负调整。
OsScheduleTableSync
OsScheduleTblExplicitPrecision
此配置仅在使用显式同步时有效。
OsScheduleTblSyncStrategy
AUTOSAR OS以两种方式提供同步支持:显式和隐式。
OsSpinlock
OsSpinlockLockMethod
锁实现方法,当采用自旋锁时使用。一个用户(例如一个任务)可能持有多个自旋锁。在这种情况下,最后一个锁被强制使用至少一个锁方法,锁的强度与当前锁相同。
OsSpinlockAccessingApplication
对可以访问此对象的osapplication的引用。
OsSpinlockSuccessor
对可以访问此对象的osapplication的引用。要检查自旋锁是否可以(以嵌套的方式)被占用而没有任何死锁的危险,可以定义一个自旋锁的链表。自旋锁只能按链表的顺序使用。它可以跳过自旋锁。
OsTask
OsTaskActivation
此属性定义任务的最大队列激活请求数。值等于“1”表示在任何时候只允许对该任务进行一次激活。注意,该值必须是从1开始的自然数。
OsTaskPriority
任务的优先级由该属性的值定义。这个值必须被理解为一个相对值,即这些值只显示任务的相对顺序。
ISO 17356-3将最低优先级定义为0 (0);值越大,优先级越高。
OsTaskSchedule
OsTaskSchedule属性定义任务的可抢占性。
如果将此属性设置为NON,则不会将任何内部资源分配给此任务。
OsMemoryMappingCodeLocationRef
对内存映射的引用,其中包含有关代码所在部分的详细信息。
OsTaskAccessingApplication
引用具有此对象访问权的应用程序。
OsTaskEventRef
此引用定义扩展任务可能对其作出反应的事件列表。
OsTaskResourceRef
此引用定义此任务访问的资源列表。
OsTaskAutostart
OsTaskAppModeRef
引用在操作系统启动时激活该任务的应用程序模式
OsTaskResourceLock
OsTaskResourceLockBudget
此参数包含允许任务锁定资源的最大时间(以秒为单位)
OsTaskResourceLockResourceRef
对任务使用的资源的引用
OsTaskTimingProtection
OsTaskAllInterruptLockBudget
此参数包含允许任务锁定所有中断的最大时间(通过suspend endallinterrupts()或DisableAllInterrupts()(以秒为单位)。
OsTaskExecutionBudget
此参数包含任务的最大允许执行时间(以秒为单位)。
OsTaskOsInterruptLockBudget
此参数包含允许任务锁定所有类别2中断的最大时间(通过suspend endosinterrupts())(以秒为单位)。
OsTaskTimeFrame
任务的激活和/或发布之间的最小到达时间(以秒为单位)。
OsIoc
OsIocCommunication
表示位于不同os应用程序中的软件部件之间的1:1或N:1或N:M(仅不排队)通信,这些应用程序被绑定到相同或不同的核心。名称应当以发送软件服务的名称开头,并在名称后面加上发送软件服务提供的唯一标识符。在RTE作为用户的情况下,应该注意标识符名称的唯一性必须通过端口、数据元素、对象实例和可能的其他标识属性(例如,案例1:N映射到1:1)实现。
OsIocBufferLength
此属性定义为排队通信分配的IOC内部队列的大小。此配置信息将允许对RTE和IOC中需要缓冲区的通信所需内存进行优化。
OsIocSenderProperties
OsIocFunctionImplementationKind
此参数用于选择此通信是作为宏实现还是作为函数实现。
OsIocSenderId
发送方在N:1或N:M通信中的表示,以区分发送方。此参数在1:1通信中不存在。
OsIocSendingOsApplicationRef
此属性是对OS配置文件中定义的发送OS- application实例的引用。此信息应允许生成器获得代码生成所需的附加信息,如:正在通信的os -应用程序的保护属性,以确定必须跨越哪些保护边界。核心标识符,以查明是否必须实现内部或内部核心通信的中断细节,以便在跨核心通知的情况下实现irq。
OsIocReceiverProperties
OsIocFunctionImplementationKind
此参数用于选择此通信是作为宏实现还是作为函数实现。
OsIocReceiverPullCB
此属性定义了一个回调函数的名称,IOC将对每个数据接收在接收核心上调用该回调函数。如果不存在此属性,IOC将不应用ReceiverPullCB通知。函数的名称应该以接收模块的名称开头,后跟一个回调名称_IocId。
OsIocReceivingOsApplicationRef
此属性是对OS配置文件中定义的接收OsApplication实例的引用。该信息允许生成器获得代码生成所需的附加信息,如:保护性能的交流OsApplications 找出哪些保护交叉/核心标识符是否内部或核心通信必须实现Interrupt 细节的十字架核心IRQs通知来实现。
OsIocDataProperties
OsIocDataPropertyIndex
该参数用于定义数据发送的顺序,例如:是IocSendGroup(A,B)还是IocSendGroup(B,A)应使用。
OsIocInitValue
在IOC通信中传输的数据的初始值
OsIocDataTypeRef
在IOC通信通道上传输的数据类型。这个属性对于生成Ioc函数的参数类型是必需的。此外,这些信息应该用于计算Ioc模块中必要的数据复制操作的数据大小。
自动配置生成
无
参考文档
[1] AUTOSAR_SWS_Os.pdf文章来源:https://uudwc.com/A/AAeO
[2] AUTOSAR_SRS_Os.pdf文章来源地址https://uudwc.com/A/AAeO