【AUTOSAR】 项目和代码详解(二)----RTA-OS配置

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中标准化。

  1. rtaoscfg是一个读取和写入配置的图形配置工具在AUTOSAR XML配置语言中。
  2. rtaosgen是一个命令行工具,用于生成RTA-OS内核库从你的输入配置。
  3. rtaosanvis是在RTA-OS上执行时间分析的图形工具系统。
  4. Port plug-ins,每个目标/编译器组合一个使用RTA-OS。可以同时安装多个端口并进行切换多个版本。
  5. 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

[2] AUTOSAR_SRS_Os.pdf

你可能感兴趣的:(网络,汽车,嵌入式硬件,linux)