日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

汽车电子学习笔记---AutoSAR概述

發布時間:2023/12/16 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 汽车电子学习笔记---AutoSAR概述 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

汽車電子學習筆記—AutoSAR概述

  • 1、概述

Automotive Open System ARchitecture,汽車開放系統架構

  • 2、架構
    1)架構圖

    2)詳細描述

  • 應用軟件層(AppL)
    由一個個SWC組成的,如車窗,鎖,車燈等,每個SWC咱們可以理解為一個.c文件

  • 實時運行環境(RTE)
    1)可以理解成一個中間層,負責各模塊中轉調用和管理,將BSW和SWC做隔絕,使SWC與ECU的映射無關
    2)將一個SWC的信息通過RTE連接到其他SWC或者BSW上
    4)在Vector的工具鏈中,RTE是自動生成的
    5)作用:

    • 提供 跨ECU / ECU內部 的通信管理,實現SWC之間的通信
    • 提供 對runnable的管理功能(觸發、喚醒等,簡單說就是runnable需要映射到Task上運行嘛,而這個映射就是通過RTE具體實現的)
    • RTE就是VFB(虛擬功能總線)的具體實現
    • 配置OS的一部分(tasks, events, alarms)
    • 抽象了OS,防止SWC直接訪問OS和BSW
  • 基礎軟件層(BSW)

    a)硬件抽象層(MCAL)
    硬件抽象層又叫MCAL,就是將芯片的寄存器操作都封裝成一個AutoSAR規定的統一的庫Api,或者說將芯片上的功能都封裝稱一個一個的AutoSAR規定定義的API函數,供上層調用。

    • 目的:使上層軟件與微處理器型號無關
    • 功能:包含MCU中內部外設的驅動和使用MCU內存映射的外部設備的驅動

    b)ECU抽象層
    對ECU上包括主芯片在內的所有設備的封裝,這些設備其實也是要通過主芯片控制的,如外置存儲,外置看門狗等,需要和主芯片相連接,由主芯片的接口去配置它。因此,其底層還是需要MCAL的支持

    • 目的:使上層軟件與ECU硬件設計無關
    • 功能:包含ECU板上外部設備的驅動和內部設備與外部設備的接口(I/O)

    c)服務層
    將所有與硬件相關的功能都抽象成一個具體應用服務,如通信,這里就將CAN、I2C和串口等一系列的通信統一抽象稱COM通信,應用層可以無需知道該通信具體是走哪種通信方式

    • 目的:提供給應用程序可用的服務
    • 功能:服務層里是包含操作系統的功能、車輛網絡通信管理服務、存儲器服務(NVRAM管理)、診斷服務(包括UDS通信、錯誤存儲和故障處理)、ECU狀態管理,模式管理、邏輯和時間程序流監控(Wdg管理器)、密碼服務(密碼服務管理)、調度管理(Schedule
      Manager) 功能劃分:系統服務、存儲器服務、通信服務

    d)復雜驅動
    又稱為CDD,主要工作是將AutoSAR未定義的一些功能封裝起來,給應用層提供接口來調用這些功能

    • 目的:提供復雜傳感器和執行器的驅動
    • 功能:重要的應用模塊可以直接訪問硬件資源,例如: 噴油量控制, 胎壓監測

3)詳細架構圖
4)工具
DaVinci Developer: 主要用來設計AppL的程序架構
DaVinci Configurator pro: 主要用來配置BSW和自動生成RTE的

5)接口類型

  • Send/Receiver(S/R)接口:傳輸數據。通過RTE傳輸數據,并且通過RTE管理數據的傳輸,避免數據出問題
Std_ReturnType Rte_Read_<port>_<data> (<DataType> *data) Std_ReturnType Rte_Write_<port>_<data> (<DataType> data) Com_SendSignal() Com_ReceiveSignal()
  • Client/Server(C/S)接口: 提供操作。就是Server提供函數供Client調用,可以同步或異步調用
FUNC(void, AppWindow_CODE) XXXX_XXXTrigSet(uint8 value) /* PRQA S 0624, 3206 */ /* MD_Rte_0624, MD_Rte_3206 */ { /*********************************************************************************************************************** DO NOT CHANGE THIS COMMENT! << Start of runnable implementation >> DO NOT CHANGE THIS COMMENT!* Symbol: PtWindowTrigSet_WindowTrigSet*********************************************************************************************************************/XXXAAATrigSetToBBB(value);/*********************************************************************************************************************** DO NOT CHANGE THIS COMMENT! << End of runnable implementation >> DO NOT CHANGE THIS COMMENT!*********************************************************************************************************************/ }

6)SWC
應用層的SWC:燈,門鎖,車窗…
BSW中的SWC:IO硬件抽象層(IoHwAb)、復雜驅動(Cdd)

7)Runnable

  • Runnable就是SWC中的入口函數,DaVinci軟件生成的時候,Runnable是空函數,需要手動添加代碼來實現其實際的功能
FUNC(void, AppWindow_CODE) AppWindowRunnable(void) {... ... }
  • Runnable實際是被task調用,具體可以在rte.c中查看到各個swc的runnable,被不同時間的task調用
TASK(Task10ms) {... ...AppEmsRunnable()AppLearnRunnable()... ...TASK(Task1ms) {... ...CddAmdRunnable(); IohInputRunnable1ms();... ... }TASK(Task20ms) {... ...AppDefrosterRunnable();AppPwrModRunnable();... ... }
  • 一個SWC可以配置多個不同時間的runnable
    不同SWC之間的通信,無論是ECU內部還是ECU之間,都不會遇到數據一致性問題,因為RTE會負責保證數據一致性。
    而同一個SWC,運行在不同task的runnable可能存在數據不一致性問題,解決辦法:
    a)專用區域(Exclusive Areas )

    b)內部變量(Inter-runnable variables)

  • Runnables的觸發條件
    a)RTE給runnables提供觸發條件,也就是runnable在設計的時候,需要有觸發條件,不然無法運行
    b)AutoSAR中主要規定了以下一些觸發條件(DaVinci軟件中的配置):

    初始化事件:初始化自動觸發
    定時器事件:給一個周期定時器,時間到了就觸發
    接收數據事件(S/R):Receiver Port 一旦收到數據,就觸發
    接收數據錯誤事件(S/R)
    數據發送完成事件(S/R):Send Port 發送完成,就觸發
    操作調用事件(C/S):當調用到了該函數的時候
    異步服務返回事件(C/S)
    模式切換事件
    模式切換應答事件

    c)DaVinci軟件中的配置項

總結

以上是生活随笔為你收集整理的汽车电子学习笔记---AutoSAR概述的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。