无主之地2配置高吗|看真人裸体BBBBB|秋草莓丝瓜黄瓜榴莲色多多|真人強奷112分钟|精品一卡2卡3卡四卡新区|日本成人深夜苍井空|八十年代动画片

網易首頁 > 網易號 > 正文 申請入駐

UDS診斷協議三級會話安全體系:默認會話、擴展會話與編程會話詳解(附代碼實現)

0
分享至

UDS協議通過0x10(診斷會話控制)服務定義了三級會話體系,包括默認會話(Default Session)、擴展會話(Extended Session)和編程會話(Programming Session)。這套安全體系實現了不同權限級別的分層隔離,確保了診斷和刷寫流程的安全性。


三級安全體系剖析

會話層級

子功能碼

“禁區”類比

核心機制

默認會話 0x01

公共區域

ECU上電后的初始狀態。這是權限最低的會話,通常只支持信息讀取等基礎服務。

擴展會話 0x03

工程師工作區

權限更高,可進行參數寫入等操作。進入此模式后,通常需要先通過“安全訪問”認證。

編程會話 0x02

手術室

最高權限,用于執行固件更新、內存擦寫等敏感操作。


注:這些會話與0x27安全訪問服務緊密配合,構成了UDS的核心安全防線。
會話切換與狀態管理

會話切換并非隨意進行,它遵循一套嚴謹的邏輯,并由定時器機制進行管理,防止ECU長時間停留在高權限狀態。

標準會話切換路徑

一個常見的診斷會話切換路徑及報文示例通常如下:

graph TD
Default[默認會話 (Default) 0x10 01]

Default -->|診斷請求| Extended[擴展會話 (Extended) 0x10 03
Request: 10 03
Positive: 50 03]
Extended -->|安全訪問| SA{安全訪問 (27 Service)}

SA -- 驗證通過 --> Extended_Ready[擴展會話(已解鎖)]
Extended_Ready -->|編程請求| Programming[編程會話 (Programming) 0x10 02
Request: 10 02
Positive: 50 02]

Default -.->|直接請求失敗| x((X))
Programming -.->|不可直接返回| Extended

關鍵切換邏輯

  1. 路徑要求 :必須從 默認會話 切換到 擴展會話 ,再從擴展會話切換到 編程會話 。通常不能從默認會話直接切換到編程會話。

  2. 會話保持 :進入擴展或編程會話后,診斷儀需周期性發送 ** TesterPresent 服務 (ID: 0x3E )**,以維持非默認會話狀態,避免因超時而自動退回默認會話。

超時管理

會話超時是UDS協議中重要的安全機制,其核心時間參數有:

  1. S3 Server time : 非默認會話在無診斷請求時,能保持的最大空閑時間。

  2. P2 Server : ECU 處理單幀診斷請求的典型超時時間。

  3. P2 Server *: 在需要更多處理時間 (如下載/擦除) 時,響應超時時間的最大值。

代碼實現剖析

以下代碼示例展示了如何在嵌入式ECU中實現這些核心邏輯(基于常見UDS協議棧實現)。

0x10 服務:會話切換核心處理

當診斷儀發送一個切換會話的請求時(如 10 03),ECU的Dcm_Dcm_ProcessRequest函數會接收到報文,并根據以下邏輯進行處理:

/* 全局變量:用于存儲診斷會話狀態和應用計時器 */
static Dcm_DiagnoticSessionType Dcm_CurrDiagSession = DCM_DEFAULT_SESSION; // 當前會話狀態
static uint16 Dcm_S3ServerTimer = 0; // S3 Server超時計時器,單位ms
static uint8 Dcm_TimerRunning = 0; // 計時器運行標志

/** @brief UDS 0x10 服務的主處理函數
* @param MsgBuf 指向接收到的UDS請求報文的指針
* @param RespBuf 指向響應報文緩沖區的指針(輸出參數)
* @return 函數執行狀態(通常是E_OK表示成功,E_NOT_OK表示失?。?br/> */
Std_ReturnType Dcm_DiagnosticSessionControl (uint8* MsgBuf, uint8* RespBuf)
{
uint8 subFunction = MsgBuf[1]; // 獲取請求的子功能 (01/02/03)
uint8 retVal = 0; // 返回值

/* 1. 執行通用條件檢查 */
retVal = Dcm_PreconditionsCheck(MsgBuf); // 檢查是否支持該服務,格式是否正確

if (retVal != NRC_POS_RESP)
{
RespBuf[0] = 0x7F; // 負響應ID
RespBuf[1] = 0x10; // 被拒絕的服務ID
RespBuf[2] = retVal; // 負響應碼
return E_OK;
}

/* 2. 根據請求的子功能,執行特定的會話切換邏輯 */
switch (subFunction)
{
case DCM_DEFAULT_SESSION: // 子功能碼 0x01 : 切換到默認會話
if (Dcm_CurrDiagSession != DCM_DEFAULT_SESSION)
{
/* 在退出非默認會話前,調用清理函數 */
Dcm_ClearSessionResources(Dcm_CurrDiagSession);
Dcm_CurrDiagSession = DCM_DEFAULT_SESSION;
}
/* 重新初始化默認會話:重置所有診斷相關的臨時配置 */
Dcm_ReinitializeDefaultSession();
break;

case DCM_PROGRAMMING_SESSION: // 子功能碼 0x02 : 切換到編程會話
/* 檢查切換條件1:是否由擴展會話發起 */
if (Dcm_CurrDiagSession != DCM_EXTENDED_DIAGNOSTIC_SESSION)
{
RespBuf[0] = 0x7F;
RespBuf[1] = 0x10;
RespBuf[2] = NRC_7E; // 服務序列中的子功能不支持(當前會話不支持該切換)
return E_OK;
}
/* 檢查切換條件2:安全訪問是否已解鎖(通常需要高安全級別) */
if (Dcm_SecurityLevel != DCM_SEC_LVL_PROGRAMMING) // 假設DCM_SEC_LVL_PROGRAMMING是編程安全級別
{
RespBuf[0] = 0x7F;
RespBuf[1] = 0x10;
RespBuf[2] = NRC_33; // 安全訪問未解鎖
return E_OK;
}
/* 檢查切換條件3:車輛狀態是否允許(如車速、電壓等) */
if (Dcm_CheckVehicleConditions() != E_OK)
{
RespBuf[0] = 0x7F;
RespBuf[1] = 0x10;
RespBuf[2] = NRC_22; // 條件不滿足
return E_OK;
}
/* 執行編程會話的清理和準備工作 */
Dcm_ClearSessionResources(Dcm_CurrDiagSession);
Dcm_CurrDiagSession = DCM_PROGRAMMING_SESSION;
/* 重置并重新配置適用于編程會話的計時參數(如超時間隔) */
Dcm_ConfigureTimingParameters(DCM_PROGRAMMING_SESSION);
break;

case DCM_EXTENDED_DIAGNOSTIC_SESSION: // 子功能碼 0x03 : 切換到擴展會話
/* 檢查切換條件:是否在默認會話下請求切換 */
if (Dcm_CurrDiagSession != DCM_DEFAULT_SESSION)
{
RespBuf[0] = 0x7F;
RespBuf[1] = 0x10;
RespBuf[2] = NRC_7E;
return E_OK;
}
Dcm_ClearSessionResources(Dcm_CurrDiagSession);
Dcm_CurrDiagSession = DCM_EXTENDED_DIAGNOSTIC_SESSION;
break;

default: // 其他不支持的子功能
RespBuf[0] = 0x7F;
RespBuf[1] = 0x10;
RespBuf[2] = NRC_12; // 子功能不支持
return E_OK;
}

/* 3. 構造0x10服務的肯定響應報文 */
RespBuf[0] = 0x50; // 正響應ID
RespBuf[1] = subFunction; // 回聲請求的子功能
RespBuf[2] = (uint8)(Dcm_P2Server_Max >> 8); // 時間參數 P2 Server Max 高位字節
RespBuf[3] = (uint8)(Dcm_P2Server_Max & 0xFF); // 時間參數 P2 Server Max 低位字節
RespBuf[4] = (uint8)(Dcm_P2StarServer_Max >> 8); // 時間參數 P2* Server Max 高位字節
RespBuf[5] = (uint8)(Dcm_P2StarServer_Max & 0xFF);// 時間參數 P2* Server Max 低位字節
RespBuf[6] = 0x01; // 可選參數,通常為0x01
RespBuf[7] = 0xF4; // 可選參數,通常為0xF4

/* 4. 重置S3 Server超時計時器 */
Dcm_S3ServerTimer = Dcm_S3ServerMax; // 重新加載定時器初始值
Dcm_TimerRunning = 1; // 啟動計時器

return E_OK;
}
會話超時管理

ECU的系統Tick中斷或后臺主循環中,需要持續處理會話的超時邏輯。其核心思想是:當ECU處于某個非默認會話時,會啟動一個計時器(S3 Server),并在計時器到期后將會話切回默認會話。

/** @brief 定時器服務函數(通常在1ms或10ms中斷/循環中被調用) */
void Dcm_MainFunction_Timer (void)
{
/* 1. 會話超時管理 (S3 Server) */
if (Dcm_TimerRunning == 1) // 如果有計時器正在運行
{
if (Dcm_S3ServerTimer != 0U) // 如果計時器未歸零
{
Dcm_S3ServerTimer--; // 計時器遞減
}

if (Dcm_S3ServerTimer == 0U) // 如果計時器歸零,會話超時
{
Dcm_CurrDiagSession = DCM_DEFAULT_SESSION; // 強制切換回默認會話
Dcm_TimerRunning = 0; // 停止計時器
/* 通知系統:會話已因超時而退出,重置任何與之前會話相關的配置 */
Dcm_NotifySessionTimeout();
}
}

/* 2. 其他定時管理,如P2/P2*服務器的超時監控等 */
// ...
}
注意:上述代碼為典型設計思路,實際產品級實現通常在AUTOSAR DCM(診斷通信管理)模塊的Dcm_DiagnosticSessionControl_SubFnc函數和Dcm_Timer函數中完成。
典型安全刷寫流程

一個完整的、安全的ECU軟件升級流程,會充分體現這套三級安全體系。通常包括以下步驟:

  1. 進入擴展會話 :診斷儀發送 10 03 ,ECU進入擴展會話,解鎖部分功能。

  2. 安全訪問認證 :診斷儀通過 27 服務(請求種子->發送密鑰)通過ECU的高級別身份驗證。成功后,ECU解鎖編程相關權限。

  3. 刷寫前預檢查 :使用 31 例程控制服務檢查刷寫條件(如電壓、車速),確保環境安全。

  4. 進入編程會話 :診斷儀發送 10 02 。ECU驗證當前在擴展會話且通過安全認證后切換至編程會話,并 停止應用軟件運行 ,準備接收新固件。

  5. 執行固件更新 :通過 34 , 36 , 37 等服務,將新固件數據下載到ECU的特定內存區域(如Flash)。

  6. 復位與退出 :更新完成后,發送 11 01 硬復位ECU,使其重啟。此時ECU會 自動回到默認會話 ,新固件開始運行。

這種分級設計有效確保了即使在安全認證失敗的情況下,ECU也不會被惡意刷寫,保護了核心功能安全。

特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關推薦
熱點推薦
100萬公里,成了汽車行業不敢提的詞?

100萬公里,成了汽車行業不敢提的詞?

虎嗅APP
2026-05-14 18:07:07
44歲卡里克確認轉正!簽約3年 救火4個月率曼聯重返歐冠+15戰10勝

44歲卡里克確認轉正!簽約3年 救火4個月率曼聯重返歐冠+15戰10勝

我愛英超
2026-05-15 22:10:38
特朗普離京前,對臺灣問題已作明確表態,解讀如下:

特朗普離京前,對臺灣問題已作明確表態,解讀如下:

大中國
2026-05-15 21:04:02
新婚15天就爆不倫!日諧星床戰照外泄 人妻私訊「穿最色內褲」求歡

新婚15天就爆不倫!日諧星床戰照外泄 人妻私訊「穿最色內褲」求歡

ETtoday星光云
2026-05-14 15:58:05
中央氣象臺連發大霧暴雨強對流預警!廣東南部沿海有大暴雨

中央氣象臺連發大霧暴雨強對流預警!廣東南部沿海有大暴雨

南方都市報
2026-05-15 10:50:26
中美這場舉世矚目的會晤,釋放了哪些重要信號?

中美這場舉世矚目的會晤,釋放了哪些重要信號?

補壹刀
2026-05-15 14:03:13
新能源概念通脹退潮后,誰在裸泳?

新能源概念通脹退潮后,誰在裸泳?

虎嗅APP
2026-04-23 22:36:41
江西舉報恩人沈女士已社死,正臉照曝光,大叔崗位被調,景區回應

江西舉報恩人沈女士已社死,正臉照曝光,大叔崗位被調,景區回應

奇思妙想草葉君
2026-05-15 07:33:51
U17國足極速扳平!萬項戲耍沙特防線,3場造4球,鄺兆鐳助攻

U17國足極速扳平!萬項戲耍沙特防線,3場造4球,鄺兆鐳助攻

奧拜爾
2026-05-16 01:35:34
悲催!網傳四川一貿易公司半夜倒閉,工資馬上發,員工哭訴失業了

悲催!網傳四川一貿易公司半夜倒閉,工資馬上發,員工哭訴失業了

火山詩話
2026-05-15 14:45:12
國企為什么不上桌?

國企為什么不上桌?

家傳編輯部
2026-05-15 15:17:35
馬特·達蒙新片大賣,全員發獎金

馬特·達蒙新片大賣,全員發獎金

娛圈觀察員
2026-05-15 01:31:22
持續引領百萬級豪華市場,攬勝與路虎衛士的不可替代性從何而來?

持續引領百萬級豪華市場,攬勝與路虎衛士的不可替代性從何而來?

球叔教你買車
2026-04-29 09:24:34
影壇大咖去世,66歲鐘楚紅淚灑靈堂,周星馳周潤發送花,眾星現身

影壇大咖去世,66歲鐘楚紅淚灑靈堂,周星馳周潤發送花,眾星現身

開開森森
2026-05-15 08:51:25
戛納紅毯第二彈!章澤天好美,袁姍姍嚇我一跳,周也沒扛住生圖

戛納紅毯第二彈!章澤天好美,袁姍姍嚇我一跳,周也沒扛住生圖

八卦南風
2026-05-15 15:58:56
特朗普結束訪華,大贊中南海景致:若待得慣都不想走

特朗普結束訪華,大贊中南海景致:若待得慣都不想走

澎湃新聞
2026-05-15 18:28:12
英超官方承認曼城獲利,VAR漏判恐讓阿森納痛失冠軍

英超官方承認曼城獲利,VAR漏判恐讓阿森納痛失冠軍

樂道足球C
2026-05-15 20:34:33
保時捷中國高管喊話被抄襲無奈,羅永浩怒懟:論流氓誰能跟保時捷比,新能源抄了保時捷的,不是只有那個誰和那個誰嗎

保時捷中國高管喊話被抄襲無奈,羅永浩怒懟:論流氓誰能跟保時捷比,新能源抄了保時捷的,不是只有那個誰和那個誰嗎

大風新聞
2026-05-15 12:21:07
成交價1.1億!國際足聯低頭,央視拿下世界杯版權,卻遭全網吐槽

成交價1.1億!國際足聯低頭,央視拿下世界杯版權,卻遭全網吐槽

譚談社會
2026-05-15 16:49:00
張雪機車再拿第一!WSBK捷克站自由賽:53號車手德比斯奪全場第一

張雪機車再拿第一!WSBK捷克站自由賽:53號車手德比斯奪全場第一

快科技
2026-05-15 18:00:34
2026-05-16 03:00:49
新能源自動駕駛 incentive-icons
新能源自動駕駛
專注于半導體行業資訊
977文章數 347關注度
往期回顧 全部

科技要聞

直降千元起步!蘋果華為率先開啟618讓利

頭條要聞

黃仁勛在北京喝豆汁痛苦皺眉 問“這是什么東西”

頭條要聞

黃仁勛在北京喝豆汁痛苦皺眉 問“這是什么東西”

體育要聞

德約科維奇買的球隊,從第6級聯賽升入法甲

娛樂要聞

方媛為何要來《桃花塢6》沒苦硬吃?

財經要聞

騰訊掉隊,馬化騰戳破真相

汽車要聞

高爾夫GTI刷新紐北紀錄 ID. Polo GTI迎全球首秀

態度原創

教育
親子
健康
藝術
軍事航空

教育要聞

2027英國留學費用+排名+雅思要求一篇看懂

親子要聞

孕婦補鈣怕刺激怎么選?液體鈣無添加配方實測,藍帽認證更靠譜

專家揭秘干細胞回輸的安全風險

藝術要聞

1008米!沙特“世界第一高樓”項目,為何極有可能建成?

軍事要聞

烏克蘭首都基輔遭空襲 死亡人數增至12人

無障礙瀏覽 進入關懷版