【 ATU NXP-S32K3系列 】UDS 協議_CAN bus 通訊之 bootloader 基於 S32K34X

1.  概述

1.1  功能描述

本範例將使用 S32DS for ARM 平台操作,由 S32K34X_EVB 燒錄 bootloader 的程式,實現 bootloader 功能並使用 UDS 協議方式,文件說明 UDS 協議內容,與 AES 加密服務,應用於 bootloader 上。

1.2  硬體開發工具

S32K34X-EVB 評估板

PEmicro Multilink Universal 燒錄器

1.3 軟體開發工具

S32 Design Studio for ARM

1.4  參考相關程式碼

S32K344_CAN_UDS_Bootloader

 

2.   SDK 說明與使用

2.1  概述

S32 SDK PA 可以在 S32 Design Studio IDE 開發環境中使用 Processor Expert 工具配置使用者需要的設置,並自動生成設置檔案,提供快速便捷的 Device 與 IP 設置方式。

2.1.1     SDK 版本說明

SDK 的版本分為以下三種:

EAR : Early Assess Release,早期評估版,是 SDK 最先發布的版本,提供基本的SDK 功能,可以做為早期軟體評估使用。

BETA : Beta 版是修復 EAR 版若干 Bug 後發布的 SDK 版本,相較於 EAR 版本,功能更加完善。

RTM : Ready To Manufacture,最終量產版本,提供最完善的 API 接口及外設 IP 配置選項,修復

2.1.2     S32 Design Studio IDE 的使用方式與安裝方式

關於 S32 Design Studio for S32 的使用方式,請參考文件 “ S32 Design Studio for S32 Architecture 平台安裝教學 ”。

 

3.   UDS 協議  

3.1 SID ( Service Identifier )

下面圖表說明不同 SID 所代表的服務功能

而在請求功能的 SID 數值加上 0X40 即為回覆功能的 SID

以下為常用的 SID ,圖片來源為維基百科,除了常用的 SID 之外還有其他 SID ,這裡便不多做介紹 ( 例如 : 請求 SID 0X3D 寫入 memory address 等等 )

 

 


3.2  Subfunction

不同的 SID 會有不同的 Subfunction ,這裡使用 SID ( 0x19 ) 來說明 Subfunction

下列為 0x19 的 28 種 Subfunction ,0x19 為讀取 DTC 資訊的 SID

 

0x01 : Report number of DTC by Status Mask ;

0x02 : Report DTC by Status Mask

0x03 : Report DTC Snapshot Identifi cation

0x04 : Report DTC Snapshot Record by DTC number

0x05 : Report DTC Snapshot Record by Record number

0x06 : Report DTC Extended Data Record by DTC number

0x07 : Report number of DTC by Severity Mask Record

0x08 : Report number of DTC by Severity Mask Record

0x09 : Report Severity Information of DTC

0x0A : Report Supported DTC

0x0B : Report First Test Failed DTC

0x0C : Report First Confi rmed DTC

0x0D : Report Most Recent Test Failed DTC

0x0E : Report Most Recent Confi rmed DTC

0x0F : Report Mirror Memory DTC by Status Mask

0x10 : Report Mirror Memory DTC Extended Data Record by DTC number

0x11 : Report number of Mirror Memory DTC by Status Mask

0x12 : Report number of Emissions Related OBD DTC by Status Mask

0x13 : Report Emissions Related OBD DTC by Status Mask

0x14 : Report DTC Fault Detection Counter

0x15 : Report DTC with Permanent Status

 

3.3  請求 & Positive & negative

3.3.1     請求格式

SID + subfunction + data

3.3.2     Positive response 肯定響應

( SID + 0x40 ) + subfunction + data

3.3.3     Negative response 否定響應

7F + SID + NRC



3.4  NRC  

常用 NRC

0x11 : SID 不支援

0x12 : Subfunction 不支援

0x13 : 請求長度或格式不正確

0x31 : 請求超出範圍

0x7E : 當前狀態下 SID 不支援

0x7F : 當前狀態下 Subfunction 不支援

 

4.   AES 加密服務

 

車用上的 UDS 應用,會需要安全相關加密服務,這裡使用 AES 加密服務,全名為 Advanced Encryption Standard ,是利用矩陣的方式來進行加密,廣泛的為全世界所使用,加密步驟分別為 4 種,對應不同功能,步驟如下 :

AddRoundKey 步驟 :將每個狀態中的位元組與該回合金鑰做互斥或(⊕)。

SubBytes 步驟 :矩陣中各位元組被固定的8位元尋找表中對應的特定位元組所替換,S; bij = S(aij).

ShiftRows 步驟 : 矩陣中每一列的各個位元組循環向左方位移。位移量則隨著列數遞增而遞增。

MixColumns 步驟 : 每個直列都在modulo { x^{4}+1}之下,和一個固定多項式c(x)作乘法。

 

利用此 4 個步驟對矩陣與金鑰來做操作,達到加密功能

參考資料 : 維基百科

 

5.   程式碼說明

5.1 AES 加密程式

5.1.1 extendkey

5.1.2 SubBytes

5.1.3 addRoundKey

5.1.4 shiftRows

5.1.5 mixColums  

5.2 UDS subfunction 範例

5.3 UDS NRC範例

5.4 UDS 功能範例

5.1.1 diagnose mode control

5.1.2 communication control

5.1.3 control DTC setting

5.1.4 security access

5.1.5 write data by identifier

5.1.6 request download data

5.1.7 transter data

5.1.8 request exit transfer

5.1.9 reset ECU

5.1.10 diagnose mode control

 
第五章節內容與相關程式碼請聯絡 Michael

聯絡方式 Michael.Gao@wpi-group.com

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論

huagang

huagang

2023年3月9日
博主您好,这篇文章中关于S32K3xx的CAN通讯和bootloader的案例可以给我分享一份学习吗?我的邮箱ggisguapi@126.com,感谢博主!