1簡介
FlexCAN OTA 是由靈動提供的一種基于 UDS 協(xié)議使用 CAN 總線實現(xiàn)對 MCU 的 App 固件更新的解決方案。該解決方案的軟件部分主要由:Bootloader、App和PC Tool三部分構(gòu)成,硬件部分如圖 1 所示。
圖 1 MCU 與 PC 機交互示意圖
1.1 關鍵特性
基于 UDS(ISO14229) 標準
基于 CAN(ISO11891-1) 標準
具備對 App 固件 CRC 完整性校驗功能
使用主機上傳 Flash driver 到 MCU
在 Bootloader 中進行 App 有效性檢查
提供用于驗證 App 固件更新的 PC 端上位機工具
1.2 什么是 FlexCAN ?
CAN 是控制器域網(wǎng) (Controller Area Network, CAN) 的簡稱,是一種功能豐富的車用總線標準,被設計用于在不需要主機(Host)的情況下,允許網(wǎng)絡上的單芯片和儀器相互通信。是由研發(fā)和生產(chǎn)汽車電子產(chǎn)品著稱的德國 BOSCH 公司開發(fā),并最終成為國際標準(ISO11898),是國際上應用最廣泛的現(xiàn)場總線之一。
FlexCAN 是 CAN 協(xié)議的一個高完成度版本。以靈動 MM32F0140 系列 MCU 內(nèi)嵌的 FlexCAN 為例,其符合 ISO 11898-1 標準,支持 CAN 2.0B 版本協(xié)議,位速率高達 1 Mbps,具有非常靈活的用于傳輸和接收的郵箱系統(tǒng),可以接收和發(fā)送 11 位標識符的標準幀,也可以接收和發(fā)送 29 位標識符的擴展幀,主要被設計用作車載串行總線,可滿足實時處理、車輛在電磁干擾環(huán)境下的可靠操作、成本效益、帶寬等要求。
1.3 什么是 UDS ?
UDS(Unified Diagnostic Services,統(tǒng)一診斷服務)是一種用于汽車電子控制器 ECU (Electronic Control Units) 環(huán)境下的一種診斷通信協(xié)議,可實現(xiàn)診斷、固件更新、日常測試等功能,在 ISO 14229 中規(guī)定了其實現(xiàn)標準。
在本實例中,UDS 通信是在客戶端-服務端關系中執(zhí)行的??蛻舳耸巧衔粰C下載軟件運行于 PC 機,服務端是帶有FlexCAN IP模塊的 MM32 MCU。例如,將 CAN 總線接口連接到 MCU,并將 UDS 請求發(fā)送到 MCU。當 MCU 支持 UDS 服務時,它將根據(jù)客戶端發(fā)出的請求做出相應的響應。
1.4 為什么用 Bootloader ?
對于 MCU 而言,如果程序內(nèi)置有基于FlexCAN 的 Bootloader,則每次更新 MCU 的固件則不需要拆開外殼也不必再使用燒錄器進行燒錄,而可直接通過 CAN 總線來更新程序,這樣更方便也更安全,而且隨著智能化的普及,甚至可以對 MCU 進行遠程升級。Bootloader 程序結(jié)構(gòu)對比如圖 2 所示:
圖 2 程序結(jié)構(gòu)對比框圖
1.5 為什么基于 UDS ?
為了規(guī)范 Bootloader 的全過程,通過使用成熟的平臺進而提供高質(zhì)量 Bootloader。因 UDS 在設計時考慮了 Bootloader 的需求,并為 Bootloader 提供了相關服務以供使用,比如診斷會話控制、ECU 重置、讀取數(shù)據(jù)、請求下載、傳輸數(shù)據(jù)、請求傳輸退出等,可以實現(xiàn)更高效和可靠的刷寫功能。故主機廠普遍會要求在 UDS 規(guī)范的基礎上完成 Bootloader 功能。
1.6 用到了哪些 UDS 服務?
在 Bootloader 中,使用到 UDS 的 $10、$11、$27 和 $3E 基礎診斷服務,$22、$2E 讀寫 DID 服務,$31、$34、$36 和 $37 固件數(shù)據(jù)傳輸相關服務。UDS 服務概覽如表 1-1 所示:
表 1-1
2Bootloader
Bootloader 是一段允許在不使用燒錄器的情況下更新App固件的代碼,基于靈動 MindSDK 實現(xiàn)的 Bootloader 樣例工程支持 MDK、IAR 和 ARMGCC 三種工具鏈進行開發(fā)。在實際的使用過程中只需要在第一次使用時通過燒錄器將 Bootloader 燒錄進 MCU,后續(xù)的 App 都可以通過使用基于 CAN 總線的 UDS協(xié)議完成固件更新。
2.1 Bootloader 功能特性
支持 Service 27,用戶可根據(jù)自身需求添加安全訪問算法。
支持 Service 22 和 Service 2E,用戶可以根據(jù)自身需求添加策略,進行信息讀出與存儲。
外置 Flash driver,使用時通過外部 PC 或后臺將 Flash driver 加載到 MCU 的 RAM 中進行安全的 Flash 擦寫操作。
提供看門狗監(jiān)控功能,用戶可根據(jù)自身需求選擇性開啟看門狗監(jiān)控程序。
2.2 客制化修改說明
修改診斷 ID
可在樣例工程的 board/FblHalCan.h 中修改診斷 ID 的值。
指定數(shù)據(jù)填充值
當需要發(fā)送的數(shù)據(jù)長度不滿足 8 字節(jié)長度時,通過宏定義可以更改填充,用戶可以在樣例工程的 board/FblHalCan.h 中指定填充值。
使能看門狗
用戶可以在樣例工程的 board/FblMacros.h 中打開宏開關 WDG_ENABLE 使能看門狗服務,并且實現(xiàn) ResetWdg 操作。
安全訪問算法接口
Bootloader中支持 27 Service,用戶可在樣例工程的 board/FblMacros.h 中使能宏開關 ENABLE_SECURITY_ALGORITHM_VERIFICATION 根據(jù)自身需求添加安全訪問算法。
2.3 Flash driver 介紹
什么是Flash driver?
在OTA程序升級過程中,發(fā)送App可執(zhí)行文件之前,向底層先發(fā)送一段二進制文件,這段代碼實現(xiàn)了對MCU片內(nèi) Flash 的擦寫功能,稱為 Flash driver。
Flash driver存在的意義
在車載ECU控制器中,為了安全考慮,會盡可能的避免在代碼中固化有對flash進行擦寫操作,主要為了避免在程序跑飛時誤調(diào)用該部分代碼,使軟件代碼部分受到破壞。
Flash driver的實現(xiàn)方式
a. 將flash driver固化在底層flash中,在運行的時候?qū)lash中的flash driver拷貝到ram中來運行,這是比較傳統(tǒng)的方式,但是避免不了提到的安全性問題。
b. 將flash driver這段代碼保存在PC端或后臺,在每次執(zhí)行OTA升級前,將這段代碼先發(fā)送給MCU,這樣可以避免方式 a 中提到的安全性問題。
3App
基于靈動 MindSDK 提供的 flexcan_ota_app 樣例工程進行開發(fā)和生成用于更新的 HEX 格式 App 固件生成,無需任何適配操作即可生成用于 OTA 升級的 App 固件。
3.1 使用說明
將 Bootloader 通過下載器下載到 MCU 中后,可通過提供的 PC Tool 來刷寫生成的固件,通過 PC Tool 下載成功后,一方面 PC 終端會有下載成功提示,另一方面也可以查看開發(fā)板上對應固件實現(xiàn)的功能是否開始執(zhí)行。
關于 App 固件可從提供的 flexcan_ota_app 樣例工程編譯源碼并將生成“.hex”格式的 App 固件進行加載。
3.2 App 設計規(guī)范
App 與 Bootloader 存放在 MCU 的同一塊 Flash 的兩個不同區(qū)域中,為保證兩個軟件的正常使用,App 設計遵循表 2-1 和表 2-2 所述規(guī)范。
表 2-1
表 2-2
4PC Tool
Flexcan OTA PC Tool 是用于驗證靈動 MindSDK 中提供的 FlexCAN OTA 解決方案的簡易 PC 端上位機工具。
4.1 功能特性
支持 CAN 通信速率自定義
支持 Win10 操作系統(tǒng)下運行
支持默認參數(shù)直接運行和命令行下帶參數(shù)運行
支持直接加載 MDK 和 IAR 工具鏈下生成的 HEX 格式文件
基于 Python 使用 python-udsoncan 開發(fā),可根據(jù)不同需求靈活進行二次開發(fā)
4.2 開發(fā)環(huán)境
本工具在 Win10 平臺使用 Python 進行開發(fā),基于 UDS 使用 CAN 協(xié)議,支持 PEAK CAN卡與 MCU 進行通訊。
4.3 使用說明
請按照如下步驟進行操作:
a下載 Bootloader 到 MCU
將提供的 flexcan_ota_bootloader 樣例工程編譯并下載到開發(fā)板中。
b安裝 CAN 卡驅(qū)動并連接 MCU
在這里我們用到的是PCAN-USB,下載并安裝驅(qū)動(https://peak-system.com.cn/driver/) ,并將 PCAN-USB 和開發(fā)板上的 CAN 收發(fā)器通過雙絞線連接以及通過 USB 和 PC 機連接。
c運行 FlexCAN OTA PC Tool
方式一:按照默認參數(shù)直接運行
直接雙擊 flexcan_ota_pc_tool_v1.0.exe,如圖 3 所示,默認將按照 500Kbps 的比特率進行 CAN 通信,F(xiàn)lash_driver 文件的加載地址為當前路徑下的文件(./flash_driver.hex), App 文件的加載路徑為當前路徑下文件(./app.hex)。
圖 3
方式二:按照指定參數(shù)運行
在 Win10 平臺下啟動命令行窗口并切換到當前路徑下,獲取幫助如圖4所示,輸入如下指令并按回車鍵:
flexcan_ota_pc_tool_v1.0.exe-h
圖 4
按照指定參數(shù)運行如圖 5 所示,輸入如下指令并按回車鍵:
flexcan_ota_pc_tool_v1.0.exe-b500000-f"./flash_driver.hex"-a"./app.hex"
其中 flash_driver.hex 文件為用于安全地擦寫片內(nèi) flash 的代碼,在每次 OTA 更新中復用即可。
圖 5
d結(jié)束
等待 FlexCAN OTA 固件更新流程結(jié)束,并按任意按鍵退出。
5注意事項
FlexCAN OTA Tool 為用于驗證基于 UDS 使用 CAN 協(xié)議進行 App 固件更新的上位機工具,PC 端使用 PEAK-CAN 與 MCU 通訊,僅支持在 Win 10 操作系統(tǒng)下運行, 且用于功能性驗證,若遇到軟件閃退等問題請重啟該軟件并復位 MCU。該工具可根據(jù)開發(fā)者項目需求進行二次開發(fā)。
以上介紹是基于MM32F0140 系列 MCU 進行介紹和示例演示,相關源碼請訪問靈動官網(wǎng)進行獲?。?/p>
01進入靈動官網(wǎng)
02打開“產(chǎn)品”菜單下 MM32F0140 頁面,瀏覽“文檔”列表。
03在“應用筆記”中下載“AN0035_FlexCAN_OTA”文檔,獲取源碼。
審核編輯:湯梓紅
-
mcu
+關注
關注
146文章
17123瀏覽量
350978 -
CAN
+關注
關注
57文章
2744瀏覽量
463612 -
總線
+關注
關注
10文章
2878瀏覽量
88051 -
OTA
+關注
關注
7文章
578瀏覽量
35193 -
bootloader
+關注
關注
2文章
235瀏覽量
45611
原文標題:靈動微課堂 (第244講)|FlexCAN OTA
文章出處:【微信號:MindMotion-MMCU,微信公眾號:靈動MM32MCU】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論