随着汽车智能化发展,整车通信矩阵越来越复杂,即:不同电控单元之间需要交互的信息越来越多,这些信息通过报文(message)传输。
message中携带的信号(signal)最终要传递给软件的上层模块,参与算法处理,之后再将处理后的信息形成signal发送出去。
autosar通信栈,简化示意如下:
不管车辆通信变得如何复杂,均需要确保车辆运行的安全性,而车辆是否能按照预期状态工作,离不开控制器对signal的及时响应,所以,及时的获取signal状态尤为重要。
为了满足此需求,在autosar的架构中,对于发送端(sender)和接收端(receiver)设计了不同的信号状态处理策略。其中,超时机制(timeout)与信号更新机制(ub,update bit)最为典型。
提示:由于signal group ub与signal ub实现类似,本文侧重signal ub的讨论。
1、ub概念
ub:表示发送端(sender)所发送信号(signal)/信号组(signal groups)数据是否有更新,如果发送端发送的signal/signal groups有更新,由com层自动置位对应的ub(=1),反之,复位ub(=0)。
为什么需要用ub位表示signal/signal groups的数据有没有更新呢?假设如下场景,报文message_a包含信号signal_a、signal_b等,message_a的发送周期为10ms,而signal_a的更新周期为30ms,示意如下:
面对如上的场景,接收端(receiver)应当检测sender是否更新过signal_a的值,以便于receiver更好的进行算法处理。因此,为了表示signal/signal groups数据是否有更新,设计了ub,ub需要消耗message中的资源。举例:设计signal_a_ub信号用于表示signal_a数据是否更新过。
由于ub需要消耗message资源,因此,可以根据工程场景,对重要信号进行ub配置,对非重要信号,不配置ub,即:ub是一个选配项。同时,ub本身也是一个signal。在如上的表述中,sender和receiver如何理解呢?
(一)同一网段signal传输
如果sender、receiver在同一个局域网内,两者之间的信号传输如下所示:
(二)跨网段signal传输
如果sender、receiver在不同局域网内,两者之间的信号传输如下所示:
2、ub在发送端的处理
如果为某个信号配置ub时,需要思考两个问题:
1、何时置位发送端的ub位?
2、何时复位发送端的ub位?
(一)何时置位发送端的ub位?
当上层软件模块(upper layer)需要发送signal时,会通过rte(run-time environment)调用com层的发送接口com_sendsignal()/com_sendsignagroup()更新signal或者signal group值,与此同时,com模块自动将signal/signal group对应的ub置位,示意如下:
(二)何时复位发送端的ub位?
在autosar的架构设计中,何时复位发送端的ub信号,有三种模式供开发者选择:transmit、confirmation、triggertransmit。而这三种模式的选择,通过参数comtxipduclearupdatebit配置。如何理解这三种模式呢?
1、transmit模式复位ub
配置参数comtxipduclearupdatebit = transmit,当com模块请求pdur模块发送接口pdur_comtransmit()发送数据,当该接口返回e_ok时,com模块复位ub,具体流程如下:
2、confirmation模式复位ub
配置参数comtxipduclearupdatebit = confirmation,当message成功发送到总线以后,从驱动层通过callback层层向上通知,直到com模块收到message成功发送到总线的确认信息,com模块复位ub,具体流程如下:
3、triggertransmit模式复位ub
此种模式在工程中,不多见,本文不做过多讨论。
3、ub在接收端的处理
receiver成功从总线接收到目标message以后,驱动层通过callback层层向上通知,直到com模块收到message,pdur模块通com_rxindication()接口将数据通知com某块,示意如下:
其中,接收到的ub信息在com_rxindication()接口中进行处理,具体的处理如下所示:
接收处理解读:
1、当message信息层层向上传递到com模块时,com_rxindication()处理ub相关操作,如果在receiver中配置了i-pdu callout,则程序进行callout处理,callout主要进行用户自定义处理。
如果receiver中未配置i-pdu callout,则进行后续处理;
2、进行ub检查,如果ub = 0,com丢弃ub对应的信号。如果ub = 1,程序进行后续的字节序转化(针对跨字节信号),signal路由等操作。
提示:autosar架构中,com层处理signal级别路由,pdur处理pdu(可以看作帧)的路由。
(一)receiver何时复位ub
receiver处理收到的ub,需要与reception deadline monitor逻辑配合处理,即:如果信号deadline超时,则对应信号的ub位需要复位(=0)。reception deadline monitor属于选配项,如果信号没有配置reception deadline monitor,则接收端接收到的ub信号值会一直保持上次的接收值。
4、ub对应的工程问题
ub看起来似乎不难,但是,当其成为通信栈的一部分时,可能会因系统工程的复杂性,而引发各种各样的问题。
AI必须以辅助人类为设计,谷歌称ai研究不会将其用于军事武器
车联网是构建汽车“新四化”基石
一文搞明白各类总线
介绍一些实用的Linux命令
薄膜表面缺陷检测设备的相关功能介绍
如何理解和使用Update bit呢?
主设备号--驱动模块与设备节点联系的纽带
TCP协议网络安全攻击
典型的模拟心电图拓扑结构和ECG信号链分析
中亚五国的科技发展状况分析
最强山寨iPhone X开箱上手,库克会疯
车灯高效率同步降压恒流驱动方案
泰凌微电子应邀参加“OFweek 2022第七届物联网产业大会”
市场需求决定创新技术的选择
自动插拔试验机的校准方法、功能用途及优点
大功率绕线电感的基本作用以及应用分析
无人机是如何为松树看病的
长鑫存储“半导体设备生产效率的评估方法及装置”专利获授权
全球首款18GB手机红魔6 Pro氘锋透明版登场
拓普联科荣获韶音科技“2023年度供应商质量卓越奖”