使用藍(lán)牙進(jìn)行文件的配置引導(dǎo),是國內(nèi)工程師在無線條件下升級程序的主要方式。那么,這種方法是怎樣實(shí)現(xiàn)引導(dǎo)加載程序正常運(yùn)行的呢?就讓我們跟隨專家老師的分析,來看一下無線條件下程序加載和升級的全過程。
引導(dǎo)加載是一個(gè)公國標(biāo)準(zhǔn)通信接口來升級嵌入式系統(tǒng)固件的過程。主機(jī)可以是具有引導(dǎo)加載程序主機(jī)應(yīng)用程序工具或其他微控制器的電腦。引導(dǎo)加載程序是通電或系統(tǒng)重置后要執(zhí)行的第一個(gè)代碼。
預(yù)編程到微控制器的引導(dǎo)裝載程序與主機(jī)通信,以獲得新的應(yīng)用程序圖像并將其寫入微控制器的內(nèi)部閃存。引導(dǎo)加載操作成功之后,微控制器開始執(zhí)行新的應(yīng)用固件。如果新的應(yīng)用程序未被主機(jī)接收,微控制器中的引導(dǎo)加載程序會執(zhí)行現(xiàn)有的應(yīng)用程序。
應(yīng)用程序固件圖像的格式取決于所使用的微控制器。例如,一個(gè)PSoC控制器使用cyacd(應(yīng)用程序代碼和數(shù)據(jù))作為可引導(dǎo)加載應(yīng)用程序的格式。通過使用標(biāo)準(zhǔn)的藍(lán)牙到串行適配器,在支持UART引導(dǎo)程序的目標(biāo)上,可以使用無線方式執(zhí)行相同的無線加載操作。
基本的引導(dǎo)加載操作是相同的,只不過無線引導(dǎo)加載使用的是藍(lán)牙到串行適配器。然而,虛擬串行連接必須建立在主機(jī)和目標(biāo)之間,通過藍(lán)牙無線發(fā)送應(yīng)用圖像。
SPP定義了如何設(shè)置虛擬串行端口,以及如何連接兩個(gè)擁有藍(lán)牙功能的設(shè)備。之后,它可以讓這些設(shè)備執(zhí)行RS-232(或類似的)串口線仿真。被該配置文件覆蓋的腳本用藍(lán)牙代替電纜,通過虛擬串口抽象化來處理舊有應(yīng)用程序。使用SPP,所連接的設(shè)備可以發(fā)送和接收數(shù)據(jù),就好像在它們之間有Rx和Tx線連接一樣。
基頻、LMP和L2CAP是OSI(開發(fā)互聯(lián)系統(tǒng))第1層和2個(gè)藍(lán)牙協(xié)議。RFCOMM是一個(gè)基于歐洲電信標(biāo)準(zhǔn)協(xié)會ETSI07.10規(guī)程的串行線性仿真協(xié)議。SDP是藍(lán)牙服務(wù)發(fā)現(xiàn)協(xié)議,它允許藍(lán)牙設(shè)備發(fā)現(xiàn)其他藍(lán)牙設(shè)備所提供的服務(wù)及其相關(guān)參數(shù)。
在使用SPP無線引導(dǎo)加載的情況下,應(yīng)用程序運(yùn)行在兩方,一方是在PC上的主機(jī)自舉程序或者是在主機(jī)微控制器上的UART接口和目標(biāo)系統(tǒng)上的UART引導(dǎo)加載程序。
標(biāo)準(zhǔn)藍(lán)牙到串行適配器,如Bluefruit EZ-Link模塊或JY-MCU模塊,可以與任何具有藍(lán)牙功能的電腦進(jìn)行配對,并出現(xiàn)串行COM端口。在藍(lán)牙模塊與計(jì)算機(jī)配對后,在設(shè)備管理器列表中會出現(xiàn)兩個(gè)串行COM端口。這是因?yàn)樗{(lán)牙串口是基于RFCOMM的,它與物理串口不同,在建立藍(lán)牙串行連接時(shí),它既需要服務(wù)器,也需要客戶端。
在設(shè)備管理器中列出的兩個(gè)端口,一個(gè)是入站端口,也就是大家經(jīng)常說的服務(wù)器;一個(gè)是出站口,即客戶端。但是,一旦通過其中任何一個(gè)端口建立了連接,它就會變成雙向的。出站端口用于PC發(fā)起與藍(lán)牙模塊的連接時(shí),而入站端口用于藍(lán)牙模塊啟動連接的時(shí)候。目標(biāo)系統(tǒng)的無線引導(dǎo)加載必須使用出站端口,因?yàn)镻C是主機(jī),必須用來啟動與藍(lán)牙模塊的連接。
藍(lán)牙模塊必須連接到UART端口,運(yùn)行UART引導(dǎo)加載程序。例如,在關(guān)掉USB串行部分,用無線方式引導(dǎo)加載PSoC4后,藍(lán)牙模塊必須連接到CY8CKIT-049的PSoC4原型工具包。
藍(lán)牙模塊的波特率應(yīng)該與目標(biāo)系統(tǒng)引導(dǎo)加載程序的波特率相匹配。大多數(shù)藍(lán)牙模塊支持AT命令配置模塊的波特率,通常是使用USB-UART橋接器或是具有UART接口的微控制器。在PSoC4原型基板的USB串行設(shè)備部分,也可用AT命令配置藍(lán)牙模塊的波特率。之后,主機(jī)自舉程序工具就可以使用藍(lán)牙虛擬串口以無線方式進(jìn)行引導(dǎo)加載操作。
如果引導(dǎo)加載程序是另一個(gè)微控制器,使用一個(gè)額外的藍(lán)牙到串口適配器連接到主機(jī)微控制器的UART接口,這樣仍然能夠?qū)崿F(xiàn)無線引導(dǎo)加載。對于不支持藍(lán)牙的PC,標(biāo)準(zhǔn)USB藍(lán)牙軟件保護(hù)器可以用來與藍(lán)牙模塊建立連接。
成功引導(dǎo)加載之后,目標(biāo)系統(tǒng)將開始執(zhí)行新的應(yīng)用程序。如果另一個(gè)新的應(yīng)用程序需要被引導(dǎo)加載,那么目標(biāo)系統(tǒng)必須重置,再一次啟動引導(dǎo)加載程序。這可以通過應(yīng)用程序調(diào)用引導(dǎo)加載程序來避免。被引導(dǎo)加載應(yīng)用程序可以響應(yīng)某些外部事件,例如按下按鈕或從主機(jī)接收到特定數(shù)據(jù)的命令,并重新開始引導(dǎo)加載操作,把新的應(yīng)用程序上載到目標(biāo)系統(tǒng)。
結(jié)語
在使用藍(lán)牙無線引導(dǎo)加載程序的過程中,工程師需注意的一點(diǎn)事,在建立連接時(shí)要保障藍(lán)牙設(shè)備與服務(wù)器和客戶端兩個(gè)端口的同步接通,必要情況下可以使用USB藍(lán)牙保護(hù)器進(jìn)行對接。