引導加載程序概述
在產(chǎn)品開發(fā)的初始階段,引導加載程序可能經(jīng)常被忽視,因為它不是主要的最終產(chǎn)品。但是,它允許公司使用僅滿足其最終功能集的一部分的軟件來啟動其產(chǎn)品,然后在產(chǎn)品投放市場后向其產(chǎn)品添加功能或解決錯誤。
引導加載程序的用途
隨著嵌入式設(shè)計在功能和連接性方面的發(fā)展,支持遠程應用程序更新的需求也在增加。嵌入式連接不限于單一通信協(xié)議,具有多種形式,在汽車、工業(yè)、消費、醫(yī)療和物聯(lián)網(wǎng) (IoT) 等不斷增長的市場中至關(guān)重要。
引導加載程序是一個程序,允許您通過許多方便的接口加載應用程序固件,如UART,CAN/CAN FD,LIN,I 2C等。當您打開或重置微控制器 (MCU) 時,引導加載程序是第一個運行的程序,用于檢查是否存在上傳請求。如果有,它將上傳新固件并將其編程到閃存中。這是一個復雜且耗時的過程,但不用擔心,我們通過在 MPLAB? 代碼配置器 (MCC) 中提供引導加載程序庫來簡化將引導加載程序添加到您的設(shè)計中,MCC 是一種免費的圖形代碼生成工具,可幫助使用 PIC24 微控制器 (MCU) 和 dsPIC33 數(shù)字信號控制器 (DSC) 進行應用開發(fā)。
生成的引導加載程序代碼的主要要求是:
確定是否加載了有效的最終應用程序
通信/執(zhí)行支持的命令
驗證收到的最新固件的真實性和完整性
擦除/重寫最終應用程序內(nèi)存空間
將控制權(quán)移交給最終應用程序
健壯性需要一些附加功能:
確保擦除/寫入地址超出引導加載程序內(nèi)存范圍
允許主機讀取程序存儲器
檢測損壞的最終應用程序代碼并正?;謴?/p>
這些是如果您自己開發(fā)引導加載程序可能會遇到的一些復雜性。但是,MCC 引導加載程序庫抽象了這些復雜性,并簡化了在 MCC 中只需單擊幾下即可添加引導加載程序的過程。我們的 MCC 引導加載程序經(jīng)過嚴格測試,包括檢查和平衡,可在您的設(shè)計中構(gòu)建彈性和健壯性,以避免意外損壞。
安全固件升級
對于執(zhí)行固件更新的開發(fā)人員來說,安全性是一項關(guān)鍵挑戰(zhàn),我們最不希望看到的就是被黑客入侵。執(zhí)行固件更新的開發(fā)人員應進行身份驗證,甚至可以選擇性地加密其應用程序映像,以防止任何人深入了解專有固件或逆向工程和入侵系統(tǒng)。我們的高性能 dsPIC33C DSC 和低功耗 PIC24F MCU 與我們的 ATECC608 加密身份驗證?和 TrustAnchor100 (TA100) 加密汽車?安全 IC 或 dsPIC33C MPT 安全 DSC 相結(jié)合,提供了一組特別有趣的安全功能,可實現(xiàn)不可變的安全啟動和安全固件升級功能。
安全啟動可確保僅在設(shè)備上執(zhí)行授權(quán)固件;但是,黑客可能會嘗試利用舊固件并嘗試撤消任何固件更新。例如,黑客可能會嘗試使用較舊的映像重新刷新設(shè)備,這可能會導致嚴重的安全隱患。防回滾通過確保這些黑客無法加載舊版本的固件來防止這些攻擊。但是,回滾可以用于恢復目的,但前提是已獲得授權(quán)。
我們還能如何使這些引導加載程序健壯?除了在電源事件后延遲軟件執(zhí)行外,強大的引導加載程序入口方法對于保護應用程序也很重要。不建議使用過于簡單的輸入方法,例如僅檢測單個UART字節(jié)。包含“32”和“1”位混合的 0 位或更長的檢測序列不太可能意外解碼隨機通信噪聲。還建議在引導加載協(xié)議中實現(xiàn)閃存解鎖命令,而不是在應用軟件中實現(xiàn)硬編碼。主機應用程序不僅應負責發(fā)送進入引導加載程序模式的命令,還應負責發(fā)送單獨的命令以解鎖擦除/寫入操作,然后才能允許發(fā)送修改閃存內(nèi)容的其他命令。
信任不僅依賴于設(shè)備,還依賴于制造過程。利用生產(chǎn)線中的弱點是黑客的首要目標之一。將密鑰和機密與制造隔離同樣重要??蛻艨梢詫⑦@一負擔留給Microchip的安全工廠,并利用我們值得信賴的配置服務(wù)。
Microchip的解決方案/MCC旋律簡介
開發(fā)自定義引導加載程序代碼可能是一個復雜且耗時的過程。面對所有這些關(guān)鍵挑戰(zhàn),Microchip的解決方案如何解決它們?
適用于 dsPIC33 DSC 和 PIC24 MCU 的 MCC 引導加載程序允許客戶配置和使用引導加載程序以及與引導加載程序關(guān)聯(lián)的應用程序。引導加載程序在設(shè)計中的集成包括三個部分:
主機應用程序
設(shè)備引導加載程序
設(shè)備端應用
主機應用程序負責加載新的十六進制文件,并通過支持的命令語法將其發(fā)送到引導加載程序。設(shè)備終端應用程序需要了解引導加載程序,并且必須了解如何在請求或配置的事件時將控制權(quán)返回給引導加載程序。默認情況下,設(shè)備引導加載程序生成為在啟動時運行,并確認是否加載了有效的應用程序。如果存在有效的應用程序,則放棄控制權(quán);否則,該操作將保留在引導加載程序中。
用于管理引導加載程序過程的主機應用程序可以是Microchip的統(tǒng)一引導加載程序應用程序,它可以是獨立的應用程序,也可以是單獨的外部微控制器設(shè)備。無論哪種方式,最終目的都保持不變:通過使用引導加載程序和支持的命令更新最終應用程序固件版本。
MCC Melody和引導加載程序庫應該提供您所需的所有支持,以加快設(shè)計/最終應用程序的開發(fā)時間。MCC Melody提供的升級和靈活的架構(gòu),由MCC Classic開發(fā)而成,使配置設(shè)備,外圍設(shè)備,庫和代碼變得簡單。它清楚地可視化組件的依賴項以簡化開發(fā),并通過在驅(qū)動程序級別啟用內(nèi)容版本控制來提供易于維護。您可以使用 MCC Melody 輕松跨微控制器遷移,以滿足您的應用需求。
MCC Melody提供庫、驅(qū)動程序、外設(shè)庫(PLIB)和硬件初始值設(shè)定項(HWI),用于開發(fā)Microchip PIC和AVR?微控制器以及dsPIC DSC??的嵌入式軟件。這些組件通過圖形配置工具進行定制,該工具可生成高效的 C 代碼。
低級PLIB很簡單,用于初始化和控制外設(shè)和基本器件功能。系統(tǒng)驅(qū)動程序支持配置常規(guī)功能,通常由其他外設(shè)使用,如引腳、中斷和系統(tǒng)時鐘。驅(qū)動程序依賴于 PLIB,并將硬件詳細信息從庫和應用程序中抽象出來。庫使用驅(qū)動程序和系統(tǒng)服務(wù)來實現(xiàn)設(shè)備獨立性,并為當今嵌入式應用程序通常需要的網(wǎng)絡(luò)、USB、加密和其他功能提供支持。您可以從MPLAB X IDE / MPLAB Xpress中安裝MCC Melody,也可以下載并將其作為插件安裝。
關(guān)鍵要點
那么,是什么讓引導加載程序成為一個好的引導加載程序呢?易用性是主要要求之一,我們使用 PIC24 微控制器和 dsPIC33 DSC 的 MCC 引導加載程序提供了這些要求。簡單的 GUI 界面使您能夠創(chuàng)建專為滿足您的應用需求而設(shè)計的引導加載程序固件。我們還提供應用程序固件配置,使您能夠輕松地使用應用程序自定義引導加載程序。
審核編輯:郭婷
-
微控制器
+關(guān)注
關(guān)注
48文章
7552瀏覽量
151417 -
mcu
+關(guān)注
關(guān)注
146文章
17148瀏覽量
351186 -
MPLAB
+關(guān)注
關(guān)注
9文章
215瀏覽量
66883
發(fā)布評論請先 登錄
相關(guān)推薦
評論