上海儀電汽車電子系統(tǒng)有限公司 宋曉睿 環(huán) 翾
基于串口的B o o t l oader在汽車空調控制器中的應用
上海儀電汽車電子系統(tǒng)有限公司 宋曉睿 環(huán) 翾
為解決汽車空調控制器在調試和維護時更新軟件的不便,本文提出一種基于串口的Bootloader設計方法用來對車載空調控制器進行在線的軟件升級。本文介紹了Bootloader的原理,并具體闡述了在產品設計中如何從硬件軟件方面來實現此串口Bootloader的開發(fā)應用。并通過VC開發(fā)了上位機的燒寫測試界面。
bootloader;汽車空調控制器
隨著電子技術發(fā)展的日新月異,汽車空調控制器能實現的功能也就越來越多,越來越復雜。在汽車空調系統(tǒng)開發(fā)的前期,通常運用專用的開發(fā)工具來進行軟件的更新升級,然而產品進行到汽車整車裝車調試和使用維護階段由于其機械裝配的限制已經不適合再用前期的燒寫工具進行軟件的更新。尤其是在路試跑車階段,能夠及時地在線更新可以大大提高開發(fā)的效率。本文基于飛思卡爾HCS12X系列16位單片機,設計開發(fā)了廉價串口的bootloader上位機和下位機程序,實現了用戶程序的在線升級。實驗結果表明,該串口Bootloader實現了簡便、穩(wěn)定的車載空調控制器軟件的在線升級,提高了開發(fā)效率。
Bootloader是引導加載程序,在單片機運行之前運行。它由兩部分組成,Boot通過單片機啟動時的指令實現硬件設備的初始化以及建立內存空間的映射圖。而Loader則負責讀取上位機命令來擦除用戶程序Flash空間或者接收、處理上位機傳輸來的文件程序寫入Flash中。Bootloader是依賴于特定的硬件而實現的,因此,在眾多嵌入式產品中目前還不可能實現通用Bootloader。
本文所描述的開發(fā)體系分為主機和目標機兩個部分它們是通過串口連接起來的。個人PC的通用串口如圖1所示:
圖1 P C串口示意圖
3.1 軟件框架
要實現軟件的自更新,我們將原來的ECU FLASH分為兩部分,Application Software與Bootloader部分。
其中Application Software部分可以實現單片機的正常操作用來滿足車載空調控制器的各項功能需求。同時在這一部分可以通過診斷的串口指令來實現程序的跳轉進入到Boot block部分實現程序的加載。而Boot block部分則可劃分為兩塊Boot Manager和Flash Loader。Boot Manager是單片機在上電或者是復位之后首先執(zhí)行的部分,由它結合收到的上位機的指令來決定是正常運行應用程序還是跳轉到Boot部分進行程序更新。而Flash Loader部分則通過一些FLASH操作的工具來實現指定FLASH區(qū)域的擦寫。并且在程序更新完成之后,執(zhí)行單片機Reset,并跳轉到應用程序繼續(xù)進行邏輯功能的實現。因為是基于飛思卡爾HCS12X系列的單片機所以Flash進行程序更新時是受保護的,不能被一切中斷所打斷。在進行Flash的劃分時,簡單的做法是更改prm程序文件,將APP區(qū)域和BOOT區(qū)域根據地址劃分好,在劃分區(qū)域的時候要注意考慮Boot程序和APP程序各自的程序量的大小以免出現程序超限溢出的情況發(fā)生。同時需要注意的是在Boot區(qū)域有可能要應用到中斷服務函數,因為Boot區(qū)域的中斷服務函數不能與應用程序的中斷服務函數重合,在這里就需要將服務函數的中斷向量表地址進行重置,使其能夠正常工作。因為APP和Boot程序需要多次相互跳轉,我們設置一個跳轉的變量是很有必要的,它將提示主程序是否跳轉,以及是由哪一方向哪一方跳轉。這個跳轉變量希望能在單片機Reset之后仍然記錄數值,那我們就單獨開辟一個RAM區(qū)域用來保存這個變量的值,這個RAM區(qū)域在單片機復位時將不會被清零。
3.2 上位機軟件系統(tǒng)
本文的上位及軟件系統(tǒng)采用的是VC編程的可視化界面。編譯環(huán)境是采用Microsoft Visual Studio 2010。根據XON/XOFF通訊協(xié)議,生成的可視化界面。
因為是基于車載空調的上位機軟件,串口也同時將當前車載空調控制器的狀態(tài)傳給上位機,上位機可根據數據實時顯示當前車載空調控制器的狀態(tài)。當點擊其中的setup按鈕的話,可對當前串口進行設置。
當你點擊log按鈕,會彈出串口log文件選擇界面。當選好要log的文件之后,界面會進入串口log界面等文件傳輸結束,則log完成。
程序自動跳轉到應用程序進行正常運行。
本文探討了汽車空調控制器的自編程功能以及Bootloader的設計方法。具體描述了利用Power PC通過單片機串口對相應的車載空調控制器的應用程序通過Bootloader進行升級。Bootloader技術在車載產品中的開發(fā)和廣泛應用,必將成為嵌入式產品開發(fā)的重要部分,為車載產品的應用和開發(fā),特別是后期維護、升級帶來極大的便利。
[1]張杰.通用的開放BootLoader的設計與實現[D].青島大學,2010.
[2]劉一平.基于HIS協(xié)議的車載Bootloader的研究與實現[D].電子科技大學,2015.
[3]奚英澤,于健楠,徐鳳.基于飛思卡爾MPC5634M單片機的Bootloader設計[A].2013中國汽車工程學會年會論文集[C].2013.