[朱志斌 張祥]
基于LIN總線ECU遠(yuǎn)程升級(jí)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
[朱志斌 張祥]
LIN總線 MC9S12G128 ISO15765-2 ISO14229-1 兩級(jí)Bootloader
朱志斌
重慶郵電大學(xué)光通信與網(wǎng)絡(luò)重點(diǎn)實(shí)驗(yàn)室,重慶集誠(chéng)汽車電子有限責(zé)任公司,碩士研究生,主研方向?yàn)槠囯娮印?/p>
張祥
重慶集誠(chéng)汽車電子有限責(zé)任公司,軟件工程師,主研方向?yàn)槠囯娮印?/p>
隨著汽車電子行業(yè)的不斷發(fā)展,LIN總線憑借著其低成本性、配置靈活性、良好的工藝性在汽車網(wǎng)絡(luò)中占據(jù)著不可替代的地位[1]。然而,當(dāng)對(duì)LIN總線上的汽車電子控制單元ECU(Electronic Control Unit)進(jìn)行固件升級(jí)時(shí)將會(huì)遇到很大阻礙--相關(guān)人員需要將待升級(jí)的ECU從汽車上拆卸下來(lái)然后打開(kāi)ECU的保護(hù)殼,用專門的燒錄器把更新好的代碼燒寫(xiě)進(jìn)去,最后再把ECU裝回車上。這種方法不僅麻煩而且還很容易造成硬件的損壞。因此,設(shè)計(jì)出一種通過(guò)LIN總線對(duì)ECU進(jìn)行在線升級(jí)的系統(tǒng)顯得尤為必要。本方案下位機(jī)的bootloader亦可稱為兩級(jí)bootloader。第一級(jí)bootloader主要實(shí)現(xiàn)初始化堆棧指針、分配內(nèi)存映射、初始化外圍硬件設(shè)備、判斷是否請(qǐng)求升級(jí)等功能,該部分程序從flash中加載運(yùn)行(Load Flash And Execute,LFAE)[2]。第二級(jí)bootloader主要實(shí)現(xiàn)程序的下載功能,該部分程序直接從RAM中加載運(yùn)行(Load RAM And Execute,LRAE)[3]。只有當(dāng)應(yīng)用程序請(qǐng)求升級(jí)時(shí)LRAE才會(huì)通過(guò)上位機(jī)下載至下位機(jī)的RAM中執(zhí)行,由于LRAE不常駐在程序中所以在一定程度上增強(qiáng)了程序的安全性。
遠(yuǎn)程系統(tǒng)升級(jí)架構(gòu)如圖1。

圖1 系統(tǒng)架構(gòu)圖
LIN網(wǎng)絡(luò)的節(jié)點(diǎn)分為主機(jī)節(jié)點(diǎn)和從機(jī)節(jié)點(diǎn)。文中主要針對(duì)LIN網(wǎng)絡(luò)中的主機(jī)節(jié)點(diǎn)進(jìn)行升級(jí)。采用硬件觸發(fā)機(jī)制使網(wǎng)絡(luò)中的主機(jī)進(jìn)入一級(jí)Bootloader,此時(shí)待升級(jí)的主機(jī)轉(zhuǎn)化為從機(jī)。……