藍牙無線引導加載的方式,可以幫助工程師通過無線傳輸,實現新文件配置和程序升級,具有傳輸配置快、不受空間限制等優勢。但在使用這一方法的過程中,工程師在進行程序設計時需要注意哪些方面才能最大限度的避免電源故障?一旦出現加載無效的情況應該如何處理?就讓我們通過下文的講解敘述,來看一看在進行引導藍牙加載程序設計時都要考慮哪些問題。
一個強大的藍牙引導裝載程序應該能夠檢測、報告和妥善地處理無線引導加載過程中發生錯誤,如數據包在傳輸過程中丟失,數據損壞,和閃存寫入錯誤。閃存錯誤檢查通常是通過為應用程序存儲校驗和或循環冗余碼(CRC)來實現的。當引導加載操作啟動時,它會清除這些比特。如果應用程序下載并安裝成功,他們將會更新。
不過,還要說一下引導加載發生電源故障的情況。在重置時,引導加載程序檢測無效校驗位,并且不會把控制權轉交給部分加載的應用程序。相反,它會等待主機啟動另一個引導加載操作。一旦一個新的應用程序被引導加載,引導加載程序必須驗證可引導加載圖像,然后把控制權轉移給新的應用程序。引導加載程序也應該能夠檢查自己閃存中的圖像,看它是否是有效的。
另一個要考慮的關鍵因素是避免應用程序覆蓋引導加載程序本身。如果引導加載程序被破壞,或由應用程序覆蓋,則系統可能無法運行,并可能需要引導程序被重新編程到系統中。為了避免這種情況,在閃存中的引導加載程序區域必須得到保護,以避免被加載程序代碼意外覆蓋。
在引導藍牙加載程序設計中,另一個重要的考慮因素是開始與主機通信的時機。在確定該應用程序有效之后,該引導加載程序可以等待一定的時間,使主機啟動一個新的引導加載操作。如果等待時間太短,主機可能不能夠可靠啟動通信。如果時間太長,產品的整體啟動時間可能也被延長了。類似于為了避免設備重置而啟動加載新應用程序的方案,定時問題也可以通過使應用程序調用引導加載程序來解決。
為了使目標系統容錯,可以使用Multi-APP引導加載程序,它能夠在閃存中存儲多個應用程序的圖像。如果引導加載程序檢測到其中一個應用程序圖像被損壞,那么引導加載程序可以跳轉到其他圖像中的一個。能夠存儲的應用程序的數量取決于在目標系統中閃速存儲器的大小。
引導藍牙加載程序還可以包含簡單的調試功能,可以通過使用UART接口和像“TERA TERM”這樣的終端模擬程序在PC上顯示調試信息來實現。所有調試信息都可以通過藍牙到串行適配器無線發送。
用于不同微控制器的標準主機自舉工具應用程序現在是很容易得到的。它們可以直接使用SPP(串行端口配置文件)無線引導加載,而無需進行任何修改。然而,主機自舉工具可以進行定制,以更好地滿足無線引導加載,和/或嵌入終端仿真器窗口查看調試信息,甚至通過無線使用SPP發送特定數據,從應用程序中調用引導加載程序。
為了充分利用終端仿真器,引導加載到目標系統中的任何新的應用程序還必須包含一個UART接口,并且當特定的數據從主機發送到目標系統時,能夠調用引導程序。引導程序和應用程序共享UART接口。用一個稍微復雜的Multi-App藍牙引導程序設計,有可能通過使用SPP從主機無線發送圖像到目標系統中,實現存儲在閃盤中的多個應用程序間的切換。這將節省新應用程序引導加載所需的時間。
結語
工程師在進行藍牙加載程序設計時,需要進行綜合比對和反復試驗,盡可能的節省加載時間并避免加載代碼出現意外覆蓋等故障情況。