汽车嵌入式开发中,对于实时性要求较高的场景,我们会比较关注信号的时时性。但是,期望有时总是不太遂愿,本文,从一个工程实例出发,讨论一下:"周期信号值抖动的问题"。 1、问题描述 (一)网络拓扑 (二)问题详情 2、原因分析 为什么会出现问题1和问题2呢? (一)问题1分析 对于问题1,主要问题在于Node1,网关节点只是负责转发Node1的E2E_RC_Signal信号。所以,需要分析Node1的问题。 工况分析如下图: Node1中,更新E2E_RC_Signal信号的Task和发送E2E_RC_Signal信号的Task周期相同。但是,在Cycle #n+1中,E2E_RC_Signal Update Task执行时间比正常用时长,因此使得E2E_RC_Signal的更新时间点推迟。而E2E_RC_Signal Send Task执行时间未受影响,在P3时间点,E2E_RC_Signal对应的PDU(也就是报文)正常发送,因此会使得E2E_RC_Signal值没有更新。 E2E_RC_Signal Update Task执行为什么会超时呢?答:当E2E_RC_Signal Update Task的优先级较低时,会被高优先级的任务抢占,也会被中断打断(比如,某一时刻,Node1中断接收了大量的报文)。 (二)问题2分析 问题2中,Node1发送E2E_RC_Signal均正常,只是网关节点(Gateway)转发的时候出了问题。 工况分析如下: 3、解决措施 针对上述问题,本文不具体讨论解决措施。可以看出,上述的问题主要与时序和任务相关,而这两点,具体到每个项目都不一样。具体项目中,如果有类似问题,可以从TASK的优先级、时序、中断数量、MCAL配置方式等方面着手。 提示:对于问题1和问题2,在正常的误差范围内,实际项目中,此偏差可接受。 |
|
来自: 开心果NeedCar > 《待分类》