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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

汽车 ECU 升级初探

發(fā)布時間:2023/12/20 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 汽车 ECU 升级初探 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

ECU 固件升級,類似于手機固件升級,大概流程是實現(xiàn) Bootloader,完成 EEPROM/Flash 的讀寫,當然需要了解 ECU 所使用的 MCU,MCU 內(nèi)部EEPROM/Flash 和外部 EEPROM/Flash 的讀寫,學習門檻很高,別的不說,光是 ECU 固件逆向就不容易,因為需要了解 10 多種 MCU 匯編語言,還需要編寫各種 IDA 插件,難度很大。本文對 ECU 固件升級進行基本的闡述,如果有錯誤的地方,懇請斧正。

一、UDS

UDS,UNIFIED DIAGNOSTIC SERVICES,它是汽車診斷的核心,常用的 UDS 服務 SID 如下:

OBD2_MODE_SHOW_CURRENT_DATA:0x01

OBD2_MODE_SHOW_FREEZE_FRAME:0x02

OBD2_MODE_READ_DTC:0x03

OBD2_MODE_CLEAR_DTC:0x04

OBD2_MODE_TEST_RESULTS_NON_CAN:0x05

OBD2_MODE_TEST_RESULTS_CAN:0x06

OBD2_MODE_READ_PENDING_DTC:0x07

OBD2_MODE_CONTROL_OPERATIONS:0x08

OBD2_MODE_VEHICLE_INFORMATION:0x09

OBD2_MODE_READ_PERM_DTC:0x0A

OBD2_MODE_ENHANCED_DIAGNOSTIC_REQUEST :0x22

UDS_SID_START_DIAGNOSTIC_SESSION:0x10

UDS_SID_ECU_RESET:0x11

UDS_SID_READ_FREEZE_FRAME_DATA:0x12

UDS_SID_READ_DIAGNOSTIC_TROUBLE_CODES: 0x13

UDS_SID_CLEAR_DIAGNOSTIC_INFORMATION:0x14

UDS_SID_READ_DIAGNOSTIC_TROUBLE_CODES_STATUS :0x17

UDS_SID_READ_DTC_BY_STATUS:0x18

UDS_SID_READ_DTC_INFORMATION:0x19

UDS_SID_READ_ECU_ID :0x1A

UDS_SID_STOP_DIAGNOSTIC_SESSION:0x20

UDS_SID_READ_DATA_BY_LOCAL_ID:0x21

UDS_SID_READ_DATA_BY_COMMAND_ID:0x22

UDS_SID_READ_MEMORY_BY_ADDRESS:0X23

UDS_SID_READ_SCALING_DATA_BY_IDENTIFIER:0x24

UDS_SID_STOP_REPEATED_DATA_TRANSMISSION:0x25

UDS_SID_SET_DATA_RATES:0X26

UDS_SID_SECURITY_ACCESS:0X27

UDS_SID_COMMUNICATION_CONTROL:0x28

UDS_SID_READ_DATA_BY_PERIODIC_IDENTIFIER:0x29

UDS_SID_READ_DATA_BY_ID_PERIODIC:0x2A

UDS_SID_DYNAMICALLY_DEFINE_LOCAL_ID:0x2C

UDS_SID_DEFINE_PID_BY_MEMORY_ADDRESS:0x2D

UDS_SID_WRITE_DATA_BY_COMMAND_ID:0x2E

UDS_SID_INPUT_OUTPUT_CONTROL_BY_COMMAND_ID:0x2F

UDS_SID_INPUT_OUTPUT_CONTROL_BY_LOCAL_ID:0x30

UDS_SID_START_ROUTINE_BY_LOCAL_ID:0x31

UDS_SID_STOP_ROUTINE_BY_LOCAL_ID:0x32

UDS_SID_REQUEST_ROUTINE_RESULTS_BY_LOCAL_ID:0x33

UDS_SID_REQUEST_DOWNLOAD:0x34

UDS_SID_REQUEST_UPLOAD:0x35

UDS_SID_ TRANSFER_DATA:0x36

UDS_SID_REQUEST_TRANSFER_EXIT:0x37

UDS_SID_START_ROUTINE_BY_ADDRESS:0x38

UDS_SID_STOP_ROUTINE_BY_ADDRESS:0x39

UDS_SID_REQUEST_ROUTINE_RESULTS_BY_ADDRESS:0x3A

UDS_SID_WRITE_DATA_BY_LOCAL_ID:0x3B

UDS_SID_WRITE_MEMORY_BY_ADDRESS:0x3D

UDS_SID_TESTER_PRESENT:0x3E

UDS_SID_NEGATIVE_RESPONSE:0x7F

UDS_SID_ESC_CODE:0x80

UDS_SID_START_COMMUNICATION :0x81

UDS_SID_STOP_COMMUNICATION:0x82

UDS_SID_ACCESS_TIMING:0x83

UDS_SID_SECURED_DATA_TRANS:0x84

UDS_SID_CONTROL_DTC_SETTINGS:0x85

UDS_SID_RESPONSE_ON_EVENT:0x86

UDS_SID_LINK_CONTROL:0x87

FORD_REQUEST_DATA_DIAGNOSTIC_DATA_PACKET:0xA0

FORD_DYNANICALLY_DEFINE_DIAGNOSTIC_DATA_PACKET:0xA1

FORD_DIAGNOSTIC_COMMAND:0xB1

GM_PROGRAMMED_STATE:0xA2

GM_PROGRAMMING_MODE:0xA5

GM_READ_DIAGNOSTIC_INFO:0xA9

GM_READ_DATA_BY_ID:0xAA

GM_DEVICE_CONTROL:0xAE

二、AUTOSAR

AUTOSAR(AUTomotive Open System ARchitecture),支持的協(xié)議有:CAN, FlexRay, LIN, Ethernet等。它是 ECU 固件開發(fā)的標準,UDS 屬于 AUTOSAR的一部分,越來越多的 ECU 固件開發(fā)使用 AUTOSAR。

三、XCP

XCP(Universal Measurement and Calibration Protocol),支持的協(xié)議有: CAN、SPI、 SCI,、TCP/IP,、UDP/IP,、USB、FlexRay等。它是ECU校準協(xié)議,擴展于CCP(CAN Calibration Protocol)。

四、ODX

ODX((Open Diagnostic Data Exchange),基于XML,用于描述與汽車診斷相關(guān)數(shù)據(jù),是汽車診斷格式標準。

五、VCI 和 MVCI

VCI(Vehicle Communication Interfaces),MVCI(Multiple Vehicle Connect Interface),都是汽車外部 ECU(診斷工具、診斷軟件等)和內(nèi)部 ECU 的通信接口標準,對于常用的 ECU 診斷(包含固件升級),使用 VCI 就足夠了。VCI支持的協(xié)議有:SAE J1850 PWM/VPW、ISO 15765-4(CAN)、ISO 9141-2、ISO 14230-4(KWP 2000)、SAE J2818(KWP 1281)、SAE J1979。SAE J1979主要是大型車使用,SAE J2818主要是大眾使用,在CAN協(xié)議上,又分高速CAN、中速CAN、低速CAN。ISO 9141-2、KWP 2000、KWP 1281類似于串口,統(tǒng)稱K-Line。

六、汽車發(fā)動機

發(fā)動機有:TD、TDI 、TSI 、FSI、 TFSI、 TDCI 、TDDI 、TURBO 、V6 、VR6、 V8等,TDI、TSI、FSI、TFSI用的好像比較多。

七、MCU

汽車有非常多個的 ECU,非射頻相關(guān)可稱為 AP(Application Processor),射頻相關(guān)可稱為 BP(Baseband Processor),本文討論的是 AP,主要 ECU 有:BCM(Body Control Module),PCM(Power Control Module),PAM(Park Assist Module)。BCM,即主板,需要了解 BCM 固件中 PAM 和 PCM 的通信;PCM,發(fā)動機 ECU,需要了解該 ECU 固件中 MAP 表的處理過程;UDS 有可能集成在 BCM 或 PAM,需要了解該 ECU 固件中汽車診斷協(xié)議的處理過程。本文假設(shè) BCM、PCM、PAM 三者獨立存在,當然 PCM 和 PAM 有可能集成,還有可能與 BCM 集成。PCM 和 PAM 這兩個 ECU 非常關(guān)鍵,需要了解 PCM 和 PAM 這兩個 ECU 所采用的 ECU 廠商,ECU 廠商所使用的 MCU,以及 ECU 廠商所使用的 EEprom/Flash 等,本文主要關(guān)注 PCM。

1、PCM

主要使用的 MCU 有:Infineon/ST C16X/ST10、Infineon/ST Tricore TC17XX、Freescale/Motorola MPC5XX、Freescale/Motorola MPC5XXX、Freescale/Motorola HC12X、Renesas SH 70XX、Renesas SH 72XXX、Renesas V850、Renesas M16/M32、Renesas H8SX等。

2、PAM

主要使用的MCU有:Renesas V850、Freescale/Motorola HC12X、Renesas M16/M32、常見MCU(8051、PIC、AVR)等。主要使用V850、HC12X。

3、BCM

可以分為主模塊和副模塊。主模塊已知使用的MCU有ARM、M16/M32,副模塊可以認為是CAN模塊,已知使用的MCU有V850、HC12X。

4、EEPROM/Flash

尚未關(guān)注。MCU 外部 EEPROM/Flash 讀寫方式有:SPI、I2C、MircoWire、4Wire等。

八、ECU 廠商

1、BOSCH

采用的 MCU 有3個版本:EDC15、EDC16、MED7、MD7使用C16X;EDC16+U/C/CP、MED9、MD9使用MPC 5XX/MPC 5XXX;EDC17、MED17、MD17使用Tricore。使用Tricore TC1796/TC1797的有:EDC17CP、MED17、MD17。

2、SIEMENS CONTINENTAL

主要使用C16X/ST10、Tricore、MPC5XX、MPC5XXX,少量使用SH705X、SH72XXX。使用Tricore TC1796/TC1797的有:Siemens SIMOS 8/12/18、Siemens SID 208/807、Siemens SDI4、 Continental PCR 2.1。

3、DELPHI

主要使用C16X/ST10、Tricore、MPC5XX、MPC5XXX,部分使用SH705X、SH72XXX。使用Tricore TC1766/TC1767的有:MT80/MT86,使用MPC 5566/5567的有:DCM3.5、DCM3.7,使用SH72543/SH72544的有DCM3.7。

4、MAGNETI MARELLI

主要使用C16X/ST10、MPC5XX、MPC5XXX、HC12X。

5、MOTOROLA

主要使用MPC5XX、MPC5XXX、HC12X。

6、FORD EFI

主要使用MPC5XX、MPC5XXX、HC12X。

7、TRW

主要使用MPC5XX、MPC5XXX、HC12X。

8、TEMIC

主要使用C16X/ST10、MPC5XX、MPC5XXX、HC12X。

9、DENSO:

主要使用SH705X、SH72XXX、H8SX,Renesas旗下的MCU都有可能使用。

10、MITSUBISHI MELCO:

主要使用M16/M32、SH705X、SH72XXX,Renesas旗下的MCU都有可能使用。

11、SAGEM:

主要使用 SH705X、SH72XXX,Renesas 旗下的 MCU 都有可能使用。

12、VALEO:

主要使用 SH705X、SH72XXX,Renesas 旗下的 MCU 都有可能使用。

九、汽車廠商

1、日系

主要使用的 MCU 是 SH70XX、SH72XXX,當然日系旗下的豪華品牌(本田謳歌、豐田雷克薩斯、日產(chǎn)英菲尼迪等)好像不一樣,還有可能使用MPC5XX、MPC5XXX、C16X、Tricore等。

2、福特與通用

UDS 使用的 CAN 協(xié)議不同,福特使用高速和中速 CAN,通用使用高速和低速 CAN,正常的是使用高速 CAN。主要采用的 MCU 有:MPC5XX、MPC 5XXX、C16X、Tricore。

3、其它

Bosch 在 ECU 廠商中的市場份額最大。國產(chǎn)、韓系如果使用 Tricore,好像只采用 Tricore TC1766/TC1767,應該沒有采用 TC1796/TC1797。

十、ECU 固件升級方式

有兩種方式,一種是調(diào)用 ECU 已經(jīng)實現(xiàn)的 BootLoader 完成升級,這種方法稱為通過 EOBD(Enhance On-Board Diagnostic)進行固件升級,另一種是獨立實現(xiàn) Bootloader,這種方法稱為通過 Boot Mode 進行固件升級,第二種方法還有一種表現(xiàn)形式稱為BDM模式。實際上,通過 EOBD 升級能夠支持大部分車型,對于采用Tricore、MPC5XXX、SH72XXX的 ECU,Bootloader已鎖,需要知道解鎖算法/解鎖密鑰才能通過 EOBD 進行固件升級,對于這種情況,主流的升級工具都是采用 Boot Mode 進行固件升級。主流的升級工具好像很少考慮Renesas MCU,以K-TAG、KESS V2、CMD FLASH為例,這三大升級工具都不能完美支持 Renesas MCU 固件升級,KESS V2 支持 Renesas MCU 相對比較好,倒是有專門針對 Renesas MCU 的固件升級工具,如Piasini Serial Suite。

十一、ECU 固件升級工具的實現(xiàn)

有兩種實現(xiàn),一種是 EOBD 的實現(xiàn),可以支持大部分車型,可以參考 AUTOSAR 或 VCI 來實現(xiàn),MCU從V850、C16X、Tricore、MPC5XX、MPC5XXX、HC12X、SH705X、SH72XXX 選取,或者選取常見的 MCU,如 ST的 STM32、NXP 的 LPC、MircoChip 的 PIC 等。

文章 http://bbs.pediy.com/showthread.php?t=213087 可供參考,注意該文章中關(guān)于 ECU 的描述是錯誤的;另一種是 Boot Mode 的實現(xiàn),可以參考 XCP 來實現(xiàn),雖然該實現(xiàn)是最通用的,硬件成本比 EOBD 的實現(xiàn)低,但在固件實現(xiàn)上需要實現(xiàn)各主流 MCU 的 Bootloader,還要實現(xiàn)各 EEPROM/Flash 芯片的讀寫,難度很大。還有一種可能是選取 K-TAG、KESS V2、CMD FLASH 一種,逆向其固件,并重寫其固件,這些升級工具 PCB 應該是單層的,逆向其 PCB 也是可能的。三大 ECU 升級工具(K-TAG、KESS V2、CMD FLASH)價格不菲,動輒上萬,硬件成本最多價值1000,可以看出診斷數(shù)據(jù)很值錢,并且它們都不能完美支持 Renesas 旗下的 MCU 固件升級。

十二、ECU 固件逆向

需要了解的匯編語言有:Infineon/ST C16X/ST10、Infineon/ST Tricore、PowerPC(MPC5XX/MPC5XXX)、M68K(HC12X)、Renesas V850 E1/E2、Renesas SH2/SH4、Renesas M16/M32、Renesas H8SX、8051、ARM、PIC、AVR、X86/X64等。

固件逆向通常是逆向固件加解密算法、固件檢驗算法、Bootloader解鎖算法/解鎖密鑰、MAP 表檢驗算法、ECU 安全訪問算法、UDS中汽車診斷協(xié)議的實現(xiàn)、UDS 中 ECU 固件升級的實現(xiàn)、UDS 消息檢驗算法、隨機數(shù)生成算法等。對于大部分 MCU 固件,IDA 都能反匯編,如果不能反匯編還需要編寫反匯編插件,IDA 并不知道固件 Bin 的內(nèi)存映射方式,還需要編寫 ECU 固件 Bin 的Loader 插件。IDA 插件編寫方式有 IDAPython 和 IDA SDK 兩種,推薦IDAPython。從這里可以看出,固件逆向主要是逆向算法,如果能實現(xiàn)一種 IDA插件,該插件能夠識別包含算術(shù)運算符、邏輯運算符的循環(huán)塊,則將會大幅度減少固件逆向所需要的時間,實現(xiàn)該插件應該需要控制流分析方面的知識。

如果 BCM、PCM、PAM 有使用操作系統(tǒng),還要知道使用哪種操作系統(tǒng),越來越多的汽車 PCM 采用的 MCU 是 Tricore、MPC5XXX、SH72XXX,越來越多的 ECU 固件根據(jù) AUTOSAR 標準開發(fā)。

十三、汽車改裝

動力相關(guān)的汽車改裝,個人認為可以分為以下 5 個等級:

1、外觀改裝,根據(jù)空氣動力學進行動力升級等。

2、修改 PCM 固件中的MAP表,修改 UDS 中的汽車診斷協(xié)議,修改BCM固件中與PCM和PAM的通信協(xié)議,用探針檢測汽車各部件運行狀態(tài)。該等級只涉及軟件改裝,主要涉及的 MAP 表有:Driver wish map、Torque limiter map、Smoke limiter map、Injection duration map、Boost target map、Boost limit map 、Single value boost limiter map、EGR map、Pump voltage table等,當然日系并不是這些表。使用的ECU MAP修改軟件有:ECM Titanium、WinOls、官方軟件(不容易獲取)等。這個步驟也就是通常我們所說的ECU調(diào)校(ECU tuning)。因為在這個等級上進行改裝很容易出現(xiàn)問題,所以需要在UDS中增加汽車診斷消息,并且還要修改BCM固件中PCM和PAM的通信協(xié)議,用探針檢測汽車各部件運行狀態(tài)。探針好像價格不菲,很多ECU調(diào)校只是修改MAP表,汽車很容易出現(xiàn)問題。嚴格意義上講,一個map表是一個或多個偏微分方程的解,當然在實踐中都是根據(jù)經(jīng)驗進行修改map表。在這個等級上,汽車動力能提升10%-30%左右,要想再提升就需要下一個等級。

3、替換傳感器、噴油嘴、變速箱、剎車片等。在這個等級上,等級2改裝是必備的,汽車動力能提升50%-70%左右,要想再提升就需要下一個等級。

4、替換 PCM、PAM、發(fā)動機等。在這個等級上,等級2、等級3改裝是必備的,汽車動力提升

80%-100%左右,要想再提升的話就可能要涉及汽車底盤。

5、增加 ECU。在這個等級上,主要是減少等級 4 的改裝復雜度的,因為等級4要想更換 PCM、

PAM 等 ECU 是非常困難的,所以是采用外掛 ECU 進行硬件 hook 來實現(xiàn)。當然,還有可能是增加汽車更多的功能。

國外關(guān)于汽車改裝的相關(guān)產(chǎn)業(yè)已非常成熟,等級1-5都有實現(xiàn),而國內(nèi)呢,還處在等級1的外觀美容上,大量的等級2改裝只是國外的代理,只有少量的等級2改裝是本地的。

十四、總結(jié)

汽車診斷,涉及多方面的內(nèi)容,本文主要是對非射頻相關(guān)的 ECU 中的發(fā)動機ECU 進行初探,對于射頻相關(guān)的ECU(WIFI、汽車鑰匙等),尚未關(guān)注,對于ECU使用的EEPROM/Flash,尚未關(guān)注,對于汽車診斷中的探針部件,尚未關(guān)注。

總結(jié)

以上是生活随笔為你收集整理的汽车 ECU 升级初探的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。