汽车电子学习笔记—AutoSAR之基础软件层(BSW)
汽車電子學(xué)習(xí)筆記—AutoSAR之基礎(chǔ)軟件層(BSW)
- 1、概述
如之前autosar概述筆記中說明,BSW按照層級結(jié)構(gòu)可以分為服務(wù)層、ECU抽象層、硬件抽象層(MCAL)和復(fù)雜驅(qū)動層(CDD)。
- 硬件抽象層(MCAL)
主要包含了相關(guān)的Driver,通過該層次可以訪問MCU的資源,比如訪問整個芯片的CAN,LIN等控制器,配置MCU的Port腳,配置MCU的時鐘等。主要包含下面的內(nèi)容: MCU,PORT,DIO,ADC,SPI,CAN,LIN,FLEXRAY,PWM,ICU,OCU等
- ECU抽象層
底層驅(qū)動的抽象,同時它也是外設(shè)的驅(qū)動,它提供了可以訪問外設(shè)和底層MCU的接口,該層次主要包含了下面的內(nèi)容:CanIf,Can Transceiver Driver, MemIf, Fee, Ea, External Flash/EEPROM Driver, WdgIf等
- 服務(wù)層
包含操作系統(tǒng)的功能、車輛網(wǎng)絡(luò)通信管理服務(wù)、存儲器服務(wù)(NVRAM管理)、診斷服務(wù)(包括UDS通信、錯誤存儲和故障處理)、ECU狀態(tài)管理,模式管理、邏輯和時間程序流監(jiān)控(Wdg管理器)、密碼服務(wù)(密碼服務(wù)管理)、調(diào)度管理(Schedule Manager)
- 復(fù)雜驅(qū)動
跨越于微控制器硬件層和RTE之間,其主要任務(wù)是整合具有特殊目的且不能用MCAL進行配置的非標(biāo)準(zhǔn)功能模塊,將該部分功能嵌入到AUTOSAR基礎(chǔ)軟件層中,從而實現(xiàn)處理復(fù)雜傳感器以及執(zhí)行器的特定功能和時間要求。復(fù)雜驅(qū)動程序跟單片機和ECU硬件緊密相關(guān)。其上層程序接口是根據(jù)AUTOSAR指定并且實施的;其下層程序接口受標(biāo)準(zhǔn)接口程序的限制。復(fù)雜驅(qū)動可以使用特定的中斷或是復(fù)雜的微控制器外設(shè)(如PCP/TPU)來直接訪問微控制器,從而實現(xiàn)對復(fù)雜傳感器的評估和執(zhí)行器的控制,比如噴油控制,電磁閥控制,增量位置檢測等
- 2、詳細(xì)描述
- I/O功能
功能包括了DIO(數(shù)字輸入輸出)、ADC和PWM等
- 1)I/O Signal Interface: 對輸入數(shù)據(jù)的初步處理,比如輸入去抖等
- 2)Driver for ext. ADC ASIC: 外置ADC的驅(qū)動,比如當(dāng)有外部ADC采樣芯片的時候,通過SPI通信,將數(shù)據(jù)傳入主芯片
- 3)Driver for ext. I/O ASIC: 同上,只不過這里是I/O
- 4)SPI Handler: SPI處理驅(qū)動,將硬件中的SPI封裝成API供上層調(diào)用
- 5)ADC PWM DIO: MCAL中的驅(qū)動,將硬件中的ADC、PWM、DIO分別封裝成API供上層調(diào)用
- 6)SPI ADC PWM DIO(Hardware): 就是指芯片中的這些功能模塊
實際例子流程
Adc_ReadGroup:是MCAL對上層開放的API函數(shù),Read到的是ADC采樣值(比如12位精度最大就是4095)
Get_SensorValue:IoHwAb中的一個服務(wù)函數(shù),主要作用就是通過ADC采樣值計算出實際的傳感器阻值(多少歐姆)。Sensor SWC和IoHwAb是通過C/S接口相連,可以通過Rte_Call_Get_(port)_SensorValue調(diào)用
Send_Temperature:將歐姆值計算成實際的溫度值,再傳遞給App SWC
- Communication功能
- 1)COM:主要就起了一個信號接口和網(wǎng)關(guān)的作用。從應(yīng)用層傳下來數(shù)據(jù)首先就進入這里,應(yīng)用層無需關(guān)心收發(fā)的數(shù)據(jù)是通過什么總線傳輸?shù)?#xff0c;只需要將它傳輸給COM即可
- 2)PDU Router: PDU——Protocol Data Unit,協(xié)議數(shù)據(jù)單元。這個模塊的功能就是將COM下發(fā)的信號數(shù)據(jù)分配到相應(yīng)的協(xié)議總線上去;或者將不同的協(xié)議變成同一信號上傳給COM
- 3)IPDU Mux:用于解析一些特殊的協(xié)議,比如CAN FD或者用戶自定義的一些協(xié)議。就是起了一個統(tǒng)一CAN ID,不同信號Layout的作用
- 4)CAN Tp:分包數(shù)據(jù)傳輸與錯誤檢測,一般來說只有在診斷的時候才會使用
- 5)CAN Interface:主要配置收發(fā)隊列;組幀(FlexRay);管理時間觸發(fā)總線的調(diào)度表(LIN, FlexRay)
- 6)CAN Driver:MCAL中對主芯片上CAN模塊的驅(qū)動封裝
- 7)Trcv Driver:Transceiver driver,收發(fā)器驅(qū)動
通信流程:
-
發(fā)送流程
- 1)應(yīng)用層Send一個數(shù)據(jù)進COM
- 2)COM寫信號進PDU Buffer中
- 3)PDU被PDU Router立刻發(fā)送或按周期發(fā)送(每個PDU都有一個獨立的ID),之后PDU Router辨認(rèn)總線種類,并把PDU發(fā)向不同的下級模塊
- 4)Interface根據(jù)不同的通道,把報文寫入不同的隊列
- 5)Driver根據(jù)報文的優(yōu)先級立刻發(fā)送報文
-
接收流程
- 1)硬件接收報文
- 2)由Driver發(fā)出Rx中斷(函數(shù)),之后通過RxIndication,數(shù)據(jù)被傳遞到Interface
- 3)傳遞到PDU Router
- 4)傳遞到COM(如果SWCs使用Data ReceptionTrigger,就通知RTE;否則暫存到Buffer中)
- 5)信號被RTE讀取,然后應(yīng)用層讀取
- Memory功能
1)ROM存儲方式
- EEPROM:可以按位操作
- FLASH仿EEPROM:相同大小容量下Flash相對便宜一些,但是只能按塊擦寫,不能按位擦寫。想要讓Flash做到按位擦寫,就需要先將Flash原來的數(shù)據(jù)備份一份,再修改其中想要修改的位,再按塊擦除,最后將改寫好的數(shù)據(jù)再燒錄回原塊中
- 而存儲可以是片內(nèi)的,也可以是片外的
2)詳細(xì)說明
-
NVRAM Manager:
a.應(yīng)用層訪問非易失性數(shù)據(jù)的唯一接口,提供非易失數(shù)據(jù)的管理服務(wù)
b.NVM模塊上層是RTE,下層是對接Flash Driver或者EEPROM Driver的接口
c.NVM里面的數(shù)據(jù)讀寫有兩種同步機制:Implicit synchronization(隱式同步)和Explicit synchronization(顯式同步) -
Memory Abstraction Interface:主要作用是將需要讀寫的信息解耦,分別分派給EEPROM或FLASH
-
EEPROM Abstraction(EA):EEPROM的抽象層,主要作用就是進一步封裝片外或片內(nèi)EEPROM驅(qū)動,給上層提供統(tǒng)一的API接口
-
Flash EEPROM Emulation: 同上,此為Flash
-
External E2 Drv:ECU抽象層中片外EEPROM的驅(qū)動,下面是SPI的驅(qū)動,由于片外的EEPROM要通過SPI通信才能訪問。因此,片外EEPROM的驅(qū)動要放到ECU抽象層中
-
SPI Handler Drv:MCAL中對片上SPI的驅(qū)動
-
SPI EEPROM FLASH:片內(nèi)的SPI、EEPROM和FLASH功能模塊
-
External E2 Memory:片外EEPROM,就是板載的EEPROM,需要通過SPI訪問
流程:
- 片內(nèi)存儲
- 片外存儲
- Watchdog功能
- WdgM: 為應(yīng)用層提供安全相關(guān)的服務(wù)
- WdgIf: 看門狗接口,主要功能是觸發(fā)硬件看門狗
- Wdg Drv: Mcal中看門狗的驅(qū)動
- Diagnostics功能
一般故障處理過程,如ECU故障發(fā)生了,要將故障的內(nèi)容記錄到EEP或者Flash中,communication模塊把故障信息傳輸?shù)紺AN或者LIN上,故障發(fā)生后需要對故障功能做出應(yīng)急處理
- FIM: Function Inhibition Manager,功能禁止管理,當(dāng)一些error出現(xiàn)的時候,禁止一些功能。比如當(dāng)檢測到控制器過電流的時候,關(guān)閉MOS或IGBT,防止炸管
- DEM:Diagnostic Event Manager,診斷事件管理。就是用來記錄和存儲診斷事件的,下面連接NVRAM Manager,就是將這些診斷事件記錄到EEP或者Flash中
- DCM:Diagnostic Communication Manager,診斷通信管理。實現(xiàn)診斷通信協(xié)議,我們通常說的UDS協(xié)議(即ISO14229,是Unified Diagnostic Services,統(tǒng)一診斷服務(wù),是診斷服務(wù)的規(guī)范化標(biāo)準(zhǔn)
流程:
- 對故障做出快速響應(yīng)的功能:
首先由應(yīng)用層傳輸數(shù)據(jù)到DEM,DEM判斷出是哪個故障,之后發(fā)送給FIM;FIM立即做出判斷,通過回調(diào)函數(shù)通知SWC或者輪詢的方式禁止SW - 將故障記錄的功能:
故障由應(yīng)用層傳輸數(shù)據(jù)到DEM,DEM一邊是發(fā)送給FIM,另一邊是發(fā)送給NVRAM Manager,然后將故障記錄到EEP或者Flash中,方便以后維修診斷
- AutoSAR OS
OS可以配置為四個等級:SC1、SC2、SC3、SC4 (SC:Scalability Classes,可伸縮的類型)
- SC1: 包含標(biāo)準(zhǔn)OSEK OS標(biāo)準(zhǔn),除此之外還定義了標(biāo)準(zhǔn)的計數(shù)器接口和輪詢式的調(diào)度表
- SC2= SC1 + 時間保護。也就是說,當(dāng)一個任務(wù)執(zhí)行時間過長,它會被停止;SC2同時還定義了時間監(jiān)控。防止因為一個任務(wù)時間過長而影響其他任務(wù)的實時性
- SC3: SC3 = SC1 + 內(nèi)存保護。針對未經(jīng)授權(quán)訪問安全相關(guān)軟件組件的內(nèi)存區(qū)域的防護
- SC4: SC4 = SC1 + 時間保護 + 內(nèi)存保護 = SC2 | SC3
- Mode Management功能
模式管理,可以理解為對狀態(tài)的管理(比如ECU的上電、下電和休眠;CAN通訊的開啟和關(guān)閉都是狀態(tài))。主要管理的對象有ECU、BSW和COM(通信中又可以細(xì)分很多)
-
ECU State Manager(EcuM)
ECU狀態(tài)機,主要作用是管理的是ECU的上下電功能(還包括休眠、重啟等)。
具體有以下四個功能:- 1)單片機初始化時,初始化OS所需的BSW模塊
- 2)為單片機的休眠(Sleep)模式和喚醒(wake up)模式做準(zhǔn)備
- 3)執(zhí)行關(guān)機命令和重啟命令
- 4)通過喚醒驗證協(xié)議驗證已發(fā)生的喚醒
-
Basic Software Mode Manager(BswM):
主要作用是定義一系列規(guī)則。一旦滿足規(guī)則,就執(zhí)行相應(yīng)的動作。主要有Communication Control、Ecu State Handing和Module Initialization -
Communication Manager(ComM):主要功能是管理通信的啟用和關(guān)閉
-
Network Management(Nm If, Bus NM):主要功能是保持總線喚醒和協(xié)調(diào)總線關(guān)閉
-
Bus State Manager(Bus SM):切換Bus的狀態(tài),比如CAN SM是切換該CAN的啟動和關(guān)閉(注意把CAN和COM區(qū)分開,COM更高一層,COM不光包含CAN)
總結(jié)
以上是生活随笔為你收集整理的汽车电子学习笔记—AutoSAR之基础软件层(BSW)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: kali配置网络教程
- 下一篇: Arduino旋转编码器