0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何理解和使用Update bit呢?

jf_EksNQtU6 来源:开心果 Need Car 作者:开心果 Need Car 2023-10-07 16:04 次阅读

随着汽车智能化发展,整车通信矩阵越来越复杂,即:不同电控单元之间需要交互的信息越来越多,这些信息通过报文(Message)传输。

Message中携带的信号(Signal)最终要传递给软件的上层模块,参与算法处理,之后再将处理后的信息形成Signal发送出去。

Autosar通信栈,简化示意如下:

a72b5114-5f78-11ee-939d-92fbcf53809c.png

不管车辆通信变得如何复杂,均需要确保车辆运行的安全性,而车辆是否能按照预期状态工作,离不开控制器对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,示意如下:

a73ca392-5f78-11ee-939d-92fbcf53809c.png

面对如上的场景,接收端(Receiver)应当检测Sender是否更新过Signal_A的值,以便于Receiver更好的进行算法处理。因此,为了表示Signal/Signal Groups数据是否有更新,设计了UB,UB需要消耗Message中的资源。举例:设计Signal_A_UB信号用于表示Signal_A数据是否更新过。

a75752dc-5f78-11ee-939d-92fbcf53809c.png

由于UB需要消耗Message资源,因此,可以根据工程场景,对重要信号进行UB配置,对非重要信号,不配置UB,即:UB是一个选配项。同时,UB本身也是一个Signal。在如上的表述中,Sender和Receiver如何理解呢?

(一)同一网段Signal传输

如果Sender、Receiver在同一个局域网内,两者之间的信号传输如下所示:

a76d6932-5f78-11ee-939d-92fbcf53809c.gif

(二)跨网段Signal传输

如果Sender、Receiver在不同局域网内,两者之间的信号传输如下所示:

a7749252-5f78-11ee-939d-92fbcf53809c.gif

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置位,示意如下:

a77df8f6-5f78-11ee-939d-92fbcf53809c.png

(二)何时复位发送端的UB位?

在Autosar的架构设计中,何时复位发送端的UB信号,有三种模式供开发者选择:Transmit、Confirmation、TriggerTransmit。而这三种模式的选择,通过参数ComTxIPduClearUpdateBit配置。如何理解这三种模式呢?

1、Transmit模式复位UB

配置参数ComTxIPduClearUpdateBit = Transmit,当COM模块请求PduR模块发送接口PduR_ComTransmit()发送数据,当该接口返回E_OK时,COM模块复位UB,具体流程如下:

a786fd70-5f78-11ee-939d-92fbcf53809c.png

2、Confirmation模式复位UB

配置参数ComTxIPduClearUpdateBit = Confirmation,当Message成功发送到总线以后,从驱动层通过Callback层层向上通知,直到COM模块收到Message成功发送到总线的确认信息,COM模块复位UB,具体流程如下:

a82dcb64-5f78-11ee-939d-92fbcf53809c.png

3、TriggerTransmit模式复位UB

此种模式在工程中,不多见,本文不做过多讨论。

3、UB在接收端的处理

Receiver成功从总线接收到目标Message以后,驱动层通过Callback层层向上通知,直到COM模块收到Message,PduR模块通Com_RxIndication()接口将数据通知COM某块,示意如下:

a83b3678-5f78-11ee-939d-92fbcf53809c.png

其中,接收到的UB信息在Com_RxIndication()接口中进行处理,具体的处理如下所示:

a84a37cc-5f78-11ee-939d-92fbcf53809c.png

接收处理解读:

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 deadlinemonitor属于选配项,如果信号没有配置reception deadlinemonitor,则接收端接收到的UB信号值会一直保持上次的接收值。

4、UB对应的工程问题

UB看起来似乎不难,但是,当其成为通信栈的一部分时,可能会因系统工程的复杂性,而引发各种各样的问题。





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    18608

    浏览量

    224491
  • 控制器
    +关注

    关注

    112

    文章

    15534

    浏览量

    173463
  • 接收机
    +关注

    关注

    8

    文章

    1149

    浏览量

    52917
  • AUTOSAR
    +关注

    关注

    9

    文章

    334

    浏览量

    21288
  • PDU
    PDU
    +关注

    关注

    0

    文章

    92

    浏览量

    16854

原文标题:Autosar通信栈基础:如何理解和使用Update bit

文章出处:【微信号:谈思实验室,微信公众号:谈思实验室】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    bit型变量为何不能和字符相加

    bit型变量只能取二进制的0和1,但是为何不能和字符相加,比如: bit a = 1; char b = '9';char c = a+b;//这一句程序说运行错误,我是这样理解的:
    发表于 04-08 22:04

    请问Allegro图中都灰色了那该怎么update symbole

    怎么都灰色了 我如何update symbole
    发表于 09-06 05:36

    如何去解决update_mbr failed的问题

    [td]ubuntu16.04飞凌的A40i SDK ./build.sh #能通过./build.sh pack #update_mbr失败p=soc c=snddaudio1 state=0 p
    发表于 01-13 09:44

    如何在RK3288 Ubuntu上制作升级包update.img

    如何在RK3288 Ubuntu上制作升级包update.img
    发表于 03-10 08:02

    USB232-9 Driver Update

    USB232-9 Driver Update
    发表于 08-08 21:53 29次下载

    华硕 Update自动升级BIOS程序7.13.05版

    华硕 Update自动升级BIOS程序7.13.05版.zip
    发表于 01-27 14:19 0次下载

    微星 Live Update 3在线升级工具3.87版

    微星 Live Update 3在线升级工具3.87版.zip
    发表于 01-29 16:30 0次下载

    微星 Live Update 3在线升级工具3.98版

    微星 Live Update 3在线升级工具3.98版.zip
    发表于 02-03 14:55 0次下载

    华硕 Update自动升级BIOS程序7.07.06版

    华硕 Update自动升级BIOS程序7.07.06版.exe
    发表于 02-05 15:50 0次下载

    华硕 Update自动升级BIOS程序7.12.03版

    华硕 Update自动升级BIOS程序7.12.03版.zip
    发表于 02-05 15:51 0次下载

    MKT_Update_05.2

    MKT Update 05.2,有需要的下来看看。
    发表于 02-19 16:30 10次下载

    传微软Windows Creators Update 4月推出

    微软在不少活动上都说,着重 3D 内容和游戏直播的 Windows Creators Update,将会在 2017 年初上市,但一直不肯透露确切时间。根据 MSPoweruser 掌握到的消息,微软的 Windows 10 更新版本,Creators Update 将在
    发表于 01-03 17:28 531次阅读

    Vivado中综合实现和出bit文件步骤教程

    本文详解综合实现和出bit文件。各Block都搭建完成后,选中这个bd右键,Generate Output Products主要是把IP参数和连接信息update到project中,同时也会检查错误。
    的头像 发表于 07-05 01:21 3.7w次阅读
    Vivado中综合实现和出<b class='flag-5'>bit</b>文件步骤教程

    oracle的update语法

    Oracle是一种强大的关系型数据库管理系统,具有广泛的应用,UPDATE语句是用于修改数据库中现有记录的重要操作之一。在本文中,我们将详细介绍Oracle的UPDATE语法及其用法。 首先,我们
    的头像 发表于 12-05 16:22 855次阅读

    oracle update用法

    Oracle Update是Oracle数据库中的一个关键字,用于更新数据库表中的数据。 在Oracle数据库中,Update命令用于修改表中已存在的数据。该命令可以根据特定的条件来更新表中的数据
    的头像 发表于 12-06 09:57 2044次阅读