技術(shù)分享:引導(dǎo)加載器的設(shè)計(jì)考慮因素
發(fā)布時(shí)間:2015-06-24 責(zé)任編輯:sherry
【導(dǎo)讀】引導(dǎo)加載器支持產(chǎn)品固件的現(xiàn)場(chǎng)更新。引導(dǎo)加載器可使用UART、I2C、SPI或USB等常見(jiàn)通信接口更新固件,而引導(dǎo)加載器主機(jī)和目標(biāo)之間通常采用有線連接方式。在藍(lán)牙到串行適配器的幫助下,這個(gè)引導(dǎo)加載操作能通過(guò)無(wú)線方式實(shí)現(xiàn)。如果目標(biāo)所處的位置難以物理地訪問(wèn),或者目標(biāo)位于密封設(shè)備內(nèi),那么這種無(wú)線連接功能就會(huì)特別有用。
使用引導(dǎo)加載器的第一步就是配置產(chǎn)品,讓引導(dǎo)加載器(而不是應(yīng)用)去執(zhí)行。一旦引導(dǎo)加載器運(yùn)行,主機(jī)就會(huì)通過(guò)通信通道發(fā)送“start bootload”命令。如果引導(dǎo)加載器發(fā)出“OK”回應(yīng),那么就會(huì)開(kāi)始引導(dǎo)加載。在引導(dǎo)加載期間,主機(jī)讀取新應(yīng)用文件,將其解析為閃存寫(xiě)入命令,并發(fā)送命令到引導(dǎo)加載器。在整個(gè)文件發(fā)送后,引導(dǎo)加載器會(huì)確認(rèn)文件完整性,并發(fā)送控制到新應(yīng)用。
采用藍(lán)牙到串行適配器的無(wú)線引導(dǎo)加載過(guò)程可在任何支持UART引導(dǎo)加載器的目標(biāo)上進(jìn)行,無(wú)需使用藍(lán)牙串行端口配置文件(SPP)對(duì)運(yùn)行在目標(biāo)設(shè)備上的主機(jī)或引導(dǎo)加載器固件進(jìn)行任何修改。藍(lán)牙配置文件是指定藍(lán)牙設(shè)備一般行為的藍(lán)牙核心規(guī)范上額外的協(xié)議,可用于支持藍(lán)牙設(shè)備與其它具有相同配置文件的設(shè)備進(jìn)行通信。
SPP基于仿真RS-232串行端口的射頻通信(RFCOMM)協(xié)議,它定義了如何設(shè)置兩個(gè)設(shè)備之間的虛擬串行端口,如何利用藍(lán)牙互聯(lián)。支持藍(lán)牙功能的PC能連接到目標(biāo)側(cè)的藍(lán)牙串行適配器,并進(jìn)行引導(dǎo)加載操作。引導(dǎo)加載命令可通過(guò)發(fā)送串行命令到當(dāng)前運(yùn)行在目標(biāo)器件上的應(yīng)用而實(shí)現(xiàn)無(wú)線觸發(fā)。
引導(dǎo)加載器
引導(dǎo)加載過(guò)程會(huì)通過(guò)標(biāo)準(zhǔn)通信接口更新嵌入式系統(tǒng)的固件。主機(jī)可以是帶引導(dǎo)加載器主機(jī)應(yīng)用工具的PC,也可以是另一個(gè)微控制器。引導(dǎo)加載器是加電啟動(dòng)或系統(tǒng)重設(shè)后將要執(zhí)行的第一行代碼。引導(dǎo)加載器會(huì)預(yù)編程到微控制器中,與主機(jī)通信,并獲得新的應(yīng)用鏡像,將其寫(xiě)入微控制器的內(nèi)部閃存。在引導(dǎo)加載操作成功后,微控制器會(huì)開(kāi)始執(zhí)行新的應(yīng)用固件。如果沒(méi)有從主機(jī)接收到新的應(yīng)用,那么引導(dǎo)加載器會(huì)執(zhí)行微控制器中現(xiàn)有的應(yīng)用。
應(yīng)用固件鏡像的格式取決于使用的微控制器。舉例來(lái)說(shuō),PSoC控制器使用.cyacd(應(yīng)用代碼和數(shù)據(jù))作為引導(dǎo)加載應(yīng)用的格式。如果采用標(biāo)準(zhǔn)的藍(lán)牙到串行適配器,那么我們可在支持UART引導(dǎo)加載器的目標(biāo)器件上無(wú)線執(zhí)行同樣的引導(dǎo)加載操作。
在利用藍(lán)牙到串行適配器進(jìn)行無(wú)線引導(dǎo)加載的情況下,基本的引導(dǎo)加載操作保持不變。不過(guò),我們需要在主機(jī)和目標(biāo)器件之間建立虛擬串行連接,通過(guò)藍(lán)牙無(wú)線發(fā)送應(yīng)用鏡像。SPP定義了如何設(shè)置虛擬串行端口和兩個(gè)藍(lán)牙設(shè)備的互聯(lián),隨后允許設(shè)備進(jìn)行RS232(或類(lèi)似的)串行線纜仿真。這種配置文件涵蓋的情境能支持傳統(tǒng)應(yīng)用,這里藍(lán)牙作為線纜連接的替代,使用虛擬串行端口抽象。利用SPP,互聯(lián)設(shè)備發(fā)送和接收數(shù)據(jù)就像互聯(lián)的RX和TX線路一樣。
圖1顯示了SPP中使用的協(xié)議和實(shí)體。基帶、LMP和L2CAP是OSI 中的第1層和第2層藍(lán)牙協(xié)議。RFCOMM是藍(lán)牙版GSM TS 07.10標(biāo)準(zhǔn),GSM手機(jī)用它在一個(gè)物理串行線纜上多路復(fù)用多個(gè)流,為串行端口仿真提供通信協(xié)議。SDP是藍(lán)牙服務(wù)發(fā)現(xiàn)協(xié)議,支持藍(lán)牙設(shè)備發(fā)現(xiàn)其它藍(lán)牙設(shè)備提供的服務(wù)和相關(guān)參數(shù)。
圖1:配置文件協(xié)議棧包括SPP使用的不同協(xié)議和實(shí)體。
就使用SPP的無(wú)線引導(dǎo)加載而言,兩側(cè)運(yùn)行的應(yīng)用為PC上的引導(dǎo)加載器主機(jī)應(yīng)用或主機(jī)微控制器上的UART接口以及目標(biāo)系統(tǒng)上的UART引導(dǎo)加載器。
Bluefruit EZ-Link模塊或JY-MCU模塊等標(biāo)準(zhǔn)藍(lán)牙到串行適配器能配對(duì)具備藍(lán)牙功能的計(jì)算機(jī),并顯示為串行COM端口。將藍(lán)牙模塊和PC配對(duì)后,設(shè)備管理器中會(huì)列出兩個(gè)串行COM端口。之所以會(huì)出現(xiàn)這種情況,是因?yàn)樗{(lán)牙串行端口是基于RFCOMM,與物理串行端口不同,它在建立藍(lán)牙虛擬連接時(shí)同時(shí)需要服務(wù)器和客戶(hù)端。
設(shè)備管理器中列出的一個(gè)端口是入站端口(服務(wù)器),另一個(gè)則是出站端口(客戶(hù)端)。然而,用其中一個(gè)串行端口建立連接后,它就是雙向的。如果PC發(fā)起與藍(lán)牙模塊的連接,則使用出站端口。如果藍(lán)牙模塊發(fā)起連接,則使用入站端口。對(duì)于目標(biāo)系統(tǒng)的無(wú)線引導(dǎo)加載而言,必須使用出站端口,因?yàn)镻C是主機(jī),它必須發(fā)起與藍(lán)牙模塊的連接。
藍(lán)牙模塊必須連接到運(yùn)行UART引導(dǎo)加載器的目標(biāo)系統(tǒng)上的UART接口。舉例來(lái)說(shuō),在關(guān)閉電路板的USB到串行部分以無(wú)線引導(dǎo)加載PSoC 4的情況下,藍(lán)牙模塊可連接到CY8CKIT-049 PSoC 4原型設(shè)計(jì)套件。PSoC 4原型設(shè)計(jì)板易于使用,成本較低,能在主板兼容報(bào)頭上提供PSoC 4微控制器的所有I/O引腳,從而支持快速原型設(shè)計(jì),而且配套提供預(yù)編程的UART引導(dǎo)加載器。
藍(lán)牙模塊的波特率應(yīng)匹配目標(biāo)系統(tǒng)上引導(dǎo)加載器配置的波特率。大多數(shù)藍(lán)牙模塊支持AT命令來(lái)配置模塊的波特率,這需要用到USB-UART橋接器或配備UART接口的微控制器。PSoC 4原型設(shè)計(jì)板的USB-串行器件部分也可利用AT命令配置藍(lán)牙模塊的波特率。引導(dǎo)加載器主機(jī)應(yīng)用工具則用藍(lán)牙虛擬串行端口來(lái)無(wú)線執(zhí)行引導(dǎo)加載操作。圖2給出了主機(jī)和目標(biāo)系統(tǒng)的系統(tǒng)級(jí)方框圖。
圖2:系統(tǒng)級(jí)方框圖顯示主機(jī)和目標(biāo)系統(tǒng)的不同組件。
如果引導(dǎo)加載器主機(jī)是另一個(gè)微控制器,那么無(wú)線引導(dǎo)加載程序仍會(huì)在其它藍(lán)牙到串行適配器(連接到主機(jī)微控制器UART接口)的幫助下進(jìn)行。對(duì)于不支持藍(lán)牙的PC而言,標(biāo)準(zhǔn)的USB藍(lán)牙收發(fā)器可用來(lái)建立藍(lán)牙模塊連接。
成功引導(dǎo)加載后,目標(biāo)系統(tǒng)會(huì)開(kāi)始執(zhí)行新的應(yīng)用。如果需要引導(dǎo)加載另一個(gè)新應(yīng)用,那么目標(biāo)系統(tǒng)必須重啟,以再次啟動(dòng)引導(dǎo)加載器。如果應(yīng)用調(diào)用引導(dǎo)加載器,就能避免這一過(guò)程。引導(dǎo)加載的應(yīng)用響應(yīng)于某種外部事件,如按下按鍵或主機(jī)發(fā)出的具體數(shù)據(jù)命令,從而再次啟動(dòng)引導(dǎo)加載操作,在目標(biāo)系統(tǒng)上載入新的應(yīng)用。
此外,低功耗藍(lán)牙(BLE)模塊也可用于無(wú)線引導(dǎo)加載。與傳統(tǒng)藍(lán)牙不同的是,低功耗藍(lán)牙不使用SPP。不過(guò),對(duì)于低功耗藍(lán)牙而言,所有配置文件和服務(wù)支持全部位于應(yīng)用空間內(nèi)。產(chǎn)品開(kāi)發(fā)人員能在通用屬性配置文件(GATT)基礎(chǔ)上開(kāi)發(fā)自己的串行端口服務(wù),滿足BLE模塊需求,并將其用于無(wú)線引導(dǎo)加載。
[page]
引導(dǎo)加載器的設(shè)計(jì)考慮因素:
穩(wěn)健可靠的引導(dǎo)加載器應(yīng)當(dāng)能夠檢測(cè)、報(bào)告并有效處理無(wú)線引導(dǎo)加載過(guò)程中出現(xiàn)的錯(cuò)誤,如傳輸過(guò)程中的數(shù)據(jù)包丟失、數(shù)據(jù)損壞和閃存寫(xiě)入錯(cuò)誤等。通過(guò)存儲(chǔ)應(yīng)用的校驗(yàn)和或循環(huán)冗余碼(CRC),可以執(zhí)行閃存錯(cuò)誤校驗(yàn)。在引導(dǎo)加載操作開(kāi)始后,位會(huì)被清空。如果應(yīng)用成功下載并安裝,就會(huì)更新。舉例來(lái)說(shuō),如果在引導(dǎo)加載時(shí)斷電,那么在重啟時(shí)引導(dǎo)加載器應(yīng)檢測(cè)無(wú)效的校驗(yàn)位,而且不會(huì)讓部分加載的應(yīng)用獲得控制權(quán),而是等待主機(jī)啟動(dòng)新的引導(dǎo)加載操作。
一旦新應(yīng)用實(shí)現(xiàn)引導(dǎo)加載,那么引導(dǎo)加載器必須確認(rèn)引導(dǎo)加載鏡像是否有效,并讓新應(yīng)用獲得控制權(quán)。引導(dǎo)加載器還應(yīng)當(dāng)能檢查閃存中的自身鏡像,判斷其是否有效。另一個(gè)重要考慮因素是避免應(yīng)用覆蓋引導(dǎo)加載器本身。如果引導(dǎo)加載器損壞或被應(yīng)用覆蓋,那么系統(tǒng)就無(wú)法工作,需要對(duì)系統(tǒng)的引導(dǎo)加載器進(jìn)行重新編程。為了避免這種情況,閃存的引導(dǎo)加載器區(qū)域必須進(jìn)行保護(hù),避免引導(dǎo)加載器代碼被意外覆蓋。
引導(dǎo)加載器設(shè)計(jì)的另一個(gè)重要考慮因素就是何時(shí)開(kāi)始與主機(jī)通信。在確認(rèn)應(yīng)用有效后,引導(dǎo)加載器可等待一定時(shí)間讓主機(jī)開(kāi)始新的引導(dǎo)加載操作。如果等待時(shí)間過(guò)短,主機(jī)可能還無(wú)法可靠啟動(dòng)通信。如果等待時(shí)間過(guò)長(zhǎng),產(chǎn)品的整體啟動(dòng)時(shí)間就會(huì)太長(zhǎng)。與引導(dǎo)加載新應(yīng)用時(shí)避免設(shè)備重啟的解決方案類(lèi)似,這個(gè)時(shí)序問(wèn)題可通過(guò)讓?xiě)?yīng)用調(diào)用引導(dǎo)加載器進(jìn)行解決。
為了確保目標(biāo)系統(tǒng)無(wú)錯(cuò)誤,我們可用多應(yīng)用引導(dǎo)加載器在閃存中存儲(chǔ)多個(gè)應(yīng)用鏡像。如果引導(dǎo)加載器檢測(cè)到某個(gè)應(yīng)用鏡像被損壞,那么引導(dǎo)加載器能跳到另一個(gè)應(yīng)用鏡像。能夠保存的應(yīng)用數(shù)量取決于目標(biāo)系統(tǒng)的閃存大小。
此外,引導(dǎo)加載器中還可包含簡(jiǎn)單的調(diào)試功能,可用UART接口和Tera Term等終端仿真程序?qū)崿F(xiàn),從而在PC上顯示調(diào)試信息。調(diào)試信息還能用相同的藍(lán)牙到串行調(diào)試器無(wú)線發(fā)送。
定制引導(dǎo)加載器主機(jī)工具:
不同微控制器可直接使用標(biāo)準(zhǔn)的引導(dǎo)加載器主機(jī)工具應(yīng)用,無(wú)需對(duì)SPP的無(wú)線引導(dǎo)加載進(jìn)行任何修改。然而,引導(dǎo)加載器主機(jī)工具可以進(jìn)行定制,從而更好地滿足無(wú)線引導(dǎo)加載需求,并嵌入終端仿真器窗口,以查看調(diào)試信息,甚至能通過(guò)SPP無(wú)線發(fā)送具體數(shù)據(jù)來(lái)從應(yīng)用中調(diào)用引導(dǎo)加載器。圖3顯示了具有嵌入式終端仿真器窗口的定制引導(dǎo)加載器主機(jī)工具應(yīng)用實(shí)例。為充分利用終端仿真器,引導(dǎo)加載到目標(biāo)系統(tǒng)的任何新應(yīng)用都必須包含UART接口,并能在主機(jī)向目標(biāo)系統(tǒng)發(fā)送具體數(shù)據(jù)時(shí)調(diào)用引導(dǎo)加載器。UART接口可在引導(dǎo)加載器和應(yīng)用之間共享。
圖3:具有嵌入式終端仿真器窗口的定制引導(dǎo)加載器主機(jī)工具應(yīng)用實(shí)例。
如果采用稍微復(fù)雜的多應(yīng)用引導(dǎo)加載器設(shè)計(jì),我們也能利用SPP從主機(jī)向目標(biāo)系統(tǒng)無(wú)線發(fā)送不同消息,從而在閃存中切換存儲(chǔ)的多個(gè)應(yīng)用,這就能節(jié)約新應(yīng)用引導(dǎo)加載所需的時(shí)間。
特別推薦
- 增強(qiáng)視覺(jué)傳感器功能:3D圖像拼接算法幫助擴(kuò)大視場(chǎng)
- PNP 晶體管:特性和應(yīng)用
- 使用IO-Link收發(fā)器管理數(shù)據(jù)鏈路如何簡(jiǎn)化微控制器選擇
- 用好 DMA控制器這兩種模式 MCU效率大大提高!
- 深入分析帶耦合電感多相降壓轉(zhuǎn)換器的電壓紋波問(wèn)題
- Honda(本田)與瑞薩簽署協(xié)議,共同開(kāi)發(fā)用于軟件定義汽車(chē)的高性能SoC
- 第13講:超小型全SiC DIPIPM
技術(shù)文章更多>>
- 貿(mào)澤與TE Connectivity 和Microchip Technology聯(lián)手推出聚焦汽車(chē)Zonal架構(gòu)的全新電子書(shū)
- PCI Express Gen5:自動(dòng)化多通道測(cè)試
- 如何通過(guò)配置控制器優(yōu)化CAN總線系統(tǒng)性能
- 如何使用高性能監(jiān)控電路來(lái)提高工業(yè)功能安全合規(guī)性?
- 學(xué)子專(zhuān)區(qū) - ADALM2000實(shí)驗(yàn):多相濾波電路
技術(shù)白皮書(shū)下載更多>>
- 車(chē)規(guī)與基于V2X的車(chē)輛協(xié)同主動(dòng)避撞技術(shù)展望
- 數(shù)字隔離助力新能源汽車(chē)安全隔離的新挑戰(zhàn)
- 汽車(chē)模塊拋負(fù)載的解決方案
- 車(chē)用連接器的安全創(chuàng)新應(yīng)用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門(mén)搜索
線繞電位器
線繞電阻
線束
限位開(kāi)關(guān)
陷波器
相變存儲(chǔ)器
消弧線圈
肖特基二極管
心率監(jiān)測(cè)儀
欣達(dá)旺
新唐科技
信號(hào)發(fā)生器
信號(hào)繼電器
行程開(kāi)關(guān)
修復(fù)設(shè)備
蓄電池
旋轉(zhuǎn)開(kāi)關(guān)
血壓計(jì)
血氧儀
壓電蜂鳴器
壓接連接器
壓控振蕩器
壓力傳感器
壓力開(kāi)關(guān)
壓敏電阻
揚(yáng)聲器
遙控開(kāi)關(guān)
醫(yī)療電子
醫(yī)用成像
移動(dòng)電源