关键词
嵌入式、C语言、autosar、vector、cpuload
平台说明
项目 | Value |
---|---|
OS | autosar OS |
芯片厂商 | TI, |
编程语言 | C,C++ |
编译器 | HighTec (GCC) |
技术背景
为了实现RTM的集成和CPUload的测量。
技术难点(关注点)
RTM的集成。只是用来临时监控,为节约开发时间,未用到XCP,DCM。仅实现了测量cpuload,未加入MP用于测量函数运行时间。
abbreviation
MP | Measurement Point |
---|---|
RTM | Runtime Measurement |
整体架构#流程
实现过程
一、RTM introduction
1.Runtime Measurement (RTM)允许用户确定BSW模块和用户代码段的运行时和CPU负载。
2.用于测量stack。
3.可以加入MP打桩。
4.可以用canoe作为上位机图形化显示,传输协议为XCP协议(CAN, FlexRay or Ethernet network communication)。
二、Architecture Overview
三、RTM集成
1.导入RTM module
2.创建MP ,RtmMeasurementPointType 为CPU_Load.
3.配置RtmCpuLoadMeasurement
4.配置通用参数
5.创建低优先级task放入Rtm_mainfunction
6.code
从文档中可知,可以通过调用GetMeasurementItem 获取cpuload。其中参数ItemType输入为RTM_ITEM_CPU_LOAD_CURRENT
从代码中可知计算cpuload的公式为。
其中deltaTime为在Rtm_MainFunction中调用Rtm_Time_MainFunctionRuntimeUpdate(currentTime, 0u);更新,所以deltaTime = Rtm_MainFunction的调度周期。
其中Rtm_CpuLoadTime会在退出idle task的时候被置为0,再次进入idle task的时候将时间间隔赋值给Rtm_CpuLoadTime。这个值用来表示非空闲任务所占用的时间,以此来计算cpu load。
Rtm_GetCpuLoadTime(locCoreIndex)的值为Rtm_GetCpuLoadTimeOfPCPartitionConfig
在文档中可知,生成的OS_VTH_SCHEDULE会在task 抢占 激活运行的时候调用Rtm_StartMeasurementFct() 和Rtm_StopMeasurementFct()
因为没用到DCM和XCP,需要手动调用开始、结束测量和获取cpuload具体数值。可以设定一个标志位,用lauterbach去控制。找到对应的MP id ,调用Rtm_StartMeasurementFct(mp_id)
7.测试结果
仅显示为实时cpuload,瞬时有cpuload满了的情况。
小结
该笔记仅为临时使用,后续若用到并完善了XCP和canoe再更新。