Autosar RTM

  • 1. RTM介绍
    • 1.1 AUTOSAR 4.x Architecture Overview 层级结构
    • 1.2 RTM 如何工作
    • 1.3 Interfaces to adjacent modules of the RTM 临近接口
  • 2. 如何计算CpuLoading
  • 3. RTM 集成
    • 3.1 导入RTM模块
    • 3.2 RtmCoreDefinitions
    • 3.3 RtmMeasurementPionts
    • 3.4 RtmGeneral
    • 3.5 RtmCpuLoadMeasurement

本文主要介绍MISCOSAR AMD 模块中的RTM 用来计算CPU Loading


1. RTM介绍

  • Runtime Measurement (RTM) allows the user to determine runtimes and CPU load of BSW modules and user code sections.
    运行时测量 (RTM) 允许用户确定 BSW 模块和用户代码段的运行时和 CPU 负载。
  • RTM provides a set of macros, which are used to instrument the source code to be measured.
    RTM 提供了一组宏,用于检测要测量的源代码。
  • Such an instrumented code section is called measurement point (MP).
    这样的插桩代码段称为测量点 (MP)。
  • Measurement is controlled- and evaluated in CANoe by RTM’s frontend or a self-written RTM application.
    通过 RTM 的前端或自行编写的 RTM 应用程序在 CANoe 中控制和评估测量。
  • Data exchange between CANoe and the ECU is done by the XCP protocol(e.g. using CAN, FlexRay or Ethernet network communication)
    CANoe 和 ECU 之间的数据交换通过 XCP 协议完成(例如使用 CAN、FlexRay 或以太网网络通信)。

1.1 AUTOSAR 4.x Architecture Overview 层级结构

MICROSAR AMD (AUTOSAR Monitoringaad Debugging)模块包含了三个子模块,
提供了错误报告、当前CPU负载及软件执行时间测量等功能,能够大大简化ECU软件的开发和测试过程。

  • DBG(DeBuGging)
  • DLT (DiagnosticLogandTrace)
  • RTM(RunTimeMeasurement)

1.2 RTM 如何工作

How Does Measurement Work At a start point the measurement is started, at a stop point, it is stopped. In your code you can define as many start-stop couples as you want. You can also use the predefined measurements of the BSW modules.
在开始点开始测量,在停止点停止测量。在您的代码中你想定义多少(开始-停止)测量点对都可以。你也可以使用预定义的BSW模块测量。

Define the complete duration of a measurement and get the following results:
定义度量的完整持续时间并获得以下结果:

  • Count: Counts how often the defined start-stop sections had been passed.
  • Max: Shows the absolute longest runtime of each start-stop section.
  • Min: Shows the absolute shortest runtime of each start-stop section.
  • Average: Shows the average runtime of each start-stop section.
  • Average CPU load: Shows the average CPU load caused by each start-stop section.

1.3 Interfaces to adjacent modules of the RTM 临近接口

2. 如何计算CpuLoading

Cpu负载率: 用来衡量在一段时间内CPU被占用情况.

Cpu负载率的计算方法: 可以用CPU一段工作时间与该时间段内被占用时间的比值来计算.
可以得之:

CPU负载率 = 占用时间(忙碌时间) / 运行总时间                                                 (1)

由于CPU被占用 主要是用来执行任务代码 中断服务代码和系统调度功能代码

CPU负载率 = (总的任务运行时间 + 中断服务代码运行时间 + 系统调度功能代码运行时间) / 运行总时间   (2)

由于中断处理和静态系统的调度所需时间开销都较小,一般情况下将 中断服务代码运行时间 和 系统调度功能代码运行时间 忽略不计

所以一般来说,可以将CPU负载率近似看作:

CPU负载率 ≈ 总的任务运行时间 / 运行总时间                                                    (3)

我们将所有任务的周期的最小公倍数称作:任务的超周期.那么可以得之 CPU负载率近似为操作系统中所有周期性任务的运行时间之和与这些任务的超周期的比值:

CPU负载率 ≈ i任务的周期 / 所有周期性任务的超周期                                            (4)

但是这4这种计算方法中,并没有考虑到中断请求的周期性和操作系统调度的频繁度.如果我们需要更精确的去测量CPU负载率.

按照(1)公式来推导出

CPU负载率 = 占用时间(忙碌时间) / 运行总时间 = (运行总时间 - 空闲时间) / 运行总时间                                           (5)

从(5)中 我们可知我们需要计算CPU loading的有效方法是, 得到一段时间内CPU空闲时间计数值. 从而更精确的计算CPU loading.


RTOS任务调度策略

  • 时间片轮转式
  • 优先级抢占式

在AUTOSAR 规范中,规定了一种没有任何具体功能的特殊任务(空闲任务).规范中 规定操作系统中的空闲任务没有固定周期,优先级最低,可以不执行任何功能,当系统中没有其他任务要运行或中断请求时,系统会自动跳转到空闲任务中,并一直执行空闲任务.

这样就为我们获得空闲时间提供了可能.

在空闲任务中,我们可以一直循环读取时间值, Interval (后一次的时间值减去前一次的时间值) 则能知道是空闲任务运行的时间,但是由于空闲任务优先级最低,OS产生调度的时候,也就是发生中断服务或者任务抢占的 之时,这个值就变成了CPU的占用时间,这个时间差值不仅包含任务调度产生的时间消耗,任务代码运行产生的消耗和中断服务产生的消耗.

如何来判断 Interval 值是空闲时间值 还是 忙碌时间值呢?
我们在这里假设操作系统从空闲任务跳转到其他高优先级任务或中断,在跳回空闲任务的时间为 T(s) ,那么得之所有大于T(s)间隔的时间段都是忙碌时间.

3. RTM 集成

3.1 导入RTM模块




3.2 RtmCoreDefinitions

Short Name
Bsw Core BSW运行的core
Backgound Task Name 实现空闲任务的任务名称
Core 定义应用程序正在运行的核心。对于交叉核心测量,请将此字段保留为空。
Core Definition id 符号名称该容器的值。
Number Of Task Response Time Percentiles
NvM Cpu Load Persistency Block
Nvm Task Response Time Persistency Block

3.3 RtmMeasurementPionts

Short Name 测量点
Assigned To Core 定义测量点在哪个核心上运行。
Autostart Enabled 自动启动可用于初始化函数,该函数只在启动阶段被调用,通信栈、XCP和RTM模块被激活。
Disable Interrupts 如果启用,RTM在测量期间使用临界段RTM_EXCLUSIVE_AREA_0锁定中断。
Measurement Enabled 此参数定义预编译期间测量部分的可用性。如果禁用,该部分的测量点将生成空宏。
Measurement Group 测量对象组
Measurement Id 测量对象的ID
Measurement Point Type
Measurement Type
Runtime Threshold[ms] 阈值报警时间 如果该测量段的当前运行时间超过指定的时间,将调用一个回调函数。如果该参数未定义或设置为0,则该阈值告警是不活动的。
Target Runtime[us]

This parameter defines whether the measurement point measures:
Runtime: Regular runtime measurement point.
Task: Task response time measurement point.
CPU_Load: Core specific CPU load measurement point.

The measurement type defines the measurement behavior of this measurement point.
If set to GrossExecutionTime:

  • Measures the absolute time between measurement start and stop.
    If set to NetExecutionTime:
  • Measures like GrossExecutionTime minus interruptions by task or ISR.
    If set to FlatExecutionTime:
  • Measures like NetExecutionTime minus the execution time of nested measurement points.

3.4 RtmGeneral

Short Name
32 Bit Timer 指定是否使用32位定时器。如果设置为true:使用32位定时器如果设置为false:使用16位定时器
Control 它允许在运行时禁用和启用RTM功能。
Ctr Direction 硬件计数器的计数方向 RTM_UP: 向上计数 RTM_DOWN: 向下计数
Dev Error Detect 错误检测和通知开关 打开或关闭
Ecu Name CANoe的XCP设置中的ECU名称。
Get Measurement Timestamp Fct 使用获取硬件计数器的当前值。必须由应用程序提供。
Mainfunction Cycle Time[s] 建议设置为0.01 [s]。
Measurement Ctr Frequency [Ticks / ms] 硬件计时器提供的每[毫秒]滴答数。
NvM Task Stack Usage
Safe Bsw Checks 是否使用安全检查
Timer Overrun Support 定时器溢出支持开关
Use Nesting Counter
Use Core Mask 此参数不能修改!
User Config File 可以指定用户自定义配置文件的路径。

3.5 RtmCpuLoadMeasurement

Short Name
Cpu Load Control Mode 定义如何测量Cpu负载和测量控制。
Hyperperiod[s]
Number Of Cpu Load Percentiles

【Autosar RTM】相关推荐

  1. 【AutoSAR CAN】01 - CAN模块的功能及提供的API

    文章目录 1 CAN模块的功能概述 2 CAN模块提供的API 传送门 ==>> AutoSAR实战系列300讲总目录 1 CAN模块的功能概述 CAN模块也就是我们所谓的CAN 驱动程序 ...

  2. 【AUTOSAR网络管理】

    1.什么是AUTOSAR? 官方一点:AUTOSAR 就是AUTomotive Open System ARchitecture的简称,中文翻译就是汽车开放系统架构. 直白一点:将汽车电子控制单元(E ...

  3. 【AutoSAR简介】

    基础概念 AUTOSAR(AUTomotive Open System ARchitecture)是一种用于开发汽车电子系统的开放式软件架构标准.它旨在解决汽车电子系统日益复杂和多样化的挑战,确保不同 ...

  4. 【AUTOSAR COM】达芬奇PDUR模块学习笔记

    文章目录 1 简介 1.1 架构概览 2 功能描述 2.1 特性 2.2 PDUR相邻模块接口 2.3 初始化 2.4 状态 2.5 故障处理 2.6 通信接口路由 2.6.1 数据提供 2.6.1. ...

  5. 【小猫爪】AUTOSAR学习笔记03-Communication Stack之CanIf模块

    [小猫爪]AUTOSAR学习笔记03-Communication Stack之CanIf模块 前言 1 CanIf简介 2 功能介绍 2.1 发送缓冲区 2.2 CAN Controller 模式控制 ...

  6. 【小猫爪】AUTOSAR学习笔记12-功能安全之E2E模块

    [小猫爪]AUTOSAR学习笔记12-功能安全之E2E模块 前言 1 E2E模块简介 2 E2E功能简介 2.1 五种保护机制 2.2 E2E的状态机 2.3 E2E Protection Wrapp ...

  7. SWC_RTE02-AutoSAR架构【AutoSAR架构设计概述2】

    文章目录 大家好,这期为大家带来[应用层(SWC)和 实时运行环境(RTE)]的培训.假设您的老板叫你基于AutoSAR平台设计软件架构.作为架构师,经典的输入-处理-输出(即IPO模型:输入-处理- ...

  8. 【AUTOSAR】01-汽车电子控制系统介绍

    [AUTOSAR]01-汽车电子控制系统介绍 1 电子技术在汽车上的应用 1.1 动力传动总成电子系统 1.1.1 传统汽车 1.1.2 新能源汽车 1.2 底盘电子系统 1.3 车身电子系统 1.4 ...

  9. 【小猫爪】AUTOSAR学习笔记00-目录

    [小猫爪]AUTOSAR学习笔记00-目录   因为一个偶然的机会让我接触到了AUTOSAR,所以就花一点小小的时间来记录一下学习它的坎坷大道.这其中复制粘贴了很多,也包括了我的一些个人的小小见解和废 ...

  10. 【小猫爪】AUTOSAR学习笔记15-BswM模块

    [小猫爪]AUTOSAR学习笔记15-BswM模块 前言 1 BswM模块简介 2 BswM功能简介 2.1 模式仲裁 2.2 模式控制 END 前言   上一节介绍了一个非常夸张的EcuM模块,其中 ...

最新文章

  1. LEMP+memcached
  2. Service 之间如何通信?- 每天5分钟玩转 Docker 容器技术(101)
  3. 研发应该懂的binlog知识(下)
  4. js自动触发onclick_每日一题JS中最基本的this情况分析
  5. fork与操作文件的系统调用问题
  6. 2010年3月再谈前端工程师的笔试题
  7. k8s的Pod状态和生命周期管理
  8. Android学习笔记之java中的回调函数
  9. c4d流体插件_C4D常用最火14款插件合集,总有一款你想要的!
  10. java动态时钟_Java实现动态模拟时钟
  11. 超声波传感器测距原理与模块使用
  12. 06 ElasticSearch模板搜索
  13. W806-ADC-PWM-TIM尝鲜
  14. html+js画一颗心形,用SVG和Vanilla JS框架创建一个“星形变心形”的动画效果
  15. 常见的电脑运行卡顿原因及解决方法
  16. 如果不开心,请看一下
  17. 第三方支付业务及典型的对账过程
  18. Android中Finish和OnBackPressed、OnDestroy的区别
  19. MapBoxGL 入门
  20. 如何快速搭建线上电商商城网站?

热门文章

  1. python爬取电子书
  2. 尚硅谷大数据技术之Flume
  3. 人工智能的常用十种算法
  4. 全连接层后面加bn层_神经网络基本组成 - 池化层、Dropout层、BN层、全连接层 13...
  5. 信号与系统 第一章 信号与系统概述 思维导图
  6. android社交软件源码,Android 社交App+java web后台整套源代码
  7. 海康威视DS-7808HW-SNH固件升级包支持萤石云
  8. oracle返回当前日期函数,oracle 日期时间函数使用总结
  9. overleaf中使用orcidlink给 ieee access加ORCID时遇到的tikz问题
  10. STM32固件库详解