国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

    文章

    2043

    瀏覽量

    135228
  • AUTOSAR
    +關注

    關注

    10

    文章

    398

    瀏覽量

    23653
  • PDU
    PDU
    +關注

    關注

    0

    文章

    101

    瀏覽量

    17750
  • LIN
    LIN
    +關注

    關注

    4

    文章

    234

    瀏覽量

    41983
  • 通信協議棧
    +關注

    關注

    0

    文章

    7

    瀏覽量

    6283

原文標題:AUTOSAR 通信協議棧的幾個問題(一)

文章出處:【微信號:汽車電子嵌入式,微信公眾號:汽車電子嵌入式】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    三格電子13年老廠家,專注工業通訊#通信協議

    通信協議
    jf_68793483
    發布于 :2026年03月05日 09:32:44

    松下A6伺服通信協議介紹

    松下A6伺服通信協議是工業自動化領域中廣泛使用的種高性能通信標準,其設計旨在實現伺服驅動器與控制器之間的高效數據交互。該協議基于松下自主開發的通信
    的頭像 發表于 03-02 17:16 ?527次閱讀
    松下A6伺服<b class='flag-5'>通信協議</b>介紹

    機器人通信協議EtherCAT和CAN如何選擇

    當下,雖然行業中存在許多通信協議,但業內人士普遍認為,EtherCAT和CAN兩大協議,是機器人行業未來最重要的兩大協議
    的頭像 發表于 01-27 15:54 ?2548次閱讀

    車載以太網通信協議如何測?UT和SP聯手!

    引言在汽車以太網的通信測試中,面對復雜的協議分層與交互,個核心挑戰在于:如何高效、直接地對ECU內部的網絡層、傳輸層等協議實現進行驗證?
    的頭像 發表于 01-21 10:04 ?1620次閱讀
    車載以太網<b class='flag-5'>通信協議</b><b class='flag-5'>棧</b>如何測?UT和SP聯手!

    協議“老將”,連接工業智能的橋梁——文讀懂ModBus通信協議

    、什么是ModBus? ModBus是種串行通信協議,由Modicon公司(現施耐德電氣)于1979年推出,最初用于可編程邏輯控制器(PLC)之間的通信。如今,它已成為工業自動化領
    發表于 12-15 10:08

    通信協議IIC與SPI最全對比分析

    )通信協議,這意味著總線中的只有支中心設備能發起通信。當SPI主設備想讀/寫從設備時,它首先拉低從設備對應的SS線(SS是低電平有效),接著開始發送工作脈沖到時鐘線上,在相應的脈沖時間上,主設備把信號
    發表于 12-10 06:04

    SPI、I2C、I2S、UART:通信協議對比表

    ,有的不能?本文梳理清楚。通信協議快速對照表協議全稱線數通信方式速率應用場景特點SPIS
    的頭像 發表于 11-17 10:53 ?1739次閱讀
    SPI、I2C、I2S、UART:<b class='flag-5'>通信協議</b>對比表

    Xilinx FPGA串行通信協議介紹

    Xilinx FPGA因其高性能和低延遲,常用于串行通信接口設計。本文深入分析了Aurora、PCI Express和Serial RapidIO這三種在Xilinx系統設計中關鍵的串行通信協議。介紹了它們的特性、優勢和應用場景
    的頭像 發表于 11-14 15:02 ?2536次閱讀
    Xilinx FPGA串行<b class='flag-5'>通信協議</b>介紹

    如何使用FPGA實現SRIO通信協議

    本例程詳細介紹了如何在FPGA上實現Serial RapidIO(SRIO)通信協議,并通過Verilog語言進行編程設計。SRIO作為種高速、低延遲的串行互連技術,在高性能計算和嵌入式系統中廣
    的頭像 發表于 11-12 14:38 ?5768次閱讀
    如何使用FPGA實現SRIO<b class='flag-5'>通信協議</b>

    分布式能源并網的通信協議有哪些?

    ”“工業通用協議”“國內自主標準” 三大類別,梳理主流通信協議及其應用場景: 、國際標準協議(主流且通用性強) 這類
    的頭像 發表于 09-18 16:40 ?1576次閱讀
    分布式能源并網的<b class='flag-5'>通信協議</b>有哪些?

    如何實現安全的AUTOSAR通信

    隨著軟件定義汽車(SDV)理念的普及,車輛內部各電子控制單元(ECU)之間的通信已經突破傳統的控制邊界,成為支撐自動駕駛、高度互聯和OTA更新的關鍵基礎設施。在這樣的背景下,通信安全的重要
    的頭像 發表于 09-08 16:43 ?1238次閱讀

    工業通信協議都有哪些?#三格電子

    通信協議
    三格電子科技
    發布于 :2025年08月28日 10:35:26

    哪些協議是工業通信協議?#三格電子

    通信協議
    三格電子科技
    發布于 :2025年08月27日 14:16:07

    如何選擇適合自己項目的通信協議評估工具?

    驟的決策框架,結合項目關鍵變量(如協議類型、評估目標、資源約束等),幫助精準匹配工具: 、先明確 3 個核心決策前提:錨定選型方向 在選擇工具前,需先梳理項目的基礎約束,這是后續篩選
    的頭像 發表于 08-27 09:19 ?718次閱讀
    如何選擇適合自己項目的<b class='flag-5'>通信協議</b>評估工具?

    HIPERFACE DSL編碼器通信協議介紹

    在工業自動化和智能制造快速發展的今天,編碼器在各類設備中扮演著關鍵角色,精準的位置和速度反饋是確保系統高效、穩定運行的基礎。HIPERFACE DSL作為種先進的編碼器通信協議,正逐漸成為眾多工業
    的頭像 發表于 05-23 14:16 ?2185次閱讀
    HIPERFACE DSL編碼器<b class='flag-5'>通信協議</b>介紹