目的:瞭解wince下AGX平臺的mcu升級過程,然後移植到android下升級!(X代表某個代號)
一 App請求升級過程
ARM發送升級請求0xFF00 //NAVI發送升級請求,MCU收到後準備發送數據
↓
ARM收到0x0605 //MCU準備重啓
↓
ARM發送0x0606給MCU重啓
↓
ARM收到SYS_POWEROFF
↓
重啓
↓
ComClsUI::Hand發送握手信息0x0602
↓
收到握手成功0x0604
↓
ARM發送0xFE03 確認導航可以進行CB軟件升級 (每次上電都會發送。。如果沒有反饋。。就直接進入系統界面)
↓
收到0xFF00 //CB發送升級請求,NAVI收到後準備發送數據
↓
反初始化串口
↓
MCUUpdate()啓動升級軟件CBUpdate.exe
接下來就是CBUpdate升級過程執行流了
二 CBUpdate升級過程執行流如下
創建CBUpdateThread線程
↓
實例化CUpdateManager對象
↓
實例化ComClsUI對象
↓
打開COM4 波特率設置爲115200
↓
創建ComClsUI::Hand,ComClsUI::Work,ComClsUI::CanMsgThread線程處理串口數據
↓
ComClsUI::Hand發送握手信息0x0602
↓
收到 0xDD00 設定6秒定時器請求MCU重啓 0x0501 //其中0xDD00 爲8900與CB的串口通信異常信息
↓
再次發送ComClsUI::Hand發送握手信息0x0602
↓
收到0x0604 //0x0604給導航握手 表示握手成功
↓
開始CBUpdateStart
↓
創建CUpdateManager::UpdateThread線程
↓
獲取RdDnl.upg文件的總幀數GetFileLineTotals
↓
發送幀SendFrameData ->CANSendMsgToCB(m_UpdateFrameID,(char*)frameBuf,len);
↓
mcu反饋0xFF01 (下一幀)取消設定6秒定時器請求MCU重啓 0x0501 //CB升級每一幀確認
↓
發送下一幀CANSendMsgToCB(m_UpdateFrameID,(char*)frameBuf,len);
↓
循環
↓
mcu反饋0xFF03 //升級完成信息
↓
ARM收到SYS_POWEROFF 消息
↓
MCU 重啓Reset