AutoSar架構學習筆記

1.AUTOSAR(Automotive Open System Architecture,汽車開放系統架構)是一個針對汽車行業的軟件架構標準,旨在提升汽車電子系統的模塊化、可擴展性、可重用性和互操作性。AUTOSAR的目標是為汽車電子控制單元(ECU)之間的軟件開發提供統一的標準,以支持多種不同的硬件平臺和操作系統,并促進供應商間的兼容性。

2.AUTOSAR Classic Platform架構如下圖所示:

  • SWC(Application Software Components, 應用軟件組件):這些是ECU上運行的實際應用程序,執行車輛功能的核心任務。例如,發動機控制、車輛安全、空調控制等。應用層組件與硬件和其他軟件組件之間通過接口進行通信,通常通過AUTOSAR定義的標準接口。

  • RTE(Runtime Environment,運行時環境):RTE是AUTOSAR架構的核心部分,它是軟件組件與基礎軟件層之間的中間件。RTE負責連接不同的應用軟件組件,提供統一的通信機制,確保不同軟件模塊間的互操作性。RTE的作用是將應用軟件與底層的硬件和服務隔離開,使得應用軟件不依賴于具體的硬件平臺和操作系統,增強了軟件的可移植性。

  • BSW(Basic Software Layer,基礎軟件層):該層主要是為應用層提供基礎服務,具體又可分為以下幾層:

  • Microcontroller Abstraction Layer(微控制器抽象層,MCAL):該層是對MCU芯片的抽象和封裝,由于Autosar CP是基于MCU的軟件架構,所以該層主要是實現MCU外設驅動)比如I/O驅動、Flash驅動、CAN驅動、看門狗驅動、定時器驅動等等。這一層是需要和硬件打交道的,這一層高度依賴MCU硬件,如果項目換MCU芯片,只需要修改這一層代碼適配驅動即可。
  • ECU Abstraction Layer(ECU抽象層):該層是對ECU的抽象和封裝,ECU上面除了主芯片MCU,還有很多外圍設備,比如外置Flash,外置電源管理芯等。這一層就是實現了整個ECU所有設備的封裝。外圍設備也是MCU主芯片控制的,這一層會使用到MCAL的接口。作為抽象層,屏蔽了下層驅動實現細節,將統一接口API暴露給上層以實現功能。該層從上層抽象MCAL層,并提供用于訪問外部和內部的驅動程序的API。
  • Services Layer(服務層):該層是向應用層提供服務的,這一將底層提供的服務封裝起來供應用層使用。比如通信服務、存儲服務、os 操作系統服務等。
  • Complex Device Drivers(復雜驅動,CDD):指的是有些模塊不適用于Autosar協議棧,通過手寫代碼自己封裝成CDD模塊,在項目開發中會經常有一些模塊直接作為CDD使用。

3.AUTOSAR Adaptive Platform是面向服務的架構,如下圖所示:

4.汽車電子開發流程:下圖是標準AUTOSAR流程,OEM從需求生成最終的文件(給到每一個ECU制造廠商)的主要流程。圖中流程需要軟件工具支持(比如Vector的PREEvision),這樣就能自動生成相應的描述文件了。圖中綠色箭頭的含義是:設計之初,需要反復修改,首先是列需求,通過三種文件描述這些需求:SWC描述文件、系統描述文件、ECU資源文件,然后將這三種文件導入到系統配置編輯工具中,生成系統配置描述文件。該文件就是整車描述文件最后將系統配置描述文件導入到系統配置提取工具中,導出每一個ECU相應的提取文件,該文件就包含每一個ECU需要用到的信息,比如通信矩陣、SWC信息。

上圖中各個具體文件的作用是:

  • SWC描述文件:即應用層軟件組件描述文件,包含的信息有:描述每個軟件組件需要的資源(比如存儲、CPU時間等),SWC直接的接口,運行機制

  • 系統約束描述文件:主要是對整車公共資源的描述,包括網絡拓撲、通信矩陣、總線波特率、各種協議等

  • ECU資源描述文件:描述每個ECU都需要實現什么功能,系統設計者通過該文件將不同功能的SWC分配到對應的ECU中,例如傳感器、執行器、存儲器、引腳分配

  • 系統配置描述文件:上面3中文件的匯總

  • ECU提取文件:將系統配置描述文件信息分配給單個ECU,是單個ECU獲取屬于自己的信息

當供應商獲取到OEM廠商提供的單個ECU的配置文件之后,可以進行具體的ECU軟件開發,流程如下:

  • EB用來配置Mcal驅動,生成arxml導入到DavinciConfigurator(用來配置操作系統和協議棧)中生成代碼。

  • Davinci Developer是用來配置App層框架的(對應AUTOSAR Classic Platform架構中的RTE部分),然后導入到Davinci Configurator中生成代碼。

  • Davinci Developer生成的arxml還會給一份到應用工程師(導入到MATLAB)然后通過MATLAB自動生成軟件框架,應用工程在里面添加模型代碼即可。

  • 做EB、DaVinci Developer、DaVinci Configrator和Simulink工程師可以同步開發,最終集成一下即可。

  • 開發可以從上到下也可以從下到上,就是說可以在Developer中設計好AppL框架導入到Matlab做代碼填充,也可以在Matlab中直接搭建好符合AutoSAR規范的代碼,然后導出arxml,再導入到Developer中,也能自動生成框架

靜態代碼:不會改變的源碼。動態代碼:配置工具配置出來的代碼xx_cfg.c、xx_cfg.h。

5.CAN通信:

從圖中可以看出,CAN總線通信需要CPU、CAN控制器、CAN收發器參與。從CAN收發器引出兩根線CAN_H_CAN_L,所有節點都掛接到這兩根線上,就形成了CAN的網絡結構。圖中有兩路CAN總線,帶有終端電阻120歐的是高速CAN,沒有帶終端120歐的是低速容錯CAN。

6.高速CAN總線的總線設計如圖所示,僅支持總線型拓撲結構,當前汽車領域用的最多的是CAN控制器集成到MCU中,使用外置CAN收發器,也就是圖中右邊這種設計:

CAN總線信號由CAN_H_CAN_L兩根線的差分信號,也就是通過CAN_H和CAN_L的電壓差來決定0、1信號。總線規定隱性電平為信號1(即CAN不工作時),顯性電平為信號0(即CAN工作時),其中隱形電平的時候CAN_H和CAN_L都為2.5V,此時電壓差就是0V,而顯性電平的時候CAN_H為3.5V, CAN_L為1.5V,此時電壓差就是2V。高速CAN,總線長度最大為40m,也就是當總線長度超過40m之后,總線的速率會受到影響,支線長度(節點和總線之間的距離)最長為0.3米,節點距離長度最大也是40m。

7.低速CAN:低速容錯CAN總線信號也是由CAN_H和CAN_L兩根線的差分信號,也就是通過CAN_H和CAN_L的電壓差來決定0、1信號。總線規定隱形電平為信號1顯性電平為信號0。其中隱形電平的時候CAN_H為0V,CAN_L為5V,此時電壓差就是-5V,顯性電平的時候CAN_H為3.50V,CAN_L為1.5V,此時電壓差就是2V。低俗容錯CAN除了支持總線型還支持星型。

8.相關概念:

  • ECU(Electronic Control Unit):是電子控制單元的縮寫,它是現代汽車、工業自動化、航空航天等領域中廣泛使用的電子設備。ECU 主要用于控制和管理車輛或設備的各種電子系統,通過接收來自傳感器的信號并執行相應的控制操作來提高設備的性能、可靠性和安全性。

  • OTA(Over-the-Air):是一種無線遠程更新技術,主要用于通過無線網絡(如Wi-Fi、蜂窩網絡、藍牙等)遠程向設備推送軟件、固件或配置更新。OTA 更新通常用于智能手機、汽車、物聯網設備、嵌入式系統等領域,以便無需物理接觸或連接外部設備的情況下,遠程升級、修復漏洞、優化性能或增加新功能。

  • OEM(Original Equipment Manufacturer):指的是“原始設備制造商”,即生產原始設備的公司,它設計并制造產品或組件,并將其作為品牌產品的一部分提供給其他公司進行銷售。OEM 通常指的是一個制造商生產的產品或部件,最終由另一家公司銷售并以其品牌名推出市場。

  • BswM:管理整個BSW的模塊

  • EcuM:管理ECU上下電等功能。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/66613.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/66613.shtml
英文地址,請注明出處:http://en.pswp.cn/web/66613.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

算法競賽之差分進階——等差數列差分 python

目錄 前置知識進入正題實戰演練 前置知識 給定區間 [ l, r ],讓我們把數組中的[ l, r ] 區間中的每一個數加上c,即 a[ l ] c , a[ l 1 ] c , a[ l 2] c , a[ r ] c; 怎么做?很簡單,差分一下即可 還不會的小伙伴點此進入學習 進入正題 …

TDengine 做 Apache SuperSet 數據源

?Apache Superset? 是一個現代的企業級商業智能(BI)Web 應用程序,主要用于數據探索和可視化。它由 Apache 軟件基金會支持,是一個開源項目,它擁有活躍的社區和豐富的生態系統。Apache Superset 提供了直觀的用戶界面…

金融場景 PB 級大規模日志平臺:中信銀行信用卡中心從 Elasticsearch 到 Apache Doris 的先進實踐

導讀:中信銀行信用卡中心每日新增日志數據 140 億條(80TB),全量歸檔日志量超 40PB,早期基于 Elasticsearch 構建的日志云平臺,面臨存儲成本高、實時寫入性能差、文本檢索慢以及日志分析能力不足等問題。因此…

虛幻商城 Fab 免費資產自動化入庫

文章目錄 一、背景二、實現效果展示三、實現自動化入庫一、背景 上一次寫了個這篇文章 虛幻商城 Quixel 免費資產一鍵入庫,根據這個構想,便決定將范圍擴大,使 Fab 商城的所有的免費資產自動化入庫,是所有!所有! 上一篇文章是根據下圖這部分資產一鍵入庫: 而這篇文章則…

游戲為什么失敗?回顧某平庸游戲

1、上周玩了一個老鼠為主角的游戲,某平臺喜1送的, 下載了很久而一直沒空玩,大約1G,為了清硬盤空間而玩。 也是為了拔掉心中的一根刺,下載了而老是不玩總感覺不舒服。 2、老鼠造型比較寫實,看上去就有些討…

親測有效!如何快速實現 PostgreSQL 數據遷移到 時序數據庫TDengine

小T導讀:本篇文章是“2024,我想和 TDengine 談談”征文活動的優秀投稿之一,作者從數據庫運維的角度出發,分享了利用 TDengine Cloud 提供的遷移工具,從 PostgreSQL 數據庫到 TDengine 進行數據遷移的完整實踐過程。文章…

C#,入門教程(01)—— Visual Studio 2022 免費安裝的詳細圖文與動畫教程

通過本課程的學習,你可以掌握C#編程的重點,享受編程的樂趣。 在本課程之前,你無需具備任何C#的基礎知識,只要能操作電腦即可。 不過,希望你的數學不是體育老師教的。好的程序是數理化的實現與模擬。沒有較好的數學基礎…

Linux探秘坊-------3.開發工具詳解(2)

1.動靜態庫和動靜態鏈接(操作) 靜態庫是指編譯鏈接時,把庫?件的代碼全部加?到可執??件中,因此?成的?件 ?較?,但在運?時也就不再需要庫?件了。其后綴名?般為“.a” 動態庫與之相反,在編譯鏈接時并 沒有把庫?件的代碼加?到可執??件中 ,?…

電腦開機出現Bitlock怎么辦

目錄 1.前言 2.產生原因: 1.系統異常關機 2.系統更新錯誤 3.硬件更換 4.CMOS電池問題 5.出廠設置 6.意外情況 3.解鎖步驟: 3.1:記住密鑰ID(前6位) 3.2:打開aka.ms/myrecoverykey網址 3.3&#…

C# 的 NLog 庫高級進階

一、引言 在 C# 開發的廣袤天地中,日志記錄宛如開發者的 “千里眼” 與 “順風耳”,助力我們洞察應用程序的運行狀態,快速定位并解決問題。而 NLog 庫,無疑是日志記錄領域中的璀璨明星,以其強大的功能、靈活的配置和出…

Avalonia系列文章之小試牛刀

最近有朋友反饋,能否分享一下Avalonia相關的文章,于是就抽空學習了一下,發現Avalonia真的是一款非常不錯的UI框架,值得花時間認真學習一下,于是邊學習邊記錄,整理成文,分享給大家,希…

10 為什么系統需要引入分布式、微服務架構

java技術的發展 在java開始流行起來之后,主要服務于企業家應用,例如ERP,CRM等等,這些項目是為企業內部員工使用,我們的思維是怎么用設計模式,如何封裝代碼。讓開發人員關注到業務上去,系統也就那么幾十幾百…

第6章:Python TDD實例變量私有化探索

寫在前面 這本書是我們老板推薦過的,我在《價值心法》的推薦書單里也看到了它。用了一段時間 Cursor 軟件后,我突然思考,對于測試開發工程師來說,什么才更有價值呢?如何讓 AI 工具更好地輔助自己寫代碼,或許…

JDK 23 和 JDK 21 的區別

JDK 23 和 JDK 21 的區別主要在于支持周期和功能特性: 支持周期: JDK 23:此版本是一個常規發布版本,支持時間較短,通常是六個月。這種版本適合希望使用最新特性和改進的用戶。JDK 21:這是一個長期支持&…

springboot自動配置原理(高低版本比較)spring.factories文件的作用

SpringBootApplication public class SpringSecurityApplication {public static void main(String[] args) {SpringApplication.run(SpringSecurityApplication.class, args);}}注解SpringBootApplication Target({ElementType.TYPE}) Retention(RetentionPolicy.RUNTIME) Doc…

使用Websocket進行前后端實時通信

1、引入jar&#xff0c;spring-websocket-starter <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dependency> 2、配置websocket config import org.springframe…

vue2 - Day05 - VueX

Vuex 是 Vue.js 官方的狀態管理庫。它是一個讓你能在應用中集中管理共享狀態的工具。當應用的規模逐漸增大&#xff0c;組件之間的數據傳遞變得越來越復雜時&#xff0c;Vuex 就成為了救星&#xff0c;提供了一個集中式的存儲來管理所有的組件狀態&#xff0c;并且保證狀態以一…

中型項目中 HTTP 的挑戰與解決方案

一、引言 在當今數字化時代&#xff0c;HTTP&#xff08;超文本傳輸協議&#xff09;作為Web應用程序的基礎通信協議&#xff0c;在中型項目的開發中扮演著至關重要的角色。它為客戶端和服務器之間的數據傳輸提供了標準規范&#xff0c;使得各種類型的應用&#xff0c;從簡單的…

IDEA導入Maven工程不識別pom.xml

0 現象 把阿里 sentinel 項目下載本地后&#xff0c;IDEA 中卻沒顯示 maven 工具欄。 1 右鍵Maven Projects 點擊IDEA右側邊欄的Maven Projects&#xff0c;再點擊&#xff1a; 在出現的選擇框中選擇指定的未被識別的pom.xml即可&#xff1a; 2 Add as maven project 右鍵p…

VUE學習筆記(入門)5__vue指令v-html

v-html是用來解析字符串標簽 示例 <!doctype html> <html lang"en"> <head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>Document<…