CP AUTOSAR中Runnable的开发配置
#01、Runnable说明
在AUTOSAR CP平台中,Runnable是一个关键概念,它代表了可以被调度的最小执行单位。可以将Runnable理解为一个独立的任务或函数,具有特定的输入和输出,用于执行具体的操作或算法。
在AUTOSAR CP的软件架构中,Runnable被分配给Task(任务)中执行。Task是AUTOSAR中的基本执行单元,负责执行一系列的操作或功能,而这些操作或功能则通过Runnable来实现。
通过将功能划分为多个Runnable,AUTOSAR CP平台实现了软件的模块化设计。这种设计方式提高了软件的可重用性、可维护性和可扩展性。
汽车软件中的Runnable配置,一般是由汽车软件的开发团队或相关技术人员来执行的。
具体来说,Runnable的配置通常涉及以下几个方面:
1. 定义Runnable:在AutoSAR开发中,首先需要定义Runnable,这通常包括为其命名、编写实现具体逻辑的函数代码等。
2. 挂载到Task上:Runnable必须挂载在Task(任务)上才能被执行。Task是AutoSAR中的基本执行单元,负责执行特定的功能。通过合理的Task任务分配和Runnable配置,可以确保系统的高效、稳定、安全运行。
3. 配置触发条件:Runnable的执行需要满足一定的触发条件,这些条件可以是事件触发、时间触发或数据触发等。开发人员需要根据具体需求来配置这些触发条件,以确保Runnable在适当的时候被执行。
4. 与其他Runnable的交互:在系统中,不同的Runnable之间可能存在数据交互和共享资源的情况。因此,在配置Runnable时,还需要考虑它们之间的通信与同步机制,以确保系统的整体性能和稳定性。
5. 测试和验证:配置完成后,还需要对Runnable进行测试和验证,以确保它们能够按照预期工作,并满足系统的性能和安全要求。
所以汽车软件中的Runnable配置是一个复杂而重要的过程,需要由专业的汽车软件开发团队或技术人员来执行。在实际开发过程中,软件架构工程师可以选择在工程文件中是否配置Runnable,这也间接的决定了软件单元开发工程师的工作范围差异。
本文针对这种差异做一个演示说明。
#02、工具准备
MATLAB、SIMUlink及工具包AUTOSAR Blockset、Embedded Coder;用以导入软件架构模型文件、Runnable配置及C代码生成等等;
MATLAB 推荐使用R2022b及之后的版本,MATLAB支持了AUTOSAR Blockset的更新和使用。支持了AP平台,可以使用ara::com方法开发自适应应用软件并部署在嵌入式Linux上,以及在架构模型中创建数据类型和接口。
另外需要准备两份软件架构ARXML文件,内部均有一个Composition,包含两个SWC,区别就在于一个直接配置了Runnable,另一个并未配置Runnable;
配置了Runnable的ARXML会有如下类似字段;
#03含有Runnable的ARXML导入
两行指令就可以导入,并创建SWC模型:
ar = arxml.importer('Seat_Heat_Composition_Runnable.arxml')
createCompositionAsModel(ar,'/Components/Seat_Heat_Composition')
创建出来Composition、各个SWC、数据类型定义的Simulink模型文件;
进入Autosar Blockset工具箱,工具箱将自动解析并展示该SWC的详细内容。在Code Mapping Component Interface和AUTOSAR字典部分,用户不仅能够查看到SWC内部定义的所有Runnable实体的列表,还能进一步深入了解每个Runnable的具体属性。比如:
Runnable名称:每个Runnable都有一个唯一的标识符或名称,用于在SWC内部及与其他组件交互时引用。
执行周期:指定了Runnable被调度的频率,即它应当多久执行一次。这可以是基于时间的(如每10毫秒执行一次)或基于事件的(当满足特定条件时触发)。
参数列表:列出了Runnable执行时可能需要接收的输入参数以及可能产生的输出参数。
后面继续进行模型搭建、工程配置与代码生成等工作即可。
#04不含Runnable的ARXML导入
使用与上一节相同的指令,导入了不含Runnable信息的ARXML文件。
但是从生成的Simulink模型来看,同样已经有了Runnable信息;
双击进入一个SWC,点击菜单栏中的APP - Autosar Component Design(Autosar Blockset工具箱),再进入AUTOSAR字典的Code Mapping界面可以发现,ARXML导入时,对于每个SWC,根据其名称自动生成了两个Runnable,一个初始化Runnable、一个事件型Runnable,其周期与模型默认求解器的周期一致;
但是SWC内还未有非常明确function或system模块与runnable对应;
可以创建Subsystem模块,并在其内构建模型逻辑,也可以直接搭建模型,不过如果同一SWC内含有多个Runnable,则显得混乱,因此建议创建Subsystem模块,再构建模型逻辑;
值得注意的是,如果不做其他配置修改,那么所有的模块参数都将隶属于同一个Runnable函数;
#05新增Runnable
Simulink类型函数模块创建
添加Function-Call Subsystem与Function-Call Generator模块,双击修改Function-Call Generator参数,修改采样时间,为系统求解器默认时间的整数倍;当然这也只是增加了一个Simulink模块,并未对架构产生任何影响;
另外,如果使用的input、output的求解速率不一样,需要添加Rate Transition模块进行速率转换,如果数据类型不一致,需要添加Data Type Conversion进行数据类型的准换,比如uint8和枚举类型之间的转换;Rate Transition需要勾选取消掉“确保确定性数据传输”;
点击左下角的刷新(代码映射更新),可以看到更新出来将要与Runnable mapping的Simulink函数模块;
Runnable创建与Mapping
新增Runnable:打开AUTOSAR字典,找到对应的SWC tab栏中Runnables选项,新增Runnable,修改Name与Symbol名称,添加Event事件,选择类型并修改名称,点击“应用”,关闭选项卡即可;
在对应的Simulink 函数上map 刚才创建的AUTOSAR Runnable,这才算是完成了一个Runnable独立模块的创建;
IRV添加与Mapping
需要注意的是,如果SWC内模型的搭建,涉及多个Runnable的交互,则需要使用Rate Transition模块进行速率转换,并且需要配置IRV;
在AUTOSAR CP中,IRV(Inter-Runnable Variable)是一个重要的概念,它指的是运行实体(Runnable)之间的变量,用于实现软件组件(SWC)内部不同运行实体(Runnable)之间的数据通信。在AUTOSAR的架构中,软件被划分为多个层次,包括应用层、运行时环境层、基础软件层和硬件抽象层。在运行时环境层中,Runnable是执行单元,它们负责执行具体的任务。IRV作为一种全局变量,允许这些Runnable之间共享和修改数据,从而简化了任务间的数据通信过程。
IRV的实现通常依赖于一些同步机制,如互斥锁和条件变量,以确保对共享变量的访问是安全的。这些机制可以防止多个任务同时修改同一个变量,从而避免数据竞争和错误的结果。
打开AUTOSAR字典,找到对应的SWC tab栏中IRV选项,新增IRV,修改Name与读写权限,创建完成后关闭选项卡即可;回到Code Mapping选项卡中,找到“Data Transfers”,将simulink中需要map的source模块map到刚才创建的IRV数据上;
生成代码
返回,点击代码生成,对应生成的函数名是AUTOSAR Runnable Symbol名称,同时也可以查看到IRV部分对应生成的代码。
#06小 结
使用MATLAB做CP软件单元开发时,当软件架构工程师提供ARXML文件作为输入时,这个文件可能已经预定义了部分或全部的Runnables,这些Runnables是AUTOSAR架构中用于封装软件功能的基本单元。然而,无论ARXML文件中是否直接包含Runnables的定义,通过使用MATLAB中的AUTOSAR Blockset工具箱进行导入,都会触发一个智能的解析与转换过程。
AUTOSAR Blockset工具箱不仅能够识别并导入ARXML文件中已存在的Runnables,还能够根据文件中描述的系统架构和接口信息,自动推断并生成缺失的Runnables。这一过程确保了软件单元开发工程师在MATLAB环境中拥有一个完整且一致的AUTOSAR模型,为后续的开发工作奠定了坚实的基础。
在导入ARXML并生成Runnables之后,软件单元开发工程师便可以根据实际的模型算法需求,对生成的Runnables进行精细化的调整。这包括但不限于:
1. 增减Runnables:根据软件功能的具体实现需要,工程师可以自由地添加新的Runnables来封装新的算法或功能,同时,对于不再需要的Runnables,也可以进行删除操作,以保持模型的简洁和高效。
2. 修改配置:对于每一个Runnables,工程师都可以深入其配置层面,调整其属性,如执行频率、优先级、任务激活条件等,以确保它们能够按照预期的方式运行,并满足系统的实时性和性能要求。
编辑推荐
最新资讯
-
【日置新品推荐】电阻计RM3548-50,更人性
2025-02-20 17:30
-
研讨会 | 产品可靠性及耐久性技术研讨会议
2025-02-20 17:30
-
【新品上市】局部放电检测仪ST4200和高压继
2025-02-20 17:21
-
首季“开门红”!国检中心(广西)与西工大
2025-02-20 08:29
-
中科创达获ISO/SAE 21434汽车网络安全管理
2025-02-20 08:28