雙mcu架構(gòu)系統(tǒng)更新程序的通信方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及通信領(lǐng)域,特別是涉及一種雙MCU架構(gòu)系統(tǒng)更新程序的通信方法。
【背景技術(shù)】
[0002] 如圖1所示,具有雙MCU架構(gòu)的汽車控制器在結(jié)構(gòu)上常采用的雙MCU控制系統(tǒng)將 信號分別由主控制芯片(MMCU)和輔控制芯片(SMCU)進行獨立采集,再通過主輔間16位數(shù) 據(jù)寬度的SPI通信方式來完成兩者數(shù)據(jù)的交互與比對,以實現(xiàn)由雙MCU聯(lián)合控制的輸出,達 到更安全可靠的控制效果。目前,MMCU升級程序技術(shù)發(fā)展成熟,且一般符合Bosch CAN規(guī) 范2. 0B,由上位機將程序的目標代碼S19 (或Hex)文件中的有效信息進行提取,在整車CAN 網(wǎng)絡(luò)中來完成MMCU燒寫程序的過程。其中,S19文件是Motorola MCU的機器碼文件,將其 下載到MCU內(nèi)部Flash存儲器之后,MCU執(zhí)行這些機器碼,其文件格式如圖2所示。
[0003] 目前,針對SMCU在雙MCU結(jié)構(gòu)下的程序燒寫的現(xiàn)行方法是:
[0004] [1]利用燒寫器一次性燒寫SMCU代碼,以后便不再更新升級;
[0005] [2]SMCU采用與MMCU獨立的一套程序燒寫接口,脫離整車網(wǎng)絡(luò)用燒寫器升級程 序。
[0006] 以上兩種方法主要缺點是無法實現(xiàn)SMCU在整車CAN網(wǎng)絡(luò)環(huán)境下的軟件在線刷新 升級,必須拆卸控制器后連接燒寫器進行軟件刷新,而且在產(chǎn)品量產(chǎn)階段因考慮到經(jīng)濟成 本等因素,也不為SMCU保留程序燒寫的外接網(wǎng)絡(luò)端口或燒寫接插件,軟件升級十分不便。
【發(fā)明內(nèi)容】
[0007] 本發(fā)明要解決的技術(shù)問題是提供一種在雙MCU架構(gòu)系統(tǒng)多結(jié)點組網(wǎng)中符合CAN報 文與SPI幀之間交互信息的協(xié)議,能更有效地將目標代碼S19 (或Hex)文件下載至SMCU中 的通信方法。
[0008] 為解決上述技術(shù)問題,本發(fā)明雙MCU架構(gòu)系統(tǒng)更新程序的通信方法,包括:
[0009] 1)定義四種類型的16位數(shù)據(jù)寬度的單元幀,用于填充S19文件數(shù)據(jù);
[0010] 流控幀:攜帶某結(jié)點組網(wǎng)環(huán)境下的通訊指令,對通訊控制流起到管理收發(fā)的作 用;
[0011] 地址幀:攜帶S19文件單行記錄的起始地址及其序列信息;
[0012] 代碼幀:攜帶S19文件單行記錄的代碼及其序列信息;
[0013] 校驗幀:攜帶S19文件單行記錄的校驗和信息。
[0014] 2)將S19文件數(shù)據(jù)的CAN報文數(shù)據(jù)場根據(jù)步驟1)定義的四種幀類型填充為四個 單元帖;
[0015] 2. 1)流控幀填充采用:類型場填充ObOO,表征該幀包含流控管理的指令信息;根 據(jù)結(jié)點間通訊的指令集,填充至流控場,數(shù)據(jù)場填充的內(nèi)容為組網(wǎng)中的結(jié)點編號,表征該結(jié) 點需執(zhí)行流控場中的指令;
[0016] 2. 2)地址幀填充采用:類型場填充ObOl,表征該幀包含部分地址信息;
[0017] S19文件某條行記錄中3個字節(jié)的起始地址,按S19幀格式解碼為一組前后三個 序列的地址幀,由序列場的值分別填充表示出地址低字節(jié)、地址高字節(jié)、地址擴展頁的識別 位;數(shù)據(jù)場的值為該行記錄3個字節(jié)起始地址中的某個,且為8位標識符的數(shù)據(jù);
[0018] 2. 3)代碼幀填充采用:類型場填充OblO,表征該幀包含部分代碼信息;
[0019] S19文件某條行記錄中32個字節(jié)的代碼,按S19幀格式解碼為一組前后32個序列 的地址幀,由序列場的值分別填充表示出前后第1~32個代碼數(shù)據(jù)的識別位,如果某條記 錄行字節(jié)數(shù)N〈32,則序列依次填充至整數(shù)N ;數(shù)據(jù)場的值為該行記錄的64個字節(jié)代碼中的 某個,且為8位標識符的數(shù)據(jù);
[0020] 2. 4)校驗幀填充采用:類型場填充Obll,表征該幀包含校驗和的值;S19文件某條 行記錄中最后一位字節(jié)的校驗值,按S19幀格式解碼為一個8位標識符的數(shù)據(jù)填充至數(shù)據(jù) 場,其余6個位均預留;
[0021] 3) CAN數(shù)據(jù)場進行拆分,每一幀CAN數(shù)據(jù)場拆分形成四個SPI幀,對拆分形成的 SPI幀進行解析得到有效數(shù)據(jù);
[0022] 其中,所述拆分是步驟2)中每四個單元幀組合填充形成一幀CAN數(shù)據(jù)場的逆過 程,所述解析是步驟2) S19文件填充至單元幀的逆過程。
[0023] 上位機與MMCU之間的通信方式為CAN,其報文采用標準格式,CAN報文數(shù)據(jù)場為 8個字節(jié),所以可以將每幀CAN報文數(shù)據(jù)組合填充到4個單元幀中;MMCU與SMCU之間的通 信方式為SPI,其數(shù)據(jù)寬度也為16位,所以可以將SPI每幀數(shù)據(jù)由1個單元幀替代。也就 是,CAN報文的數(shù)據(jù)場可拆分為4個SPI幀數(shù)據(jù),用作反饋處理結(jié)果的流控幀只填充CAN數(shù) 據(jù)場的前兩個字節(jié)。通信數(shù)據(jù)的解析將每幀CAN報文數(shù)據(jù)組合填充到4個單元幀中的逆過 程,因此在多結(jié)點組網(wǎng)通信中,每個目標結(jié)點在接收到報文或幀的數(shù)據(jù)后,能按照上述方法 逆向進行先拆分成單元幀再按幀格式解析提取有效信息。
【附圖說明】
[0024] 下面結(jié)合附圖與【具體實施方式】對本發(fā)明作進一步詳細的說明:
[0025] 圖1是雙MCU控制系統(tǒng)的結(jié)構(gòu)示意圖。
[0026] 圖2是代碼S19文件的格式示意圖。
[0027] 圖3是本發(fā)明流控幀的幀格式示意圖。
[0028] 圖4是本發(fā)明地址幀的幀格式示意圖。
[0029] 圖5是本發(fā)明代碼幀的幀格式示意圖。
[0030] 圖6是本發(fā)明校驗幀的幀格式示意圖。
[0031] 圖7是本發(fā)明通信方法代碼下載通信轉(zhuǎn)化的流程示意圖。
[0032] 圖8是本發(fā)明一實施例的填充流程示意圖。
[0033] 圖9是一典型的多結(jié)點通信中轉(zhuǎn)系統(tǒng)示意圖。
【具體實施方式】
[0034] 本發(fā)明雙MCU架構(gòu)系統(tǒng)更新程序的通信方法定義了四種類型的16位數(shù)據(jù)寬度的 單元幀,以適用S19文件中的起始地址、代碼、校驗值和上下位機通信流控指令等分別填 充,再使CAN報文數(shù)據(jù)場以4個單元幀拆分與組合,而SPI幀僅以1個單元幀替代;MMCU網(wǎng) 關(guān)執(zhí)行CAN-SPI中轉(zhuǎn)本質(zhì)上就是進行以單元幀為最小單元的通信方式的拆分與組合。
[0035] 1)定義16位數(shù)據(jù)寬度的四種類型單元幀,用于填充S19文件數(shù)據(jù);
[0036] 流控幀:攜帶某結(jié)點的指令請求與響應(yīng)或工作狀態(tài)等信息,對通訊控制流起到管 理收發(fā)作用;
[0037] 地址幀:攜帶S19文件單行記錄的起始地址及其序列信息;
[0038] 代碼幀:攜帶S19文件單行記錄的代碼及其序列信息;
[0039] 校驗幀:攜帶S19文件單行記錄的校驗和信息。
[0040] 其中,僅流控幀的填充不涉及到S19文件信息的提取,另三種幀為實際程序的代 碼相關(guān)數(shù)據(jù)且SMCU必須使用寄存器作存儲處理;
[0041] 2)將S19文件填充至步驟1)定義的幀類型形成單元幀,每四個單元幀組合填充形 成一幀CAN數(shù)據(jù)場;
[0042] 2. 1)如圖3所示,流控幀填充采用:類型場填充ObOO,表征該幀包含流控管理的指 令信息;根據(jù)結(jié)點間通訊的指令集,即制定能夠控制得使上位機開關(guān)通信、啟停發(fā)送代碼、 進程顯示,MMCU啟停中轉(zhuǎn)、通訊轉(zhuǎn)換速率調(diào)整、工作狀態(tài)交互,以及SMCU代碼接收、智能校 驗并燒寫、工作狀態(tài)反饋等等的指令,以填充至流控幀;數(shù)據(jù)場填充的內(nèi)容為組網(wǎng)中的結(jié)點 編號,表示該結(jié)點需執(zhí)行流控場中的指令。結(jié)點數(shù)較少的網(wǎng)絡(luò)中,流控場完全可以表示明確 所有的結(jié)點指令(最多26 = 64個),因此可以將數(shù)據(jù)場預留,詳見表4 "單元幀數(shù)據(jù)分配 表"的流控幀。
[0043] 流控場的值與指令含義如表1所示。
[0044]
[0046] 表1
[0047] 2. 2)如圖4所示,地址幀填充采用:類型場填充ObOl,表征該幀包含部分地址信 息;
[0048] S19文件某條行記錄中3個字節(jié)的起始地址,解碼為一組前后三個序列的地址幀, 由序列場的值分別填充表示出地址低字節(jié)、地址高字節(jié)、地址擴展頁的識別位;數(shù)據(jù)場的值 為該行記錄3個字節(jié)起始地址中的某個,且為8位標識符的數(shù)據(jù),如表2所示;
[0050] 表 2
[0051] 2. 3)如圖5所示,代碼幀填充采用:類型場填充OblO,表征該幀包含部分代碼信 息;
[0052] S19文件某條行記錄中32個字節(jié)的代碼,解碼為一組前后32個序列的地址帖,由 序列場的值分別填充表示出前后第1~32個代碼數(shù)據(jù)的識別位(如果某條記錄行字節(jié)數(shù) N〈32,則序列依次填充至整數(shù)N,例如圖2中間位置的一條);
[0053] 實際應(yīng)用中上位機發(fā)送代碼幀時,序列場的序列號緊接著地址幀的序列號,即表 示第1~32個代碼的識別位填充到代碼幀數(shù)據(jù)場時,值依次為3~36。序列場的優(yōu)點,不 僅是網(wǎng)絡(luò)中的結(jié)點均可根據(jù)序列值判定是否發(fā)生丟幀,而且便于目標結(jié)點