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

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

3天內不再提示

淺析AutoSAR CAN Stack在配置工具中的實現(xiàn)

冬至子 ? 來源:Vehicle軟件開發(fā) ? 作者:KTing_CD ? 2023-06-14 14:26 ? 次閱讀

CAN****模塊的開發(fā)歷程

當時在開發(fā)MCAL相關模塊的時候,偶爾會看下CAN整個模塊的配置,由于CAN相關的模塊一直同事在配置,當時感覺內容好多,各種CANxxx模塊在配置工具里,感覺如果能有機會配置下的話一定是一件非常偉大的事情,到了18年年底,我終于分到了CAN模塊的配置任務,負責一個CAN通道的配置。由于前邊同事已經配置了一個通道,我在他基礎上繼續(xù)配置,當時我已經處于無人管理的狀態(tài)了,開始自己的瞎發(fā)揮,可能內容比較多,一直沒有配置好,嘗試了ECUM的Flex模式和Fix模式,手動修改了好多BSWM的Rules,當時也不是很懂,看程序在哪有問題就直接手動改代碼,后來問同事,也知道了一些注意的地方,然后我就開始擼代碼看,發(fā)現(xiàn)好多CAN通信的變量值沒變化,后來在地鐵上看COMM的AutoSAR文檔,發(fā)現(xiàn)需要請求通道的通信,當時瞬間感覺找到了問題的所在,果然第二天一大早早早去公司試了下,居然成功了,當時別提多開心了,在自己稀里糊涂的琢磨了大概一個月終于看到了CAN的信號,當時真的很開心,因為這算是我自己獨立搞出來的,成就感瞬間爆棚。也從這一刻開始心中對AutoSAR配置的害怕感漸漸的消失,大概從19年開始到7月份就一直在做CAN相關的配置。從CAN最底層的驅動到CANTrcv、CANIf、PDUR、COM、CANSM、ComM等基本的CAN相關的模塊都配置了解了一遍,雖然中間做了一些架構相關的工作也支持了別的項目的開發(fā),但是每天都會花點時間看一些CAN相關的技術資料,配一些基本的功能,并立馬調試、擼代碼、解決Bug,漸漸的對CAN通信在AutoSAR架構的實現(xiàn)理解也加深了。其中在CANSM的配置中也明白了CAN相關的BusOff以及恢復機制,雖然自己在大學學了一點CAN通信的東西,但一直到配置CAN模塊的時候才算有了全面的了解,之前也做過一些STM32的CAN通信的程序,但是當時也并沒有深入的研究,在和同事測試CAN BusOff以及恢復中漸漸的對CAN通信有了更深的理解,隨后也通過抓取CAN總線上的波形對數據和時間進行了分析,理解了CAN總線的空閑、校驗、位填充、位時間等概念。對于普通CAN信號不帶相關協(xié)議和網絡管理的信號)的傳輸模塊配置可參考之前的公眾號《淺析TC277CAN模塊在AutoSAR的應用》。

除了做基本的CAN信號的配置(不帶相關協(xié)議和網絡管理的信號),在那段時間里也完成了J1939TP、XCP以及CANNM的配置。在配置J1939TP的時候當時連基本的J1939協(xié)議也不是完全懂,在磕磕碰碰中實現(xiàn)了J1939TP的功能,后來也對J1939協(xié)議結合在AutoSAR的實現(xiàn)有了基本的認識,雖然不是很透徹,但是基本的原理和實現(xiàn)都明白了。其中走J1939TP的CAN信號在CANIf層后不能直接到PDUR層,必須要經過J1939TP這個模塊,然后將信號傳輸到PDUR,一般走特殊協(xié)議的CAN信號都會在CANIf與PDUR之間加一層特殊的協(xié)議模塊(J1939TP、UDS等)。

為了滿足一些測試的目的做了XCP的配置,在XCP的配置的過程中更加對AutoSAR的分層理念有了更深的理解,XCP的配置不同于其他的一般CAN信號,直接從CANIf層到XCP進行傳輸,然后與RTE、APP層進行交互。對CAN的一些基本的模塊配置完成后,發(fā)現(xiàn)診斷和網絡管理這兩部分也是比較重要的,時至今日,對于診斷模塊的配置也沒有深入的研究,只是簡單的看下課同事配置的CANTP和DCM的東西,這部分后期也會在公眾號內分享。網絡管理模塊大概是19年4月份做的吧,一開始自己對網絡管理和喚醒也不是很懂,剛開始認為喚醒就是網絡管理把CAN模塊的通信喚醒,只要CAN的通信能正常工作就達到了網絡管理和喚醒的目的,后來漸漸的提高了自己的認知,喚醒就是把MCU從睡眠的狀態(tài)進入到正常的工作模式,而網絡管理更是一種整車層面的多個ECU的進行通信的策略,在某些特定的情況下實現(xiàn)部分ECU的休眠減少消耗。

之后開始將CANNM和NM功能集成到了配置環(huán)境中,并嘗試了一些喚醒的功能,此時只是單純的CAN信號層面實現(xiàn)報文的收發(fā)和總線休眠,那個時侯由于自己對整個AutoSAR下的BSWM、ECUM、OS等模塊控制的下電過程還一無所知,因此只是實現(xiàn)了簡單的CAN信號的禁用和開啟,結合AutoSAR的網絡管理流程基本上能跑的通,一些網絡管理相關的狀態(tài)機可以根據自己的測試和外部條件進行轉換,后來自己做了整個系統(tǒng)的上下電功能后基本上也可以實現(xiàn)部分網絡管理和喚醒的功能了。一直延續(xù)到19年7月份,在利用一些零碎或者特定的時間段下基本上對CAN相關的AutoSAr模塊的整個配置(除了診斷)都熟悉了一遍。

在配置中有好幾個時間段確實遇到了比較大的挑戰(zhàn),并且那段時間手上還有別的任務,好幾次都在抱怨一群神經病發(fā)明了AutoSAR,大家好好手寫代碼不好嗎,抱怨也好,發(fā)牢騷也罷,想到自己身上的房貸,想到當初自己從機械專業(yè)轉入到汽車軟件開發(fā)的初衷,想到未來還有很多人也會有我這樣的煩躁和抱怨,就又老老實實的在看AutoSAR的技術手冊,開始通過各種途徑來請教別人,確實也得到了同事和好多未曾謀面人的幫助,這段配置階段,我就想以后一定要分享一些自己的問題和遇到的坑,盡可能的幫助那些像我一樣笨的AutoSAR開發(fā)工程師。有時候感覺從0做一些事情,對人的心理也是一個挑戰(zhàn)。經歷過整個CAN模塊的配置后,感覺心理上對AutoSAR的害怕或者迷茫也減少了,基本知道了它的一些方法論和小竅門,在AutoSAR的配置中自信心也漸漸的增強了,也更加的喜歡和堅定了自己的選擇。

說了幾句廢話,言歸正傳,下面簡單總結下CAN相關的模塊相關配置。

CAN

CAN模塊的配置主要配置CAN的中斷優(yōu)先級(中斷模式下使用)或者Polling模式下的周期處理函數;CAN消息在控制器中使用了多少個郵箱,進行收發(fā)數據;選擇硬件上CAN消息的通道;喚醒功能的使能;CAN的濾波器;CAN通信的時鐘;CANFD相關功能的配置等

CANTrcv

CANTrcv 模塊主要配置CANTrcv外部芯片,一般CANTrcv芯片有兩種模式,一種自帶喚醒功能的CANTrcv和不帶喚醒功能的CANTrcv。帶有喚醒CANTrcv模塊主要的是選擇和喚醒功能相關Pin腳,Pin腳要與硬件上與CANTrcv芯片相連的引腳一一對應。如果是不帶Wak功能的主要選擇Rx的Pin即可。

CANIf

CANIf模塊主要定義了上/下層的CAN信號在發(fā)送和接收時候的標準接口。AutoSAR中CANIf模塊一個重要的功能就是和WakeUp有密切的關系,要根據實際情況進行配置。CANIf模塊要對下層的CANDrv和CANTrcv進行定義,區(qū)分CANIf下層的交互模塊。如果CANIf中對應的CAN通道配置了CANTrcv則要選擇與之對應的CANTrcv通道,表明該CAN通道是通過CANTrcv發(fā)出去的,CANIf的狀態(tài)變換也是與CANTrcv密切相關的。如果沒有CANTrcv通道,那么該模塊中不需要添加相應的CANTrcv。CANIf要定義數據接收和發(fā)送的Buffer,對于CAN信號收發(fā)采用的郵箱也需要定義。同時支持回調函數功能;對于CAN信號在CANIf這一層對上面一層交互的模塊(XCP、PDUR、CANNM、CANTP/J1939等)也要定義清楚。根據實際信號在使用的時候的路由進行選擇即可,XCP的就選XCP,J1939協(xié)議的選擇J939TP等等。同時CANSM會對CANIf狀態(tài)進行控制,達到對CAN信號的使能和禁用。

CANSM

CANSM配置模塊中對CANSM與CANIf之間進行Mode邊變化的時間做了限制,同時定義了BusOff處理的相關時間參數。定義相關CAN模塊的BusOff段短恢復和長恢復機制。

COM

COM模塊主要為應用層(或者RTE)模塊提供信號傳輸的接口,提供的接口主要是以Signal的形式存在,同時也包含信號組的形式,信號組一般對應應用層的結構體變量,在COM層實現(xiàn)了Signal在I_PDU中的打包和解包;定義了信號傳輸的權限;信號傳輸的模式和信號傳輸的過濾器設置;信號傳輸的延遲時間;超時的監(jiān)控機制;與其他模塊的調用和被調用函數等。在COM層可以實現(xiàn)信號的組管理,實現(xiàn)信號使能或者禁用的成組控制。

ComM

ComM模塊的主要作用在于:實現(xiàn)對總線的管理和控制。如果網絡管理功能使能的情況下,實現(xiàn)對網絡管理模式的配置和選擇。

PDUR

在PDUR配置中,主要建立COM層與下面具體的傳輸層(CANTP、J1939、CANIf等)之間的路由。也可以將PDUR作為一個網關使用,實現(xiàn)不同ECU在PDUR層的信息傳遞,不需要再往上傳輸在APP做信號傳輸轉換的網關。

XCP

將與XCP相關的PDU進行關聯(lián),XCP的信號可以直接被RTE調用,根據XCP相關的協(xié)議在XCP的配置中定義好具體的內容,定義XCP處理的時間相關的參數,時間周期、時間基準等。同時將XCP通信的處理放到特定的處理事件中;定義具體的XCP實現(xiàn)方式(DAQ、STIM等)。

J1939TP

在J1939TP模塊中根據J1939協(xié)議的內容配置到具體的參數中即可。

CANNM

CANNM要關聯(lián)到具體的CAN通道,同時特定幀喚醒的情況下要關聯(lián)具體的CAN報文,定義周期的處理時間和超時時間等。根據實際的需求定義發(fā)送的網絡管理報文的具體內容,發(fā)送的網絡管理報文一般因OEM不同會有稍微的區(qū)別。對于PN網絡管理的相關參數根據具體的需求進行使能和不定義。

NM

NM模塊的主要適應ComM模塊和各種總線的NM模塊,實現(xiàn)函數的Call和Callback;定義是否使能總線網絡管理的協(xié)調機制,參考的ComM的總線通道;定義ShutDown的時間,定義總線的同步機制等。由于這個模塊是所有的總線相關的,在實際的配置中主要采用了它的CAN的網絡管理的請求和釋放通信功能。

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

    關注

    5

    文章

    97

    瀏覽量

    18279
  • AUTOSAR
    +關注

    關注

    10

    文章

    370

    瀏覽量

    22340
  • XCP
    XCP
    +關注

    關注

    0

    文章

    11

    瀏覽量

    11847
  • DAQ
    DAQ
    +關注

    關注

    6

    文章

    95

    瀏覽量

    32691
  • 過濾器
    +關注

    關注

    1

    文章

    436

    瀏覽量

    20128
收藏 1人收藏

    評論

    相關推薦
    熱點推薦

    AUTOSAR CAN網絡管理

    一、背景: AUTOSAR CAN網絡管理框架下,如果所有的節(jié)點都按照狀態(tài)機要求,ReadSleep狀態(tài)下停發(fā)NM幀,Prepare
    發(fā)表于 07-26 06:47

    在哪里可以找到CAN驅動程序的演示Autosar代碼呢

    我想獲得STM32F4VET6CAN驅動程序的演示Autosar代碼?在哪里可以找到呢
    發(fā)表于 12-13 08:10

    LLCE driver是否可以autosar os運行?

    S32DS、RTD和LLCE CAN驅動有對應的工具版本嗎?我想知道,LLCE driver是否可以autosar os運行,是否有關
    發(fā)表于 04-18 09:21

    AUTOSAR CAN時鐘同步問題

    請問有沒有AUTOSAR CAN時鐘同步的能運行的代碼,或者有沒有能做這一塊的大佬,主要是CanTsyn和STBM這兩個模塊的。有償,價格都好商量,急需。
    發(fā)表于 11-09 00:00

    AUTOSAR_SWS_CAN網絡管理規(guī)范標準4.3.1

    AUTOSAR_SWS_CAN網絡管理規(guī)范標準4.3.1
    發(fā)表于 03-28 17:02 ?13次下載

    CAN網絡管理規(guī)范 AUTOSAR CP中文版

    CAN網絡管理規(guī)范 AUTOSAR CP中文版免費下載。
    發(fā)表于 04-06 16:21 ?0次下載

    NvMAUTOSAR的層次結構

    AUTOSAR的NvM看起來挺難的,特別是配置的時候,一堆參數,都不知道是干什么用的。想去研究它,卻不知如何下手。其實吧,AUTOSAR
    的頭像 發(fā)表于 04-21 10:47 ?4790次閱讀

    AUTOSAR CAN網絡管理協(xié)議

    AUTOSAR_SWS_CANNetworkManagement AUTOSAR CAN網絡管理協(xié)議,4.4.0版本
    發(fā)表于 08-01 11:09 ?16次下載

    AutoSARCAN通信網絡管理的概述

    AutoSARCAN通信的網絡管理主要是根據CANNode接收和發(fā)送的NMMessage進行該節(jié)點在整個網絡的活動的,根據NM Message控制整個網絡對Normal模式和Sle
    的頭像 發(fā)表于 01-18 10:21 ?6677次閱讀
    <b class='flag-5'>AutoSAR</b><b class='flag-5'>中</b><b class='flag-5'>CAN</b>通信網絡管理的概述

    AUTOSAR配置的PostBuild、Precompile、Linktime

    AUTOSAR配置軟件,經??梢砸姷絇ostBuild、Precompile、Linktime這三個的影子,所以想搞清楚它們的區(qū)別,以及知道大概是干什么的。
    的頭像 發(fā)表于 07-17 14:56 ?6938次閱讀
    <b class='flag-5'>AUTOSAR</b><b class='flag-5'>配置</b><b class='flag-5'>中</b>的PostBuild、Precompile、Linktime

    一文解析AUTOSAR CAN網絡管理

    AUTOSAR CAN 網絡管理是一個獨立于硬件的協(xié)議,只能在 CAN 上使用。它的主要目的是協(xié)調網絡的正常運行和總線休眠模式之間的轉換。
    的頭像 發(fā)表于 09-09 10:32 ?6955次閱讀
    一文解析<b class='flag-5'>AUTOSAR</b> <b class='flag-5'>CAN</b>網絡管理

    AUTOSAR Builder—符合AUTOSAR(CPAP)的嵌入式系統(tǒng)設計工具

    AUTOSAR Builder是達索旗下一款基于Eclipse并使用Artop的可擴展工具套件。Artop是由AUTOSAR成員和合作伙伴共同推動的開放的AUTOSAR
    的頭像 發(fā)表于 01-08 18:06 ?829次閱讀
    <b class='flag-5'>AUTOSAR</b> Builder—符合<b class='flag-5'>AUTOSAR</b>(CPAP)的嵌入式系統(tǒng)設計<b class='flag-5'>工具</b>

    AUTOSAR通信與CAN協(xié)議的關系

    AUTOSAR通信模型: AUTOSAR定義了一個分層的軟件架構,其中包括應用層、基礎軟件層和微控制器抽象層。在這些層,通信模型是實現(xiàn)ECU之間通信的關鍵部分。
    的頭像 發(fā)表于 12-17 14:57 ?793次閱讀

    AUTOSAR通信堆棧的配置 AUTOSAR通信模塊測試方法

    )的開發(fā)和生產。通信堆棧是AUTOSAR架構的關鍵組成部分,負責處理ECU之間的通信。 AUTOSAR通信堆棧的配置 通信模型 :
    的頭像 發(fā)表于 12-17 15:01 ?739次閱讀

    AUTOSAR通信實現(xiàn)的常見問題

    AUTOSAR(Automotive Open System Architecture)汽車開放系統(tǒng)架構旨在實現(xiàn)汽車電子的軟硬件分離,降低ECU軟件開發(fā)的復雜度,提高軟件可重用性。 一、通信協(xié)議棧
    的頭像 發(fā)表于 12-17 15:03 ?879次閱讀

    電子發(fā)燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品