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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

AUTOSAR通信協(xié)議棧的一些關(guān)鍵概念及重要機(jī)制梳理

832065824 ? 來(lái)源:汽車(chē)電子嵌入式 ? 2023-01-31 09:24 ? 次閱讀

前言

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

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

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

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

正文

1.Lin報(bào)文的發(fā)送機(jī)制

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

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

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

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

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

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

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

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

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

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

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

分析Com_TriggerTransmit函數(shù)

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

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

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

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

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

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

如果我們使用Can網(wǎng)絡(luò)管理的話(huà),那么Can網(wǎng)絡(luò)管理報(bào)文由CanNm模塊控制發(fā)送,而應(yīng)用報(bào)文的發(fā)送是由Com模塊和ComM模塊協(xié)同管理發(fā)送的,那么問(wèn)題就來(lái)了:

NM報(bào)文由CanNm模塊控制發(fā)送,App報(bào)文由Com/ComM模塊控制發(fā)送,那么我們?cè)趺幢WC每次上電/Reset后NM報(bào)文首先發(fā)送到總線(xiàn)上去了?

AUTOSAR標(biāo)準(zhǔn)里面沒(méi)有規(guī)定NM報(bào)文和APP報(bào)文誰(shuí)先發(fā)送出去的配置。但是NM模塊提供了一個(gè)

Std_ReturnType Nm_GetState(

NetworkHandleType nmNetworkHandle,

Nm_StateType* nmStatePtr,

Nm_ModeType* nmModePtr

)

接口可以獲取當(dāng)前NM模式和狀態(tài),如果我們?cè)谡?qǐng)求ComM到FullCom前先確包NM模式進(jìn)入到Network狀態(tài)的話(huà),那么NM報(bào)文一定會(huì)在APP報(bào)文之前發(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.問(wèn)題回答

問(wèn)題1:Lin數(shù)據(jù)由Linif的調(diào)度表觸發(fā)發(fā)送的話(huà),com怎么控制所有Lin報(bào)文所在的PDU的停止和發(fā)送了?

:LinIf通過(guò)LinIf_MainFunction --> PduR_LinIfTriggerTransmit --> Com_TriggerTransmit獲取Lin報(bào)文的PDU數(shù)據(jù),如果獲取失敗則不會(huì)調(diào)用LinIf_SendFrame發(fā)送報(bào)文。而Com_TriggerTransmit函數(shù)在獲取PDU數(shù)據(jù)時(shí)首先會(huì)檢查PDU所在的PduGroup是否Started,如果沒(méi)有Started則Com_TriggerTransmit返回E_NOT_OK,最終LinIf_MainFunction停止往驅(qū)動(dòng)發(fā)送報(bào)文,也就停發(fā)Lin報(bào)文。

也就是說(shuō),我們通過(guò)BswM調(diào)用Com模塊提供的Com_IpduGroupStart,Com_IpduGroupStop同樣能控制Lin報(bào)文的停止和發(fā)送。

問(wèn)題2:怎么保證NM報(bào)文先發(fā)送的?

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






審核編輯:劉清

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

    關(guān)注

    145

    文章

    1911

    瀏覽量

    130572
  • AUTOSAR
    +關(guān)注

    關(guān)注

    10

    文章

    349

    瀏覽量

    21447
  • PDU
    PDU
    +關(guān)注

    關(guān)注

    0

    文章

    93

    瀏覽量

    16949
  • LIN
    LIN
    +關(guān)注

    關(guān)注

    4

    文章

    214

    瀏覽量

    40217
  • 通信協(xié)議棧
    +關(guān)注

    關(guān)注

    0

    文章

    7

    瀏覽量

    6166

原文標(biāo)題:AUTOSAR 通信協(xié)議棧的幾個(gè)問(wèn)題(一)

文章出處:【微信號(hào):汽車(chē)電子嵌入式,微信公眾號(hào):汽車(chē)電子嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    PLC控制系統(tǒng)的通信協(xié)議解析

    在現(xiàn)代工業(yè)自動(dòng)化中,PLC控制系統(tǒng)扮演著至關(guān)重要的角色。它們不僅需要處理復(fù)雜的邏輯控制任務(wù),還需要與其他系統(tǒng)和設(shè)備進(jìn)行通信。為了實(shí)現(xiàn)這目標(biāo),PLC系統(tǒng)必須遵循系列的
    的頭像 發(fā)表于 11-08 09:46 ?143次閱讀

    PROFINET通信協(xié)議是什么

    PROFINET通信協(xié)議種專(zhuān)為工業(yè)自動(dòng)化領(lǐng)域設(shè)計(jì)的基于以太網(wǎng)的實(shí)時(shí)通信協(xié)議。以下是對(duì)PROFINET通信協(xié)議的詳細(xì)解析,包括其定義、特點(diǎn)、體系結(jié)構(gòu)、工作原理、
    的頭像 發(fā)表于 09-25 18:13 ?803次閱讀

    Linux網(wǎng)絡(luò)協(xié)議的實(shí)現(xiàn)

    網(wǎng)絡(luò)協(xié)議是操作系統(tǒng)核心的個(gè)重要組成部分,負(fù)責(zé)管理網(wǎng)絡(luò)通信中的數(shù)據(jù)包處理。在 Linux 操作系統(tǒng)中,網(wǎng)絡(luò)
    的頭像 發(fā)表于 09-10 09:51 ?242次閱讀
    Linux網(wǎng)絡(luò)<b class='flag-5'>協(xié)議</b><b class='flag-5'>棧</b>的實(shí)現(xiàn)

    SPI通信協(xié)議的基本概念和工作模式

    接口設(shè)計(jì),在嵌入式系統(tǒng)、微控制器與各種外圍設(shè)備之間的通信中占據(jù)重要地位。以下是對(duì)SPI通信協(xié)議的詳細(xì)解析,內(nèi)容涵蓋其基本概念、通信原理、信號(hào)
    的頭像 發(fā)表于 09-09 17:04 ?803次閱讀

    簡(jiǎn)單認(rèn)識(shí)UART通信協(xié)議

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

    高速串行通信協(xié)議都有哪些

    高速串行通信協(xié)議是現(xiàn)代電子設(shè)備中用于數(shù)據(jù)傳輸?shù)?b class='flag-5'>關(guān)鍵技術(shù)。這些協(xié)議在各種應(yīng)用中發(fā)揮著重要作用,如計(jì)算機(jī)、移動(dòng)設(shè)備、網(wǎng)絡(luò)設(shè)備等。以下是一些常見(jiàn)的
    的頭像 發(fā)表于 05-31 16:11 ?951次閱讀

    epa通信協(xié)議是什么?epa協(xié)議介紹

    的以太網(wǎng)協(xié)議進(jìn)行了許多優(yōu)化和擴(kuò)展,以滿(mǎn)足現(xiàn)場(chǎng)自動(dòng)化設(shè)備的高可靠性、實(shí)時(shí)性和安全性要求。與傳統(tǒng)的以太網(wǎng)不同,EPA提供了對(duì)工業(yè)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)、實(shí)時(shí)通信機(jī)制、故障恢復(fù)和安全性的特殊支持。 EPA協(xié)議
    的頭像 發(fā)表于 05-08 14:16 ?416次閱讀

    epa通信協(xié)議是什么?epa協(xié)議介紹

    的以太網(wǎng)協(xié)議進(jìn)行了許多優(yōu)化和擴(kuò)展,以滿(mǎn)足現(xiàn)場(chǎng)自動(dòng)化設(shè)備的高可靠性、實(shí)時(shí)性和安全性要求。與傳統(tǒng)的以太網(wǎng)不同,EPA提供了對(duì)工業(yè)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)、實(shí)時(shí)通信機(jī)制、故障恢復(fù)和安全性的特殊支持。 EPA協(xié)議
    的頭像 發(fā)表于 04-23 14:21 ?743次閱讀

    有關(guān)DP通信一些問(wèn)題求教?

    變頻器和上位機(jī)在進(jìn)行DP通信時(shí),有好幾個(gè)問(wèn)題不太理解,包括一些軟件理論和硬件電路搭建的問(wèn)題請(qǐng)教。 1、通信協(xié)議是什么,我認(rèn)為的通信協(xié)議是兩臺(tái)或多臺(tái)可以進(jìn)行數(shù)據(jù)收發(fā)的設(shè)備進(jìn)行溝通的語(yǔ)言標(biāo)
    發(fā)表于 03-31 23:23

    一些有關(guān)通信電路的資料?

    有關(guān)嵌入式之間DSP、ARM、FPGA三者之間和這三款芯片和外部電路之間通信一些資料,比如說(shuō)芯片之間的并行通信和芯片和外部電路之間的串行通信,MODBUS、DP、CAN等,
    發(fā)表于 03-03 18:53

    AUTOSAR平臺(tái)研究報(bào)告:國(guó)產(chǎn)基礎(chǔ)軟件+芯片全方案加快量產(chǎn)

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

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

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

    網(wǎng)絡(luò)通信協(xié)議概念作用和三要素

    網(wǎng)絡(luò)通信協(xié)議定義了數(shù)據(jù)在傳輸過(guò)程中的錯(cuò)誤檢測(cè)、糾錯(cuò)和重傳機(jī)制,以確保數(shù)據(jù)的完整性和準(zhǔn)確性。通過(guò)協(xié)議規(guī)定的校驗(yàn)和校驗(yàn)、序列號(hào)和確認(rèn)機(jī)制等,能夠檢測(cè)和糾正傳輸中的錯(cuò)誤,并確保數(shù)據(jù)能夠可靠地
    發(fā)表于 02-01 10:56 ?1274次閱讀

    有關(guān)通信協(xié)議時(shí)一些問(wèn)題?

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

    從Profinet到CCLink:工業(yè)通信協(xié)議的轉(zhuǎn)換實(shí)踐

    準(zhǔn)確的解決方案。 隨著工業(yè)技術(shù)的發(fā)展,不同的通信協(xié)議在工業(yè)設(shè)備通信中發(fā)揮著重要作用。Profinet和CCLinkIE是兩種常見(jiàn)的工業(yè)通信協(xié)議,各自具有獨(dú)特的特性和優(yōu)勢(shì)。有時(shí)我們需要在這兩種協(xié)
    發(fā)表于 12-15 14:26