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

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

3天内不再提示

AUTOSAR通信协议栈的一些关键概念及重要机制梳理

832065824 来源:汽车电子嵌入式 2023-01-31 09:24 次阅读

前言

最近在研究AUTOSAR通信协议栈的时候产生了以下几个问题:

(1)Lin数据由linif的调度表触发发送的话,com怎么控制Lin类型的PDU停止和发送了?

(2)怎么保证NM报文先发送的?

本文先梳理一遍通信协议栈的一些关键概念及重要机制,然后回答这些问题。

正文

1.Lin报文的发送机制

Lin报文的发送机制在<<Can/Lin报文的触发发送(Trigger Transmit) >>一文中已经详细讲解过,这里再简单回顾下。

da97f4b6-a098-11ed-bfe3-dac502259ad0.png

Lin报文的周期发送是通过调度表实现的,而Lin调度表存在于LinIf模块,LinIf模块在周期调用调度表的时候通过callback的方式实现IPDU的trigger transmit,也就是向上获取到sdu数据,然后调用Lin_SendFrame发送报文。调度表中的报文都是需要周期发送处理的报文,对于偶发sporadic frame的发送,COM --> PDUR -->CanIf_Transmit中设置发送flag,实现偶发帧发送。我们这里主要讨论Lin周期报文的发送机制。

daba90fc-a098-11ed-bfe3-dac502259ad0.png

daf4cfba-a098-11ed-bfe3-dac502259ad0.png

LinIf模块实现Lin调度表中报文的周期发送,且所有报文都是通过调用pdur模块的PduR_TriggerTransmit的callback函数完成sdu数据的获取。

db0c7e3a-a098-11ed-bfe3-dac502259ad0.png

db350562-a098-11ed-bfe3-dac502259ad0.png

LinIf模块调用PduR_LinIfTriggerTransmit函数来获取PDU数据,如果获取数据成功,则调用LinIf_SendFrame往LinDriver发送数据,如果获取数据失败则不会发送Lin报文。

那也就是说,如果找到PduR_LinIfTriggerTransmit返回失败的原因也就找到了LinIf停止发送报文的原因。

继续往下分析PduR_LinIfTriggerTransmit函数,PduR_LinIfTriggerTransmit --> Com_TriggerTransmit

分析Com_TriggerTransmit函数

db4bfc72-a098-11ed-bfe3-dac502259ad0.png

db741b80-a098-11ed-bfe3-dac502259ad0.png

Com_TriggerTransmit函数会首先会检查PDU所在的PduGroup是否Started了,如果没有Started,则Com_TriggerTransmit函数返回E_NOT_OK。、

也就是说如果PDU所在的PduGroup没有Started则Com_TriggerTransmit返回E_NOT_OK,PduR_LinIfTriggerTransmit返回失败,则LinIf_ManiFunction_<>不会往LinDriver发送数据。

2.NM报文和App报文的发送

db8aa13e-a098-11ed-bfe3-dac502259ad0.png

如果我们使用Can网络管理的话,那么Can网络管理报文由CanNm模块控制发送,而应用报文的发送是由Com模块和ComM模块协同管理发送的,那么问题就来了:

NM报文由CanNm模块控制发送,App报文由Com/ComM模块控制发送,那么我们怎么保证每次上电/Reset后NM报文首先发送到总线上去了

AUTOSAR标准里面没有规定NM报文和APP报文谁先发送出去的配置。但是NM模块提供了一个

Std_ReturnType Nm_GetState(

NetworkHandleType nmNetworkHandle,

Nm_StateType* nmStatePtr,

Nm_ModeType* nmModePtr

)

接口可以获取当前NM模式和状态,如果我们在请求ComM到FullCom前先确包NM模式进入到Network状态的话,那么NM报文一定会在APP报文之前发送出去。

Example:

Nm_StateType NmCurrentState;


Nm_ModeType NmCurrentMode; Nm_GetState(ComMConf_ComMChannel_ComMChannel_Can_Network_0,&NmCurrentState,&NmCurrentMode);


if(( NM_MODE_SYNCHRONIZE == NmCurrentMode )||( NM_MODE_NETWORK == NmCurrentMode ))


{


    ComM_RequestComMode(ComMConf_ComMUser_ComMUser_Can_Network_0,COMM_FULL_COMMUNICATION);


    ComM_RequestComMode(ComMConf_ComMUser_ComMUser_Can_Network_1,COMM_FULL_COMMUNICATION);


}

3.问题回答

问题1:Lin数据由Linif的调度表触发发送的话,com怎么控制所有Lin报文所在的PDU的停止和发送了?

:LinIf通过LinIf_MainFunction --> PduR_LinIfTriggerTransmit --> Com_TriggerTransmit获取Lin报文的PDU数据,如果获取失败则不会调用LinIf_SendFrame发送报文。而Com_TriggerTransmit函数在获取PDU数据时首先会检查PDU所在的PduGroup是否Started,如果没有Started则Com_TriggerTransmit返回E_NOT_OK,最终LinIf_MainFunction停止往驱动发送报文,也就停发Lin报文。

也就是说,我们通过BswM调用Com模块提供的Com_IpduGroupStart,Com_IpduGroupStop同样能控制Lin报文的停止和发送

问题2:怎么保证NM报文先发送的?

:需要手写代码或者通过BswM模式控制和仲裁实现。具体就是在请求APP报文所在Network进入到FullCom之前确保NM模式已经进入了NetWork状态。






审核编辑:刘清

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

    关注

    145

    文章

    1950

    浏览量

    130734
  • AUTOSAR
    +关注

    关注

    10

    文章

    360

    浏览量

    21559
  • PDU
    PDU
    +关注

    关注

    0

    文章

    94

    浏览量

    16978
  • LIN
    LIN
    +关注

    关注

    4

    文章

    216

    浏览量

    40277
  • 通信协议栈
    +关注

    关注

    0

    文章

    7

    浏览量

    6170

原文标题:AUTOSAR 通信协议栈的几个问题(一)

文章出处:【微信号:汽车电子嵌入式,微信公众号:汽车电子嵌入式】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    AUTOSAR通信对自动驾驶的影响 AUTOSAR通信与嵌入式系统设计

    AUTOSAR通信与嵌入式系统设计紧密相连,共同推动着自动驾驶威廉希尔官方网站 的发展。 AUTOSAR通信对自动驾驶的影响 提高通信效率和可靠性
    的头像 发表于 12-17 15:09 244次阅读

    AUTOSAR通信实现中的常见问题

    AUTOSAR(Automotive Open System Architecture)汽车开放系统架构旨在实现汽车电子的软硬件分离,降低ECU软件开发的复杂度,提高软件可重用性。 通信协议
    的头像 发表于 12-17 15:03 255次阅读

    AUTOSAR通信框架的优势 AUTOSAR通信实例与应用场景

    一些主要优势: 标准化 :AUTOSAR通信框架提供了套标准化的接口和协议,这有助于不同供应商之间的软件组件
    的头像 发表于 12-17 14:58 210次阅读

    AUTOSAR通信与CAN协议的关系

    AUTOSAR通信模型: AUTOSAR定义了个分层的软件架构,其中包括应用层、基础软件层和微控制器抽象层。在这些层中,通信模型是实现EC
    的头像 发表于 12-17 14:57 152次阅读

    AUTOSAR通信协议解析 如何实现AUTOSAR通信

    通信协议个复杂的系统,它涵盖了多种通信方式和模块,以实现车内ECU之间的高效、可靠的数据交换。以下是对AUTOSAR
    的头像 发表于 12-17 14:54 366次阅读

    串口通信协议解析 串口通信应用实例

    串口通信协议解析 串口通信协议是指规定了数据包的内容,内容包含了起始位、主体数据、校验位及停止位,双方需要约定致的数据包格式才能正常收发数据的有关规范。以下是串口通信协议的介绍: 基
    的头像 发表于 11-21 17:03 491次阅读

    PROFINET通信协议是什么

    PROFINET通信协议种专为工业自动化领域设计的基于以太网的实时通信协议。以下是对PROFINET通信协议的详细解析,包括其定义、特点、体系结构、工作原理、
    的头像 发表于 09-25 18:13 1535次阅读

    SPI通信协议的基本概念和工作模式

    接口设计,在嵌入式系统、微控制器与各种外围设备之间的通信中占据重要地位。以下是对SPI通信协议的详细解析,内容涵盖其基本概念通信原理、信号
    的头像 发表于 09-09 17:04 1378次阅读

    高速串行通信协议都有哪些

    高速串行通信协议是现代电子设备中用于数据传输的关键威廉希尔官方网站 。这些协议在各种应用中发挥着重要作用,如计算机、移动设备、网络设备等。以下是一些常见的
    的头像 发表于 05-31 16:11 1080次阅读

    epa通信协议是什么?epa协议介绍

    的以太网协议进行了许多优化和扩展,以满足现场自动化设备的高可靠性、实时性和安全性要求。与传统的以太网不同,EPA提供了对工业网络拓扑结构、实时通信机制、故障恢复和安全性的特殊支持。 EPA协议
    的头像 发表于 05-08 14:16 506次阅读

    epa通信协议是什么?epa协议介绍

    的以太网协议进行了许多优化和扩展,以满足现场自动化设备的高可靠性、实时性和安全性要求。与传统的以太网不同,EPA提供了对工业网络拓扑结构、实时通信机制、故障恢复和安全性的特殊支持。 EPA协议
    的头像 发表于 04-23 14:21 889次阅读

    一些有关通信电路的资料?

    有关嵌入式之间DSP、ARM、FPGA三者之间和这三款芯片和外部电路之间通信一些资料,比如说芯片之间的并行通信和芯片和外部电路之间的串行通信,MODBUS、DP、CAN等,
    发表于 03-03 18:53

    AUTOSAR平台研究报告:国产基础软件+芯片全方案加快量产

    2023年12月7日,AUTOSAR组织发布了最新版本AUTOSAR R23-11标准,从功能角度方面,更新主要集中在信息安全、功能安全以及通信协议等三个方面。
    的头像 发表于 02-21 15:30 3031次阅读
    <b class='flag-5'>AUTOSAR</b>平台研究报告:国产基础软件+芯片全<b class='flag-5'>栈</b>方案加快量产

    PROFINET协议通信威廉希尔官方网站 介绍

    PROFINET协议是PROFINET通信协议的实现基础,它由多个层次组成,每个层次都有特定的功能和作用。
    的头像 发表于 02-03 16:22 2465次阅读

    有关通信协议一些问题?

    工业上应用到许多种协议,按通信时刻发送的数据位数分为串行通信和并行通信,首先我见并行通信多在
    发表于 01-14 00:58