專利名稱:一種基于CAN總線的智能型BootLoader的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種在汽車電子中電控單元應(yīng)用程序更新啟動用的BootLoader,尤其涉及一種基于CAN總線的智能型BootLoader。
背景技術(shù):
傳統(tǒng)的汽車電控單元中用于更新,啟動應(yīng)用程序的BootLoader幾乎都是基于串口方式。串口通信簡單,抗干擾能力差,通信距離短等缺點(diǎn),在惡劣汽車電磁環(huán)境中,通信很不可靠,實(shí)用效果較低。傳統(tǒng)的汽車電控單元BootLoader,一般由以下兩種模式開發(fā)的,第一種應(yīng)用程序自身帶BootLoader功能,即BootLoader代碼和應(yīng)用程序是一個軟件工程,一起編譯成電控單元鏡像文件,燒入FLASH中,上電運(yùn)行后,一旦檢測到程序更新命令,BootLoader代碼便把自身拷貝到內(nèi)存中運(yùn)行,和上位機(jī)按照特定的文件傳輸協(xié)議,進(jìn)行程序更新,此種模式的優(yōu)點(diǎn)是程序更新較為自由,只要電控單元在運(yùn)行,隨時都可以程序更新,而不受時間限制,在量產(chǎn)電控單元時,只需通過仿真器一次性燒入鏡像文件,電控單元FLASH中代碼便具有BootLoader代碼和應(yīng)用程序代碼,極大提高了生產(chǎn)效率,缺點(diǎn)是在以后的程序更新途中,一旦斷電(蓄電池電壓突然過低,或不小心鑰匙打到OFF檔),就會造成FLASH中的數(shù)據(jù)不完整,破壞BootLoader代碼,且再次上電后不能再更新程序,此種情況下只能開蓋(電控單元在車上開蓋將是一件很麻煩的事情),通過仿真器再燒入鏡像文件;第二種 BootLoader軟件和電控單元應(yīng)用程序分別屬于兩個不同的軟件工程,在生產(chǎn)時,先通過仿真器把BootLoader鏡像文件燒入FLASH中,再通過BootLoader方式把鏡像文件燒入FLASH 中,量產(chǎn)時一個產(chǎn)品需兩次燒入鏡像文件,此種方式優(yōu)點(diǎn)是BootLoader和應(yīng)用程序是獨(dú)立的,不存在當(dāng)更新程序時偶然斷電,破壞BootLoader的問題,此種模式缺點(diǎn)是在量產(chǎn)電控單元時,每次都需燒入兩次鏡像文件,生產(chǎn)效率較低,且當(dāng)BootLoader自身有Bug,需要更新BootLoader時,則只能開蓋通過仿真器把BootLoader鏡像文件燒入FLASH中。
發(fā)明內(nèi)容
本發(fā)明提出了一種新型基于CAN總線的新型BootLoader,該BootLoader采用差分信號進(jìn)行通信;除基本的初始化代碼外,其余代碼都是PIC型代碼,在BootLoader工作時, 既可以更新電控單元應(yīng)用程序,也可以更新BootLoader自身;BootLoader和應(yīng)用程序代碼是一個軟件工程,一起編譯成電控單元鏡像文件,實(shí)現(xiàn)更新電控程序無需開蓋和只需一次性燒入。當(dāng)電控單元上電以后,CAN BootLoader初始化CPU鎖相環(huán)時鐘頻率、CAN以及 Flash,然后檢查App Flash空間有無應(yīng)用程序,若有應(yīng)用程序,則啟動App應(yīng)用程序;若沒有應(yīng)用程序,則重新映射BootLoader代碼,進(jìn)入BootLoader模式,并根據(jù)接收到上位機(jī)的命令類型更新BootLoader程序或者更新App應(yīng)用程序。本發(fā)明有益的技術(shù)效果是該BootLoader基于CAN總線,抗干擾能力強(qiáng);在電控單元FLASH中只要有本BootLoader,在任何情況下程序更新都不用開蓋,方便,易用; BootLoader和應(yīng)用程序編譯成一個鏡像文件,在生產(chǎn)的過程中只需一次性燒入,極大的提高了生產(chǎn)的效率。
圖1 上下位機(jī)通信協(xié)議圖2 =CAN BootLoader軟件流程圖。
具體實(shí)施例方式
本發(fā)明中基于CAN總線的新型BootLoader,由于采用差分信號進(jìn)行通信,抗干擾能力強(qiáng),最大通信速率IMbps (通信距離達(dá)40米),最大通信距離10公里(通信速率51cbpS),極大的方便了汽車電控單元中程序更新問題。本發(fā)明集兩種傳統(tǒng)模式的BootLoader的優(yōu)點(diǎn)于一體,上下位機(jī)通信協(xié)議如圖1所示,SOH為包頭,一個字節(jié),為OxOl時為正常的文件內(nèi)容,為0x04時為文件結(jié)束標(biāo)志,包序號一字節(jié),為0--255,包序號反碼一字節(jié),為包序號數(shù)據(jù)取反,便于下位機(jī)校驗(yàn)確認(rèn),接下來是131字節(jié)的文件內(nèi)容,最后是CRC16校驗(yàn)碼,用于下位機(jī)對傳輸?shù)奈募?nèi)容進(jìn)行CRC校驗(yàn)。本發(fā)明在開發(fā)CAN BootLoader時,除基本的初始化代碼外,其余代碼都是PIC(位置無關(guān))型代碼,上電后重映射到RAM中即其運(yùn)行域在RAM中,這樣當(dāng)BootLoader工作時,即可以更新電控單元應(yīng)用程序,也可以更新BootLoader自身。在更新電控單元應(yīng)用程序時, BootLoader會做相應(yīng)的標(biāo)志,只有當(dāng)更新完畢,BootLoader才會做更新完畢的標(biāo)志。這樣, 當(dāng)在更新電控單元應(yīng)用程序時,電源即使突然斷掉,在重新上電時,BootLoader記錄下了上次更新未完畢標(biāo)志,就會停留等待上位機(jī)發(fā)送更新程序命令,實(shí)現(xiàn)在任何情況下程序更新都不用開蓋。本發(fā)明中BootLoader和應(yīng)用程序一起編譯成電控單元鏡像文件,燒入FLASH 中,這樣在生產(chǎn)的過程中,只需一次性燒入鏡像文件,提高了生產(chǎn)的效率。
權(quán)利要求
1.本發(fā)明提出了一種基于CAN總線的智能型BootLoader,其特征在于抗干擾能力強(qiáng),在電控單元FLASH中只要有本BootLoader,在任何情況下程序更新都不用開蓋, BootLoader和應(yīng)用程序編譯成一個鏡像文件,在生產(chǎn)的過程中只需一次性燒入。
2.根據(jù)權(quán)利要求1所描述的基于CAN總線的智能型BootLoader,其特征在于采用差分信號進(jìn)行通信,抗干擾能力強(qiáng)。
3.根據(jù)權(quán)利要求1所描述的基于CAN總線的智能型BootLoader,其特征在于除基本的初始化代碼外,其余代碼都是PIC (位置無關(guān))型代碼,上電后重映射到RAM中即其運(yùn)行域在RAM中,實(shí)現(xiàn)在任何情況下程序更新都不用開蓋。
4.根據(jù)權(quán)利要求1所描述的基于CAN總線的智能型BootLoader,其特征在于 BootLoader和應(yīng)用程序可以一起編譯成電控單元鏡像文件,燒入FLASH中,這樣在生產(chǎn)的過程中,只需一次性說燒入鏡像文件,提高了生產(chǎn)的效率。
全文摘要
本發(fā)明提出了一種新型基于CAN總線的新型BootLoader,該BootLoader采用差分信號進(jìn)行通信;除基本的初始化代碼外,其余代碼都是PIC型代碼,在BootLoader工作時,既可以更新電控單元應(yīng)用程序,也可以更新BootLoader自身;BootLoader和應(yīng)用程序代碼是一個軟件工程,一起編譯成電控單元鏡像文件,實(shí)現(xiàn)更新電控程序無需開蓋和只需一次性燒入。本發(fā)明有益的技術(shù)效果是該BootLoader基于CAN總線,抗干擾能力強(qiáng);在電控單元FLASH中只要有本BootLoader,在任何情況下程序更新都不用開蓋,方便,易用;BootLoader和應(yīng)用程序編譯成一個鏡像文件,在生產(chǎn)的過程中只需一次性燒入,極大的提高了生產(chǎn)的效率。
文檔編號G06F9/445GK102253849SQ20111015216
公開日2011年11月23日 申請日期2011年6月8日 優(yōu)先權(quán)日2011年6月8日
發(fā)明者萬禮華, 張仁智, 李漁, 甘德洪 申請人:重慶金美通信有限責(zé)任公司