李睿,張小明
(西安法士特汽車傳動工程研究院,陜西 西安 710119)
英飛凌車用XC2000系列微控制器Bootloader設計
李睿*,張小明
(西安法士特汽車傳動工程研究院,陜西 西安 710119)
文章介紹了關于英飛凌XC2000系列芯片上Bootloader設計的一種方式。介紹了總體架構,硬件結構,并詳細闡述了系統軟件的設計和實現。該Bootloader以XC2000為基礎平臺,具有較好的移植性,理論上是用于英飛凌XC2000全系列產品。能夠實現程序切換,加密解密,CAN網絡程序燒寫,軟件版本控制等多方面功能。從軟件層面提升產品生命周期,達到設計預期要求。
英飛凌;XC2000;Bootloader;加密
CLC NO.:U462.2 Document Code: A Article ID: 1671-7988 (2016)07-144-03
隨著汽車電子行業的飛速發展,商用車控制系統近兩年內正以幾何形式增長。嵌入式在商用車領域內得到了長足的發展。隨著需求井噴式的增長與變化,汽車電子中控制系統愈發復雜,產品維護,版本控制,后期追蹤變得越發困難。歐美在汽車電子領域中很早就引入了Bootloader這一設計理念,很好的解決了產品實際中遇到的問題。
在嵌入式操作系統中,BootLoader是在操作系統內核運行之前運行。可以初始化硬件設備、建立內存空間映射圖,從而將系統的軟硬件環境帶到一個合適狀態,以便為最終調用操作系統內核準備好正確的環境。在嵌入式系統中,通常并沒有像BIOS那樣的固件程序(注,有的嵌入式CPU也會內嵌一段短小的啟動程序),因此整個系統的加載啟動任務就完全由BootLoader來完成。嵌入式系統是一個資源十分緊缺的特殊系統,它不同于我們傳統PC計算機。所以在緊張的資源中要實現對應用程序的啟動管理,程序更新,版本控制,程序加密等諸多功能。
英飛凌的XC2000系列微控制器芯片是為汽車電子專門設計的,具有較高的運行速率,強大的外圍設備,強大的穩定性。本文就選取XC2000的芯片,討論其上電后的運行機制,Bootloader實現方案,Flash操作方法,以及如何利用芯片自身的加密機制保護應用程序的知識產權。
英飛凌的XC2000系列芯片采用典型的馮諾依曼結構,即采用存儲程序方式,指令和數據不加區別混合存儲在同一個存儲器中,(數據和程序在內存中是沒有區別的,它們都是內存中的數據,當IP指針指向哪 CPU就加載那段內存中的數據,如果是不正確的指令格式,CPU就會發生錯誤中斷。該系列芯片的地址分配如下表:

表1 英飛凌XC2000系列芯片的地址空間
我們可以看出按照官方給出的地址分布,我們能夠利用的實際存儲區域只有Flash0與Flash1(上圖紅色圈定區域),系統在上電或復位時通常都從地址0xC00000處開始執行。從空間上講已經能夠滿足一般程序存儲(一般嵌入式系統軟件在幾KB到幾十KB之間)。但是由于嵌入式芯片的工作模式使得我們不得不將該程序按照約定存儲在0xC00000的首位地址處。上電后即按照程序邏輯運行,我們即使在Flash中安排了兩個應用程序也無法啟用第二個程序。所以需要我們將能夠管理應用程序啟動的BootLoader處安排在0xC00000地址處,上電后首先運行Bootloader,由它接管微處理器的運行。
1.1 程序跳轉
程序跳轉的目的就是為了在第一個專有程序完成自身本職工作后,可以將硬件的管理權釋放,并且將各個MCU中的資源移交給第二個程序,并且為第二個程序運行提供支持。

圖2 緩速器模塊
如上圖所示,我們MCU中的Flash資源布局時將整個Flash劃分為了三個區域。(注:我們這里將Flash從邏輯層面上連成一個整體,實際上Flash的地址是不連續的)。我們在0xC00000處安放的是Bootloader,其必須完成對APP的調用,使得APP在Bootloader生命周期結束的時候能夠啟用,并且對于MCU的硬件資源能夠正確使用。
程序跳轉本身在程序上沒有難度,關鍵技術難點在于必須從邏輯上將MCU存儲資源有效的分區管理。由于英飛凌XC2000系列芯片的自身運行機制要求,cstart()函數以及其后的中斷向量表需有序的排列在0xCX0000的起始段位置處,這樣APP或者Bootloader才能按照約定正常運行。
1.2 存儲區相關操作
英飛凌XC2000系列的MCU中都不含有帶有EEPROM的芯片,所以不論Bootloader的程序更新還是參數標定的存儲都需要對Flash進行操作。
Flash這類存儲單元本身具有一定特殊特性。Flash進行寫操作的時是以頁為單位,一次進行一個整頁操作,不論擦除還是寫入操作都是如此,以英飛凌的XC2000系列芯片為例的話,一頁的大小為128字節(64字)。
英飛凌內核中有一個獨有特殊單元IMB,由該單元管理了XC2000系列的MCU的Flash擦除,燒寫工作甚至加密,解密工作。前面提到對于英飛凌XC2000來說,每一次對Flash的操作最小單元為一頁。所以實際上的對Flash操作都是先對IMB進行操作,完成正確的操作命令字后,再由IMB對指定Flash進行操作??刂谱直砣缦拢?/p>
1.3 存儲區加密解密
首先,芯片加密屬于MCU的最核心操作,芯片廠商從伊始的原理設計上就做了諸多防護,以防操作變得過于簡單。如果過于簡單,加密解密的設計意義就會流于形式,起不到真正防護作用。所以從機理上講,加密解密就是對MCU進行核心操作。
下圖揭示了英飛凌XC2000的IMB運行機制。其通過物理層映射到核心寄存器中,再由IMB Core進行運行,但是物理層卻不能由IMB Core以外的任何方式修改,從根本上起到了防護作用。我們可以看到,英飛凌XC2000系列芯片在設計之初就采用三級映射的邏輯關系,我們實際可操作的層位物理層,即兩個Security Page。之后由中間層和上層逐層進行管理。

圖3
下圖就是展示了XC2000系列芯片的物理層核心區域的信息排布。其中包含了密碼,保護使能寄存器,上鎖確認代碼,BMI啟動方式等多種重要參數。對其的修改才是加密解密的核心工作,且不能有絲毫錯誤。圖示左側下標為該區域真實絕對地址,但由于IMB運行機制的影響,是不能直接對地址操作的,仍然需要遵循存儲區的操作字序列方能成功操作對應區域。

圖4
值得注意的一點,在對Security Page進行操作時,必須首先清除Security Page 1中的Lock Code,然后完成Security Page 0中的Password、PROCON、BMI設置,最后回填Security Page 1的Lock Code。這樣才能使得操作生效,并且在最后一步回填Lock Code時,加密保護是即刻生效的,不需要重新上電。
整個Bootloader包含兩個階段:
2.1 基本的硬件初始化
這是Boot Loader一開始就執行的操作,其目的是為第二階段的執行準備好一些基本的硬件環境。目前我公司設計的Bootloader通常包括以下步驟(以執行的先后順序):
(1)屏蔽所有的中斷。為中斷提供服務通常是OS設備驅動程序的責任,因此在BootLoader的執行全過程中可以不必響應任何中斷。中斷屏蔽可以通過寫CPU的中斷屏蔽寄存器或狀態寄存器來完成。
(2)設置CPU的速度和時鐘頻率。
(3)RAM初始化。包括正確地設置系統的內存控制器的功能寄存器以及各內存庫控制寄存器等。
(4)CAN模塊初始化。由于車輛使用的標準網絡為CAN網絡,所以與其他Bootloader不同的是需要初始化CAN相關功能。
2.2 啟動Bootloader程序,進入等待服務循環
當Bootloader完成硬件資源的相關配置與初始化,就需要系統啟動相關服務,進入等候狀態。根據總線數據請求切換相關工作模式,啟動相關服務功能,或者在無請求服務時切換到APP程序運行。如果Bootloader判斷條件滿足可以切換到APP運行,那么在切換完成的時刻,Bootloader生命周期已經結束。
本文就英飛凌車用微控制器XC2000系列芯片的運行原理及其Bootloader的設計思路做以分析。探討了關于程序跳轉,存儲區讀寫操作,存儲區加密解密三個核心技術的難點與解決思路。Bootloader的實際應用能夠很好的在開發、產品量產、終端維護等多個方面提供有力幫助,能夠有效的減少各個環節的人力物力,并且豐富的擴展功能使得產品追蹤,產品信息查詢成為可能。Bootloader僅是一個基礎工具,如何豐富該工具,使其能夠發揮更大的功效值得深入研究與學習。
[1] 程夕明.汽車嵌入式微控制器原理及應用—英飛凌XC2000家族MCU [M].電子工業出版社,2013.9.
[2] 王伏,張忠能,杭勇等.基于CAN總線的電控單元程序,引導加載功能開發[J].微型電腦應用,2011,27(9):30-32.DOI:10.3969/j.issn. 1007-757X.2011.09.010.
[3] 黃娟娟,夏超英,柳同生等.基于英飛凌XC2268N的整車控制系統CAN通信設計[J].儀表技術與傳感器,2014,(5):60-62,72.DOI:10. 3969/j.issn.1002-1841.2014.05.020.
The Automotive Microcontroller of Infineon Bootloader Design
Li Rui, Zhang Xiaoming
( Xi 'an special automobile transmission engineering research institute, Shaanxi Xi 'an 710119 )
This paper introduces about a kind of bootloader design based on Infineon XC2000 series chip. This paper introduces the overall architecture, hardware structure, and expounds the design and implementation of the system software in detail. The Bootloader is based on XC2000 platform, so it has a good portability. It is suit for all series products of Infineon XC2000 in theory. The Bootloader contains the various functions of system initialization, the application of switching, flash encryption or decryption, programming through the CAN network, software version control and so on. The bootloader improve the product life by software and meet the design demands.
Infineon; XC2000; Bootloader; Encryption
U462.2
A
1671-7988(2016)07-144-03
李睿,通訊作者,就職于西安法士特汽車傳動工程研究院。
10.16638/j.cnki.1671-7988.2016.07.045