目录
- 关键词
- 平台说明
- 一、runnable mapping的必要性
- 二、runnable mapping 通用规则
- 三、Task type
- 四、可以不用mapping的runnbale
关键词
嵌入式、C语言、autosar、runnable
平台说明
项目 | Value |
---|---|
OS | autosar OS |
autosar厂商 | vector |
芯片厂商 | TI |
编程语言 | C,C++ |
编译器 | HighTec (GCC) |
一、runnable mapping的必要性
runnable如果不mapping的话只是相当于一个函数,OS无法调度,并且一定会在Davinci configurator中报错(当前runnable未mapp)。
runnable mapping到task之后,将调度交给了OS,在满足一定条件的时候将触发运行runnable。
二、runnable mapping 通用规则
①同类型的runnable尽量放到同一个task例如init类型。
②同周期的runnable尽量放到同一个task。
③如非必要,将同核的runnable放到同一个task。
④mapping的时候考虑好runnable的优先级核task优先级。
⑤mapping的时候考虑好多核间的cpuload 均衡。
三、Task type
详细的在后面OS章节讲解,在这里只需要知道如果选auto类型,并且在同一个task中mapping了不同周期的runnable,会被自动判定为extended类型的task。
四、可以不用mapping的runnbale
①BSW层中的服务组件的callback类型runnable。
②C/S中的服务端runnable,如下图,CpApSWC1中有两个runnable,一个为C/S服务端,一个为10ms类型的runnable。只要我们至少在task中mapping了那个10ms的runnable,那么另一个C/S 服务端的runnable就可以不mapping。至于mapping和不mapping的区别,详情见 [AutoSar]工程中的cpuload陷阱(一)第二节。