基于UDS协议的Bootloader
參考上汽標準:SMTC 2 800 004 電控單元診斷開發的技術要求
一、概述
二、Bootloader要求
三、刷新流程
四、刷新示例
一、概述
Bootloader概述:使用UDS協議服務實現應用軟件,應用數據(包括網絡配置數據和標定數據)的更新。Bootloader主要用于:研發、生產、售后。
?
二、Bootloader要求
?總體要求:
1.bootloader應支持刷新電控單元的應用軟件、應用數據(包括網絡配置數據和標定據)。
2.bootloader負責驗證應用軟件和應用數據是否正確。
3.當應用軟件或應用數據丟失或需要更新時,電控單元須進行刷新以恢復功能
4.數據傳輸基于CAN 總線并滿足 ISO 15765-2 和 ISO 14229-1 的要求
5.任何情況下電控單元都不應支持數據上傳功能
6.應用軟件、網絡配置數據和標定數據應可單獨進行刷新。引導加載程序禁止自更新
7.對于同一物流數據標識符,分別從應用軟件和引導加載程序獲取到的信息應相同?
通信要求1.引導加載程序應使用固定的 CAN ID,與增強型診斷的 CAN ID相同
2.診斷請求和應答報文的數據長度固定 8字節,不足填充0x00
3.網絡層時序參數要求遵照ISO 15765-2定義
4.流控要求
5.應用層時序要求
安全要求1.電控單元應保證從應用軟件跳轉至bootloader時的狀態是安全的
2.測試設備應使用種子和密鑰進行安全訪問,以防止未授權刷新。
3.bootloader應使電控單元輸入輸出端口設置為安全狀態
4.bootloader程序應被保護,不可刷新,在刷新失敗時應能再次刷新
5.電控單元應將刷新計數存儲于非易失性存儲器,每次加1
6.電控單元應計算每個數據塊CRC并在退出傳輸服務請求的肯定應答中返回CRC(CRC遵守CTII-16)
7.電控單元應對下載到存儲器的數據進行完整性檢查
8.電控單元應驗證應用軟件與引導加載程序是否兼容、應用數據與應用軟件是否兼容
9.電控單元退出刷新會話時應根據軟件完整性狀態和軟件兼容性狀態的參數值更新軟件有效標志位,都有效時置1,bootloader才能運行
會話管理要求1.電控單元應在收到請求報文 DSC:02 后500 ms 內進入引導加載程序的刷新會話
2.流程
?a) 電控單元運行在應用軟件時接收到子功能為 0x02 的服務$10 請求報文,應置刷新入口標志位為真(1)并存儲于非易失性存儲器。
?b) 電控單元復位。
?c) 電控單元啟動,進入引導加載程序的默認會話,并檢查刷新入口標志位的值判斷之前應用軟件是否請求進入刷新會話。(刷新入口標志位判斷需在啟動時間20 ms 內完成。)
?d) 若為真,電控單元進入刷新會話并將刷新入口標志清零。
?e) 若為否,電控單元保持運行在引導加載程序中的默認會話。僅當啟動時間超過20 ms 且軟件有效標志位為真時,電控單元從引導加載程序跳轉到應用軟件
存儲器分配要求電控單元存儲器分為 4 個分區
1)應用軟件
2)網絡配置數據
3)標定數據
4)Bootloader程序
診斷服務要求
?
???? bootloader應支持的服務
診斷服務要求??? 請求下載服務($34)
n診斷服務要求??? 傳輸數據服務($36)
注: 發生序號錯誤,序號超過長度都應終止數據傳輸
注:將下載循環中傳輸的數據塊的循環冗余校驗值發送給測試工具。校驗算法為多項式 CRC16(CITT)。
多項式:0x1021
初始值:0xFFFF
三、刷新流程
刷新步驟
?
?步驟 a(標準步驟):
?????? 刷新事件由一個會話類型為刷新會話,物理尋址/功能尋址的診斷會話控制($10)服務開始。電控單元接收到請求報文后應為程序刷新分配一切必須的資源。
步驟 b(標準步驟):
?????? 測試工具獲取電控單元的物流數據,如車輛識別代碼、電控單元硬件號等。
步驟 c(標準步驟):
?????? 測試工具解鎖電控單元使能刷新相關的服務。 所有可刷新的電控單元應支持安全訪問 ($27)服務。
步驟 d(備選步驟):
?????? 為了允許應用軟件/應用數據下載,電控單元應擦除存儲器相應的區域。該功能使用程序控制($31)服務執行存儲器擦除程序。
注:該步驟可選且不推薦使用。電控單元應在接收到一個有效的請求下載($34)服務請求報文時執行存儲器擦除操作。
步驟 e(標準步驟):
???? 每次將連續的數據塊下載到非易失性存儲器時應遵循下面的服務序列:
a) 請求下載($34) ;
b) 傳輸數據($36) ;
c) 請求退出傳輸($37)。
????? 在請求下載、傳輸數據和請求退出傳輸序列正確執行時,電控單元僅支持測試工具保持連接服務,忽略其它服務。如果塊長度超出了網絡層緩存大小,單個數據塊須使用多個傳輸數據($36)請求報文才能傳輸完全。
????? 電控單元接收到請求退出傳輸服務的請求報文時,應計算下載到非易失性存儲器的數據塊的CRC16 校驗值,并在肯定應答報文中將該值發送給測試工具。測試工具將電控單元計算的校驗值與工具端的校驗值相比較。若二者相等,則證明數據塊下載成功。電控單元與測試工具均采用表 23 中規定的多項式 CRC16(CITT)算法。刷新文件中的數據塊應能按地址遞升序列向電控單元傳輸。
?步驟 f(標準步驟):
?????? 當所有數據塊下載完成后,測試工具應通過程序控制($31)服務啟動完整性檢查程序驗證下載是否成功,并更新軟件完整性狀態參數。
步驟 g(標準步驟):
?????? 若軟件完整性檢查的結果為真,則電控單元應執行刷新相關性檢查,并根據檢查結果更新軟件兼容性狀態參數。
步驟 h(標準步驟):
?????? 在應用軟件/應用數據下載之后, 測試工具應更新物流數據,如刷新信息域、電控單元零件號等。
步驟 i(標準步驟):
?????? 電控單元須復位使下載的應用軟件/應用數據生效。電控單元當退出刷新會話時應更新軟件有效標志位。
刷新程序標識符規定
?
0xDFFF:檢查刷新完整性
????? 該數值用于檢查電控單元存儲器刷新的完整性,包括應用軟件、網絡配置數據和標定數據等。
0xFF00:擦除存儲器
??? 該數值用于啟動電控單元存儲器擦除程序
0xFF01:檢查刷新相關性
???? 該數值用于檢查電控單元存儲器刷新的相關性
引導加載程序特定數據標識符
?
AFFC:刷新計數
AFFD:軟件完整性狀態
AFFE:軟件兼容性狀態
AFFF:軟件有效性標志位
四、刷新示例
示例假電控單元物理請求CAN ID 為 0x7E0;電控單元物理應答 CAN ID 為0x7E8;功能請求 CAN ID 為 0x7DF
使用子功能為 0x02 的服務$10 讓車輛 CAN總線上的所有電控單元進入刷新會話。 不可刷新的電控單元應進入安靜模式,避免干擾刷新事件
使用服務$22 從電控單元獲取車輛識別代碼、車輛特征信息和電控單元硬件號
使用下載數據前使用服務$27 解鎖電控單元。沒有合法的訪問授權,測試工具和電控單元均不能繼續刷新流程
測試工具請求開始下載數據并將該數據塊的起始地址和尺寸通知電控單元。多個數據庫需重復請求下載、傳輸數據和請求退出傳輸的服務序列
使用服務$36 向電控單元下載所有數據。在服務$34 所描述的數據塊下載完成前,測試工具一直重復該服務。
在一個完整的數據塊下載后, 測試工具使用服務$37 退出數據傳輸。如果還有其它數據需要下 載 , 測 試 工 具 應 重 復 該 服 務 序 列($34,$36,$37)下載下一數據塊
激活 0xDFFF 程序以檢查刷新完整性
激活 0xFF01 程序以檢查刷新相關性
電控單元刷新成功后,更新電控單元零件號、刷新信息域和網絡信息域-當前數據
復位電控單元使新下載的應用軟件或標定數據生效
總結
以上是生活随笔為你收集整理的基于UDS协议的Bootloader的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ANSYS 简支梁的约束
- 下一篇: ANSYS——固定斜度的变截面变截面的定