关键词
嵌入式、C语言、autosar
平台说明
项目 | Value |
---|---|
OS | autosar OS |
autosar厂商 | vector |
芯片厂商 | TI |
编程语言 | C,C++ |
编译器 | HighTec (GCC) |
背景
在autosar工程中一些影响cpuload的配置,该配置可能在对项目的性能需求没影响,但是会占用额外的cpuload。
一、OS Timer
OS Timer用于为OSSystem Timer 提供时间基准。
1.1Periodic Interrupt Timer (PIT)与 High Resolution Timer (HRT)
1.1.1 配置
High Resolution Timer (HRT)
Periodic Interrupt Timer (PIT)
1.1.2 HRT 与 PIT区别
PIT Periodical Interrupt Timer
①周期固定
②一个 tick 增加一个counter
③分辨率越高中断的频率就越高
High Resolution Timer (HRT)
①非周期ticks
②根据上一次的持续时间增加ticks
③可以在下一个周期重新定义持续时间
④可以用更低的中断频率实现更高的精度
PIT | HRT | |
---|---|---|
IRQ | periodical | On demand |
Precision(Alarms, schedule tables) | Multiples of OsSecondsPerTick | Any time the timer hardware can provide |
Interrupt Load | Constant equally distributed | Constant equally distributed |
1.1.3 HRT 和 PIT的选用
根据项目需求、定周期和非定期任务选用。
1.1.4 HRT 和 PIT 对cpuload 的影响
HRT对资源的消耗大约为PIT的一倍以上。
二、CS interface server runnable mapping
2.1CS 端口使用
通常用于两个component之间的调用,三种使用方法:
①连线后只在config中task mapping client 端runnabl,不mapping server端runnable。(核内)
②连线后只config中task mapping client 端runnabl 且 mapping server端runnable。(核内)
②连线后在config中task mapping client 端runnabl 且 mapping server端runnable。(跨核)
2.2三种方式代码区别
2.2.1 核内不mapping
2.2.2 核内mapping
2.2.3 跨核mapping
2.3 不同方式对cpuload 的影响
2.3.1 核内不mapping
因为没经过RTE层,直接调用的,消耗较少CPUload
2.3.2 核内mapping
因经过了RTE,消耗较多cpuload
2.3.3 跨核mapping
因为在不同核,要考虑x- signal,spinlock等,消耗大量cpuload
2.4 小结
从上可以看出不mapping消耗cpuload最小,同核mapping消耗为前者一百倍,跨核mapping消耗为同核mapping的四倍。