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

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

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

AUTOSAR通信協(xié)議棧的幾個(gè)問題(一)

832065824 ? 來源:汽車電子嵌入式 ? 2023-01-31 09:23 ? 次閱讀

前言

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

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

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

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

正文

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

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

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

Lin報(bào)文的周期發(fā)送是通過調(diào)度表實(shí)現(xiàn)的,而Lin調(diào)度表存在于LinIf模塊,LinIf模塊在周期調(diào)用調(diào)度表的時(shí)候通過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)文都是通過調(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ù)來獲取PDU數(shù)據(jù),如果獲取數(shù)據(jù)成功,則調(diào)用LinIf_SendFrame往LinDriver發(fā)送數(shù)據(jù),如果獲取數(shù)據(jù)失敗則不會(huì)發(fā)送Lin報(bào)文。

那也就是說,如果找到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了,如果沒有Started,則Com_TriggerTransmit函數(shù)返回E_NOT_OK。、

也就是說如果PDU所在的PduGroup沒有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ò)管理的話,那么Can網(wǎng)絡(luò)管理報(bào)文由CanNm模塊控制發(fā)送,而應(yīng)用報(bào)文的發(fā)送是由Com模塊和ComM模塊協(xié)同管理發(fā)送的,那么問題就來了:

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

AUTOSAR標(biāo)準(zhǔn)里面沒有規(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)的話,那么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.問題回答

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

:LinIf通過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,如果沒有Started則Com_TriggerTransmit返回E_NOT_OK,最終LinIf_MainFunction停止往驅(qū)動(dòng)發(fā)送報(bào)文,也就停發(fā)Lin報(bào)文。也就是說,我們通過BswM調(diào)用Com模塊提供的Com_IpduGroupStart,Com_IpduGroupStop同樣能控制Lin報(bào)文的停止和發(fā)送。

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

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

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

    關(guān)注

    10

    文章

    339

    瀏覽量

    21356
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4235

    瀏覽量

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

    關(guān)注

    4

    文章

    212

    瀏覽量

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

    關(guān)注

    0

    文章

    7

    瀏覽量

    6165
  • 報(bào)文
    +關(guān)注

    關(guān)注

    0

    文章

    34

    瀏覽量

    4004
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何實(shí)現(xiàn)基礎(chǔ)通信協(xié)議的設(shè)計(jì)?

    常見的通信協(xié)議格式是什么?如何實(shí)現(xiàn)基礎(chǔ)通信協(xié)議的設(shè)計(jì)?
    發(fā)表于 02-14 07:35

    EPA通信協(xié)議設(shè)計(jì)中的關(guān)鍵技術(shù)研究

    在EPA 通信協(xié)議設(shè)計(jì)中,內(nèi)存管理和定時(shí)器隊(duì)列管理是影響協(xié)議性能的重要方面。本文針對(duì)嵌入式系統(tǒng)下EPA 網(wǎng)絡(luò)的特點(diǎn),提出了分類鏈?zhǔn)絻?nèi)存隊(duì)列的動(dòng)態(tài)內(nèi)存管理方法和簡(jiǎn)單
    發(fā)表于 08-26 15:05 ?11次下載

    基于ARM的EPA通信協(xié)議優(yōu)化技術(shù)的研究與實(shí)現(xiàn)

    本文敘述基于ARM的EPA通信協(xié)議優(yōu)化技術(shù)的研究與實(shí)現(xiàn)的案例分析。
    發(fā)表于 10-13 16:48 ?32次下載
    基于ARM的EPA<b class='flag-5'>通信協(xié)議</b><b class='flag-5'>棧</b>優(yōu)化技術(shù)的研究與實(shí)現(xiàn)

    基于嵌入式的實(shí)時(shí)通信協(xié)議研究與設(shè)計(jì)

    傳統(tǒng)的TCP/IP協(xié)議重點(diǎn)在于保證數(shù)據(jù)傳輸?shù)目煽啃约傲髁靠刂疲趯?shí)時(shí)性要求相對(duì)較高的嵌入式領(lǐng)域, 其實(shí)時(shí)性方面的性能顯得不足。為此,對(duì)基于TCP/IP協(xié)議的嵌入式通信協(xié)議進(jìn)行了
    發(fā)表于 09-23 17:55 ?27次下載

    Modbus通信協(xié)議教程

    Modbus通信協(xié)議教程Modbus通信協(xié)議教程Modbus通信協(xié)議教程
    發(fā)表于 12-08 14:14 ?74次下載

    SCPI通信協(xié)議

    SCPI通信協(xié)議。
    發(fā)表于 05-04 17:54 ?179次下載

    在FPGA中實(shí)現(xiàn)嵌入式TCP/IP通信協(xié)議

    研究了嵌入式TCP/IP通信協(xié)議在Xilinx FPGA上的實(shí)現(xiàn),介紹了其軟硬件的系統(tǒng)組成和原理,提出種實(shí)時(shí)操作系統(tǒng)上TCP/IP協(xié)議
    發(fā)表于 11-17 17:05 ?7756次閱讀
    在FPGA中實(shí)現(xiàn)嵌入式TCP/IP<b class='flag-5'>通信協(xié)議</b><b class='flag-5'>棧</b>

    個(gè)簡(jiǎn)單的基礎(chǔ)通信協(xié)議的設(shè)計(jì)與實(shí)現(xiàn)

    個(gè)簡(jiǎn)單的基礎(chǔ)通信協(xié)議的設(shè)計(jì)與實(shí)現(xiàn)種常見的通信協(xié)議格式搭建串口收發(fā)環(huán)境配置STM32CubeMX添加USART部分代碼通信協(xié)議的實(shí)現(xiàn)不同設(shè)
    發(fā)表于 12-14 18:38 ?10次下載
    <b class='flag-5'>一</b>個(gè)簡(jiǎn)單的基礎(chǔ)<b class='flag-5'>通信協(xié)議</b>的設(shè)計(jì)與實(shí)現(xiàn)

    物聯(lián)網(wǎng)通信協(xié)議基礎(chǔ)知識(shí)合集

    本文介紹了幾個(gè)可用的物聯(lián)網(wǎng)通信協(xié)議,它們具有不同的性能、數(shù)據(jù)速率、覆蓋范圍、功率和內(nèi)存,而且每協(xié)議都有各自的優(yōu)點(diǎn)和或多或少的缺點(diǎn)。其中
    的頭像 發(fā)表于 03-23 14:32 ?1054次閱讀

    嵌入式開發(fā)常見通信協(xié)議

    本文介紹了幾個(gè)可用的物聯(lián)網(wǎng)通信協(xié)議,它們具有不同的性能、數(shù)據(jù)速率、覆蓋范圍、功率和內(nèi)存,而且每協(xié)議都有各自的優(yōu)點(diǎn)和或多或少的缺點(diǎn)。其中
    的頭像 發(fā)表于 02-28 17:03 ?1086次閱讀
    嵌入式開發(fā)常見<b class='flag-5'>通信協(xié)議</b>

    AUTOSAR通信協(xié)議配置詳解

    通訊協(xié)議幾乎是CP AUTOSAR中最龐雜的塊。由于其涉及的模塊比較多(僅實(shí)現(xiàn)CAN信號(hào)的收發(fā)就需要ECUC/CAN/CANIF/CANTP/PDUR/COM/XCP這么多模塊的協(xié)
    的頭像 發(fā)表于 09-21 10:02 ?4316次閱讀
    <b class='flag-5'>AUTOSAR</b>中<b class='flag-5'>通信協(xié)議</b><b class='flag-5'>棧</b>配置詳解

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

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

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

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

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

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

    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 ?2451次閱讀
    <b class='flag-5'>AUTOSAR</b>平臺(tái)研究報(bào)告:國(guó)產(chǎn)基礎(chǔ)軟件+芯片全<b class='flag-5'>棧</b>方案加快量產(chǎn)