1、概述
RTA-OS是一种静态配置的、抢占式的实时操作系统(RTOS),用于高性能、资源受限的应用程序。它支持以下功能:
OSEK
AUTOSAR 4.2.2
独特的RTA-OS功能。RTA-OS不仅仅是一个AUTOSAR操作系统。该内核旨在支持软件工程师构建和集成实时系统。
对于RTA-OS 结构:
·RTA- rtaoscfg和rtaosgen的组成部分。
·配置格式为ARXML。
·支持不同的编译器和硬件特定方面。
2、RTA-OS配置内容划分
RTA-OS的OS配置工具实现如下配置:
•Counter
•ISRs
•Schedule table
•Resource
•Application Mode
•Clock
•Reset Of Os
ISOLAR-AB配置工具实现如下配置:
•ECU Partition
•OS –Applications
•Tasks
•Swc-components
•Partition mapping
3、文件结构
RTA-OS输出一个项目文件(扩展名为“.rtaos”)。这个项目文件是一个特殊的RTA-OS文件,它列出了项目中的所有AUTOSAR XML文件。这些.arxml文件是为配置做准备的工作文件:
·OsNeeds.arxml:包含生成RTE后的操作系统配置,包括任务、计数器、调度表、资源等。
·RTAOS.arxml:包含操作系统的其余配置,由RTAOS配置工具创建。
·OsCfgApplication.arxml:包含对EcU Partition的OS Applications引用,对ISOLAR-AB Tool配置的OS Tasks的引用。
·CoreDefine.arxml:包含RTA-os Tool生成的内核的定义。
上述只是一个泛化的概念,名字有些可以用户自己更改。
4、ISOLAR-AB的OS和RTE配置
以多核微芯片MPC5748G为例。
1、在EcuC中为每个核心创建两个分区,并标记分区将执行BSW模块。
注意是ECUC,增加两个partitions
2、定义操作系统应用程序并将其映射到ECU分区。
3、创建任务并将其映射到操作系统应用程序。
注意重点在创建任务
4、将SWC模块映射到分区。
5、实体到任务映射。
其余的操作系统配置将在RTA-OS配置工具
5、通过ISOLAR-AB生成RTE
配置完成后生成RTE。
-nts -ur=2 --os-define-osenv=RTAOS40 --exclusive-area-optimization=disable --use-partition-sections=on --deviate-bsw-any-partition=1 --deviate-split-swci-support=on --have-64bit-int-types=on
RTE生成之后,osNeeds.arxml文件就会产生
osNeeds.arxml用来作用于RTA-OS配置工具去配置OS剩下的部分。
6、RTA-OS配置工具配置详解
创建RTA-OS工程
转到文件-打开,然后选择一个项目文件“.\Targets\TC275 \RTOS\Config\os_Config.rtaos”
6.1、通用配置
通用配置
在定义OS对象之前,有必要定义整个系统属性。
Status:任务类型。
标准:最小内存和执行时间要求。
扩展:通过错误钩子机制提供额外的调试支持;验证操作系统配置。
Enable Stack Monitoring
当启用RTA-OS检测任务/ISR堆栈溢出时,应该为每个任务/ISR定义预算。这个开了,那么对应的Task与ISR需要定义堆栈大小了。
Hooks
启用错误钩子,启动钩子,关闭钩子,stack_overflow钩子和保护钩子。
在集成时,可以将特定于os应用程序的代码添加到每个os应用程序的标准StartupHook(), ShutdownHook()和ErrorHook()中。但是,每次集成更改时,这些钩子都需要重新编写。
代码例子
1、ErrorHooK
2、StartHook
3、ShutDownHooK
4、StackOverrunHook
6、ProtectionHook
请注意:不是所有的操作系统api都可以在用户钩子实现中使用。
RTA-OS参考手册定义了每个API的有效调用环境,例如ActivateTask
ActivateTask的调用环境如下:
其实也就是例如PreTaskHooK不能调用ActivateTask
Target
中断向量表的生成
时钟频率
Instruction Cycle Rate:指令在目标硬件上执行的速率(有时称为时钟速度)。也就是芯片的执行频率。
Stopwatch Speed:定时器运行的频率,理想情况与芯片频率一致,但是大部分时候比芯片频率低一倍。
6.2、Count
创建一个新的Count
Maximum Value:计时器的最大值,在达到最大允许值后,所有计数器在刻度上自动归零。
Ticks per Base:到达特定计数器单位所需的刻度,可用于定义计数器上每个刻度所需的基础计数器驱动刻度的数量。可以为这个属性赋任何值,因为RTA-OS不使用它。这对应于AUTOSAR操作系统属性TICKSPERBASE。
Minimum Cycle:最小周期定义在为Alarm或者schedule table偏移量设置周期值时允许的最短刻度数。在大多数情况下,希望它是1个刻度。但是,如果希望构建的系统在计数器上强制执行最小的警报间隔,那么可以选择更大的值。这对应于AUTOSAR OS计数器属性MINCYCLE。
Type:RTA-OS扩展了AUTOSAR规范以支持两种COUNTER类型
1、软件
功能函数IncrementCounter ()可以从ISR, TASK或其他为低分辨率时间事件设计的代码中调用Ticks
2、硬件
在操作系统和硬件之间需要一个驱动程序,直接设计为驱动定时器硬件
6.3、中断
注意:类别1优先级必须高于优先级最高的类别2 ISR。
6.4、Tasks
下图是一个基础任务
如果没有事件引用任务,则该任务为基本任务。
注意:Ecu_StartupTask优先级最高,应该处于OSDEFAULTAPPMODE应用模式。
所有任务都是抢占式的。
所有任务都具有该任务的最大队列激活请求数1.
任务的属性如下图
下图红框里面的2,对应“所有任务都具有该任务的最大队列激活请求数1.”这句话,此处2是为了解释图下面的FIFO。一般设置为1.
·基本任务可以共享任务优先级,当任务共享优先级时,
·任务被运行操作系统的激活顺序,此时。FIFO队列由RTA-OS Builder创建以共享优先级,但需要昂贵的(RAM和CPU时间)和额外的数据结构来维护。
·一个基本任务必须在下一次发布之前完成。
任务终止配置如下图。
RTA-OS有两种终止方式。
Lightweight termination: 仅在入口函数中终止,快速终止->True
Heavyweight termination: 终止任何位置,快速终止->False
请注意:空闲任务永远不会终止。
6.5、监控项配置
当可伸缩性类为SC2或SC4时,任务可以设置要在运行时监视的可选执行预算。
6.6、栈区设置
需要设置任务所需的堆栈空间,配置项“stack Size”包含2个数字,第一个为stack,第二个为CSA (Context Save Area)。
如果系统中使用扩展任务,则必须指定Wait-Stack,否则它是可选的。
自启动任务
自启动任务
有些任务是在系统启动时自动激活的,这些任务可以在StartOS()期间自动启动,并且在进入空闲任务回调时已经运行。
自动启动任务应该为配置添加应用程序模式。
6.7、空闲任务
AUTOSAR包含一个“空闲任务”,当操作系统无事可做时,此任务将被激活。并在回调Os_Cbk_Idle()中实现,如果回调返回FALSE,它将永远不会再被调用,如果回调返回TRUE,则Idle任务回调将再次被调用。
6.8、调度表
调度表的配置图示如下
调度表的Expiry Points如下图
6.9、Applications
操作系统应用程序是操作系统对象的集合,它是一个单一的功能单元,安全级别,它定义了时间,内存和服务保护边界。为每个内核创建一个应用程序。
一般通用配置如下
Applications的计数器如下
此Applications包含哪些中断
此Applications在那个调度表里面
此Applications所包含的任务
注意一下:Partition属于内存分区,物理意义上的存在,Application应该是属于哪个Partition,在ISOLAR里面配置Application会索引Partition就可以看出,可以有几个Application然后一个Partition,但是一般软件设计的时候是一个Application对应一个Partition。
6.10、资源
·资源用于在访问共享数据或硬件资源时提供互斥。
·任务和ISR可以共享任意数量的资源。
·所有GetResource()和ReleaseResource()调用必须正确嵌套。
标准资源选择
标准资源Standard Resources | 是普通的操作系统信号量。配置标准资源将创建具有指定名称的资源。 |
链接资源Linked Resources | 允许为标准(或另一个链接的)资源设置别名,以便可以对同一资源进行嵌套锁定。 |
内部资源Internal Resources | 是在进入任务时自动锁定并在任务结束时自动释放的资源。 |
Task属于哪些资源
6.11、Application的模式
为了兼容OSEK,默认应用程序模式OSDEFAULTAPPMODE必须始终存在。
自动启动的任务应该在OSDEFAULTMODE中。
还可以定义其他应用模式,例如诊断、测试、传输等。
操作系统应用模式仅在启动时使用(在StartOS()调用中),之后,AUTOSAR操作系统中没有模式切换。
6.12、OS的生成
配置生成文件输出文件夹的设置
OS构建过程包含的一些文件,包括一些相关文件,以支持操作系统的构建过程