0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

AUTOSAR LIN通信協(xié)議棧怎么保證NM報文先發(fā)送的?

汽車ECU開發(fā) ? 來源:汽車電子嵌入式 ? 2023-02-02 10:19 ? 次閱讀

前言

最近在研究AUTOSAR通信協(xié)議棧的時候產(chǎn)生了以下幾個問題:

(1)Lin數(shù)據(jù)由linif的調(diào)度表觸發(fā)發(fā)送的話,com怎么控制Lin類型的PDU停止和發(fā)送了?

(2)怎么保證NM報文先發(fā)送的?

本文先梳理一遍通信協(xié)議棧的一些關鍵概念及重要機制,然后回答這些問題。

正文

1.Lin報文的發(fā)送機制

Lin報文的發(fā)送機制在<<Can/Lin報文的觸發(fā)發(fā)送(Trigger Transmit) >>一文中已經(jīng)詳細講解過,這里再簡單回顧下。

16824096-a29a-11ed-bfe3-dac502259ad0.png

Lin報文的周期發(fā)送是通過調(diào)度表實現(xiàn)的,而Lin調(diào)度表存在于LinIf模塊,LinIf模塊在周期調(diào)用調(diào)度表的時候通過callback的方式實現(xiàn)IPDU的trigger transmit,也就是向上獲取到sdu數(shù)據(jù),然后調(diào)用Lin_SendFrame發(fā)送報文。調(diào)度表中的報文都是需要周期發(fā)送處理的報文,對于偶發(fā)sporadic frame的發(fā)送,COM --> PDUR -->CanIf_Transmit中設置發(fā)送flag,實現(xiàn)偶發(fā)幀發(fā)送。我們這里主要討論Lin周期報文的發(fā)送機制。

1693418e-a29a-11ed-bfe3-dac502259ad0.png

16b34ed4-a29a-11ed-bfe3-dac502259ad0.png

LinIf模塊實現(xiàn)Lin調(diào)度表中報文的周期發(fā)送,且所有報文都是通過調(diào)用pdur模塊的PduR_TriggerTransmit的callback函數(shù)完成sdu數(shù)據(jù)的獲取。

16c5e59e-a29a-11ed-bfe3-dac502259ad0.png

16e314e8-a29a-11ed-bfe3-dac502259ad0.png

LinIf模塊調(diào)用PduR_LinIfTriggerTransmit函數(shù)來獲取PDU數(shù)據(jù),如果獲取數(shù)據(jù)成功,則調(diào)用LinIf_SendFrame往LinDriver發(fā)送數(shù)據(jù),如果獲取數(shù)據(jù)失敗則不會發(fā)送Lin報文。

那也就是說,如果找到PduR_LinIfTriggerTransmit返回失敗的原因也就找到了LinIf停止發(fā)送報文的原因。

繼續(xù)往下分析PduR_LinIfTriggerTransmit函數(shù),PduR_LinIfTriggerTransmit --> Com_TriggerTransmit

分析Com_TriggerTransmit函數(shù)

16f2a282-a29a-11ed-bfe3-dac502259ad0.png

17044910-a29a-11ed-bfe3-dac502259ad0.png

Com_TriggerTransmit函數(shù)會首先會檢查PDU所在的PduGroup是否Started了,如果沒有Started,則Com_TriggerTransmit函數(shù)返回E_NOT_OK。、

也就是說如果PDU所在的PduGroup沒有Started則Com_TriggerTransmit返回E_NOT_OK,PduR_LinIfTriggerTransmit返回失敗,則LinIf_ManiFunction_<>不會往LinDriver發(fā)送數(shù)據(jù)。

2.NM報文和App報文的發(fā)送

171a1ae2-a29a-11ed-bfe3-dac502259ad0.png

如果我們使用Can網(wǎng)絡管理的話,那么Can網(wǎng)絡管理報文由CanNm模塊控制發(fā)送,而應用報文的發(fā)送是由Com模塊和ComM模塊協(xié)同管理發(fā)送的,那么問題就來了:

NM報文由CanNm模塊控制發(fā)送,App報文由Com/ComM模塊控制發(fā)送,那么我們怎么保證每次上電/Reset后NM報文首先發(fā)送到總線上去了

AUTOSAR標準里面沒有規(guī)定NM報文和APP報文誰先發(fā)送出去的配置。但是NM模塊提供了一個

Std_ReturnType Nm_GetState(

NetworkHandleType nmNetworkHandle,

Nm_StateType* nmStatePtr,

Nm_ModeType* nmModePtr

)

接口可以獲取當前NM模式和狀態(tài),如果我們在請求ComM到FullCom前先確包NM模式進入到Network狀態(tài)的話,那么NM報文一定會在APP報文之前發(fā)送出去。

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數(shù)據(jù)由Linif的調(diào)度表觸發(fā)發(fā)送的話,com怎么控制所有Lin報文所在的PDU的停止和發(fā)送了?

:LinIf通過LinIf_MainFunction --> PduR_LinIfTriggerTransmit --> Com_TriggerTransmit獲取Lin報文的PDU數(shù)據(jù),如果獲取失敗則不會調(diào)用LinIf_SendFrame發(fā)送報文。而Com_TriggerTransmit函數(shù)在獲取PDU數(shù)據(jù)時首先會檢查PDU所在的PduGroup是否Started,如果沒有Started則Com_TriggerTransmit返回E_NOT_OK,最終LinIf_MainFunction停止往驅(qū)動發(fā)送報文,也就停發(fā)Lin報文。也就是說,我們通過BswM調(diào)用Com模塊提供的Com_IpduGroupStart,Com_IpduGroupStop同樣能控制Lin報文的停止和發(fā)送

問題2:怎么保證NM報文先發(fā)送的?

:需要手寫代碼或者通過BswM模式控制和仲裁實現(xiàn)。具體就是在請求APP報文所在Network進入到FullCom之前確保NM模式已經(jīng)進入了NetWork狀態(tài)。






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • CAN總線
    +關注

    關注

    145

    文章

    1898

    瀏覽量

    130337
  • AUTOSAR
    +關注

    關注

    10

    文章

    339

    瀏覽量

    21360
  • PDU
    PDU
    +關注

    關注

    0

    文章

    92

    瀏覽量

    16901
  • LIN
    LIN
    +關注

    關注

    4

    文章

    212

    瀏覽量

    40128
  • 通信協(xié)議棧

    關注

    0

    文章

    7

    瀏覽量

    6165

原文標題:AUTOSAR LIN通信協(xié)議棧問題總結(jié)

文章出處:【微信號:eng2mot,微信公眾號:汽車ECU開發(fā)】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關推薦

    簡單認識UART通信協(xié)議

    UART(Universal Asynchronous Receiver/Transmitter,通用異步收發(fā)傳輸器)通信協(xié)議是一種常見的串行通信協(xié)議,廣泛應用于計算機、嵌入式系統(tǒng)、傳感器、無線通信
    的頭像 發(fā)表于 07-25 18:07 ?993次閱讀

    CAN報文為什么會發(fā)送失???

    CAN總線調(diào)試過程中出現(xiàn)報文發(fā)送失敗。很多工程師都對此只知其一不知其二,今天我們就以CAN報文發(fā)送失敗的問題來做一次探討。在了解CAN報文
    的頭像 發(fā)表于 04-12 08:25 ?1429次閱讀
    CAN<b class='flag-5'>報文</b>為什么會<b class='flag-5'>發(fā)送</b>失敗?

    UART串口通信協(xié)議是什么?

    ,廣泛應用于嵌入式領域。 在UART串口通信協(xié)議中,數(shù)據(jù)以字節(jié)的形式進行傳輸。發(fā)送和接收端的通信流程如下: 1、通信波特率設置:發(fā)送端和接收
    的頭像 發(fā)表于 03-19 17:26 ?964次閱讀

    AUTOSAR平臺研究報告:國產(chǎn)基礎軟件+芯片全方案加快量產(chǎn)

    2023年12月7日,AUTOSAR組織發(fā)布了最新版本AUTOSAR R23-11標準,從功能角度方面,更新主要集中在信息安全、功能安全以及通信協(xié)議等三個方面。
    的頭像 發(fā)表于 02-21 15:30 ?2459次閱讀
    <b class='flag-5'>AUTOSAR</b>平臺研究報告:國產(chǎn)基礎軟件+芯片全<b class='flag-5'>棧</b>方案加快量產(chǎn)

    串行通信協(xié)議的帶寬是指什么?

    在SPI和I2C等串行通信協(xié)議,兩者帶寬不一樣,這里的帶寬是指什么,傳輸速率還是其他什么?如果要求很高的傳輸速率,那么要求發(fā)送端要能很快的發(fā)送數(shù)據(jù),要有很短的上升沿下降沿時間,高低位電平也維持很短
    發(fā)表于 02-08 18:04

    PROFINET協(xié)議通信技術(shù)介紹

    PROFINET協(xié)議是PROFINET通信協(xié)議的實現(xiàn)基礎,它由多個層次組成,每個層次都有特定的功能和作用。
    的頭像 發(fā)表于 02-03 16:22 ?2213次閱讀

    工業(yè)控制通信協(xié)議報文幀分別是什么樣的?

    那樣先存儲起來,不知道我對同步異步通信的理解是否正確? 2、這些協(xié)議下的通信設備發(fā)送數(shù)據(jù)的格式多種多樣,請問每種協(xié)議
    發(fā)表于 01-19 14:46

    有關通信協(xié)議時一些問題?

    工業(yè)上應用到許多種協(xié)議,按通信同一時刻發(fā)送的數(shù)據(jù)位數(shù)分為串行通信和并行通信,首先我見并行通信多在
    發(fā)表于 01-14 00:58

    AUTOSAR軟件AVB協(xié)議介紹

    以太網(wǎng)音視頻橋(AVB)協(xié)議 汽車以太網(wǎng)音視頻橋(AVB)協(xié)議是一種用于實現(xiàn)車載音視頻傳輸?shù)?b class='flag-5'>協(xié)議
    的頭像 發(fā)表于 10-27 16:44 ?2147次閱讀
    <b class='flag-5'>AUTOSAR</b>軟件AVB<b class='flag-5'>協(xié)議</b><b class='flag-5'>棧</b>介紹

    汽車UDS協(xié)議與XCP協(xié)議

    在車輛中進行故障診斷、參數(shù)配置和編程等操作。 UDS協(xié)議通常包含以下功能軟件: 通信層:負責處理UDS協(xié)議通信,包括CAN總線
    的頭像 發(fā)表于 10-27 16:35 ?3580次閱讀
    汽車UDS<b class='flag-5'>協(xié)議</b><b class='flag-5'>棧</b>與XCP<b class='flag-5'>協(xié)議</b><b class='flag-5'>棧</b>

    CAN協(xié)議LIN協(xié)議介紹

    CAN協(xié)議 汽車CAN協(xié)議是一種軟件組件,用于實現(xiàn)汽車電子系統(tǒng)中的CAN總線通信功能。它包含了一系列的功能軟件,用于處理CAN總線的物理
    的頭像 發(fā)表于 10-27 16:16 ?2578次閱讀
    CAN<b class='flag-5'>協(xié)議</b><b class='flag-5'>棧</b>與<b class='flag-5'>LIN</b><b class='flag-5'>協(xié)議</b><b class='flag-5'>棧</b>介紹

    AUTOSAR經(jīng)典平臺介紹

    汽車電子系統(tǒng)的軟件組件、運行時環(huán)境和通信機制,以實現(xiàn)模塊化、可重用和可擴展的系統(tǒng)開發(fā)。 在AUTOSAR CP中,軟件組件被分為應用軟件組件(SWC)和基礎軟件組件(BSW)。SWC是實現(xiàn)特定功能的軟件模塊,例如引擎控制、制動系統(tǒng)等。BSW是提供基礎功能和服務的軟件模塊,
    的頭像 發(fā)表于 10-27 15:30 ?1229次閱讀
    <b class='flag-5'>AUTOSAR</b>經(jīng)典平臺介紹

    YTM32的LIN通信協(xié)議引擎LinFlexD外設模塊詳解

    YTM32微控制器的LINFlexD外設模塊,實現(xiàn)了LIN協(xié)議控制器的功能,可以支持LIN總線協(xié)議的主機和從機功能。
    的頭像 發(fā)表于 10-08 11:15 ?1622次閱讀
    YTM32的<b class='flag-5'>LIN</b><b class='flag-5'>通信協(xié)議</b>引擎LinFlexD外設模塊詳解

    AUTOSAR實戰(zhàn)教程-通信協(xié)議介紹

    不同的DBC屬性決定不同功能的報文, 一般實際項目中涉及的報文為4類:應用報文,診斷報文,網(wǎng)絡管理報文,XCP
    的頭像 發(fā)表于 10-07 14:15 ?2649次閱讀
    <b class='flag-5'>AUTOSAR</b>實戰(zhàn)教程-<b class='flag-5'>通信協(xié)議</b><b class='flag-5'>棧</b>介紹

    LIN基礎知識和8位PIC單片機上實現(xiàn)的MCC LIN協(xié)議

    電子發(fā)燒友網(wǎng)站提供《LIN基礎知識和8位PIC單片機上實現(xiàn)的MCC LIN協(xié)議庫.pdf》資料免費下載
    發(fā)表于 09-25 14:56 ?12次下載
    <b class='flag-5'>LIN</b>基礎知識和8位PIC單片機上實現(xiàn)的MCC <b class='flag-5'>LIN</b><b class='flag-5'>協(xié)議</b><b class='flag-5'>棧</b>庫