<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 設計應用 > 利用藍牙串行端口配置文件(SPP)實(shí)現無(wú)線(xiàn)引導加載

利用藍牙串行端口配置文件(SPP)實(shí)現無(wú)線(xiàn)引導加載

作者: 時(shí)間:2016-10-10 來(lái)源:網(wǎng)絡(luò ) 收藏

引導加載器支持產(chǎn)品固件的現場(chǎng)更新。引導加載器可使用UART、I2C、SPI或USB等常見(jiàn)通信接口更新固件,而引導加載器主機和目標之間通常采用有線(xiàn)連接方式。在藍牙到串行適配器的幫助下,這個(gè)引導加載操作能通過(guò)無(wú)線(xiàn)方式實(shí)現。如果目標所處的位置難以物理地訪(fǎng)問(wèn),或者目標位于密封設備內,那么這種無(wú)線(xiàn)連接功能就會(huì )特別有用。

本文引用地址:http://dyxdggzs.com/article/201610/306183.htm

使用引導加載器的第一步就是配置產(chǎn)品,讓引導加載器(而不是應用)去執行。一旦引導加載器運行,主機就會(huì )通過(guò)通信通道發(fā)送“start bootload”命令。如果引導加載器發(fā)出“OK”回應,那么就會(huì )開(kāi)始引導加載。在引導加載期間,主機讀取新應用文件,將其解析為閃存寫(xiě)入命令,并發(fā)送命令到引導加載器。在整個(gè)文件發(fā)送后,引導加載器會(huì )確認文件完整性,并發(fā)送控制到新應用。

采用藍牙到串行適配器的無(wú)線(xiàn)引導加載過(guò)程可在任何支持UART引導加載器的目標上進(jìn)行,無(wú)需使用藍牙串行端口配置文件(SPP)對運行在目標設備上的主機或引導加載器固件進(jìn)行任何修改。藍牙配置文件是指定藍牙設備一般行為的藍牙核心規范上額外的協(xié)議,可用于支持藍牙設備與其它具有相同配置文件的設備進(jìn)行通信。

SPP基于仿真RS-232串行端口的射頻通信(RFCOMM)協(xié)議,它定義了如何設置兩個(gè)設備之間的虛擬串行端口,如何利用藍牙互聯(lián)。支持藍牙功能的PC能連接到目標側的藍牙串行適配器,并進(jìn)行引導加載操作。引導加載命令可通過(guò)發(fā)送串行命令到當前運行在目標器件上的應用而實(shí)現無(wú)線(xiàn)觸發(fā)。

引導加載器

引導加載過(guò)程會(huì )通過(guò)標準通信接口更新嵌入式系統的固件。主機可以是帶引導加載器主機應用工具的PC,也可以是另一個(gè)微控制器。引導加載器是加電啟動(dòng)或系統重設后將要執行的第一行代碼。引導加載器會(huì )預編程到微控制器中,與主機通信,并獲得新的應用鏡像,將其寫(xiě)入微控制器的內部閃存。在引導加載操作成功后,微控制器會(huì )開(kāi)始執行新的應用固件。如果沒(méi)有從主機接收到新的應用,那么引導加載器會(huì )執行微控制器中現有的應用。

應用固件鏡像的格式取決于使用的微控制器。舉例來(lái)說(shuō),PSoC控制器使用.cyacd(應用代碼和數據)作為引導加載應用的格式。如果采用標準的藍牙到串行適配器,那么我們可在支持UART引導加載器的目標器件上無(wú)線(xiàn)執行同樣的引導加載操作。

在利用藍牙到串行適配器進(jìn)行無(wú)線(xiàn)引導加載的情況下,基本的引導加載操作保持不變。不過(guò),我們需要在主機和目標器件之間建立虛擬串行連接,通過(guò)藍牙無(wú)線(xiàn)發(fā)送應用鏡像。SPP定義了如何設置虛擬串行端口和兩個(gè)藍牙設備的互聯(lián),隨后允許設備進(jìn)行RS232(或類(lèi)似的)串行線(xiàn)纜仿真。這種配置文件涵蓋的情境能支持傳統應用,這里藍牙作為線(xiàn)纜連接的替代,使用虛擬串行端口抽象。利用SPP,互聯(lián)設備發(fā)送和接收數據就像互聯(lián)的RX和TX線(xiàn)路一樣。

圖1顯示了SPP中使用的協(xié)議和實(shí)體?;鶐?、LMP和L2CAP是OSI 中的第1層和第2層藍牙協(xié)議。RFCOMM是藍牙版GSM TS 07.10標準,GSM手機用它在一個(gè)物理串行線(xiàn)纜上多路復用多個(gè)流,為串行端口仿真提供通信協(xié)議。SDP是藍牙服務(wù)發(fā)現協(xié)議,支持藍牙設備發(fā)現其它藍牙設備提供的服務(wù)和相關(guān)參數。

圖1:配置文件協(xié)議棧包括SPP使用的不同協(xié)議和實(shí)體。

就使用SPP的無(wú)線(xiàn)引導加載而言,兩側運行的應用為PC上的引導加載器主機應用或主機微控制器上的UART接口以及目標系統上的UART引導加載器。

Bluefruit EZ-Link模塊或JY-MCU模塊等標準藍牙到串行適配器能配對具備藍牙功能的計算機,并顯示為串行COM端口。將藍牙模塊和PC配對后,設備管理器中會(huì )列出兩個(gè)串行COM端口。之所以會(huì )出現這種情況,是因為藍牙串行端口是基于RFCOMM,與物理串行端口不同,它在建立藍牙虛擬連接時(shí)同時(shí)需要服務(wù)器和客戶(hù)端。

設備管理器中列出的一個(gè)端口是入站端口(服務(wù)器),另一個(gè)則是出站端口(客戶(hù)端)。然而,用其中一個(gè)串行端口建立連接后,它就是雙向的。如果PC發(fā)起與藍牙模塊的連接,則使用出站端口。如果藍牙模塊發(fā)起連接,則使用入站端口。對于目標系統的無(wú)線(xiàn)引導加載而言,必須使用出站端口,因為PC是主機,它必須發(fā)起與藍牙模塊的連接。

藍牙模塊必須連接到運行UART引導加載器的目標系統上的UART接口。舉例來(lái)說(shuō),在關(guān)閉電路板的USB到串行部分以無(wú)線(xiàn)引導加載PSoC 4的情況下,藍牙模塊可連接到CY8CKIT-049 PSoC 4原型設計套件。PSoC 4原型設計板易于使用,成本較低,能在主板兼容報頭上提供PSoC 4微控制器的所有I/O引腳,從而支持快速原型設計,而且配套提供預編程的UART引導加載器。

藍牙模塊的波特率應匹配目標系統上引導加載器配置的波特率。大多數藍牙模塊支持AT命令來(lái)配置模塊的波特率,這需要用到USB-UART橋接器或配備UART接口的微控制器。PSoC 4原型設計板的USB-串行器件部分也可利用AT命令配置藍牙模塊的波特率。引導加載器主機應用工具則用藍牙虛擬串行端口來(lái)無(wú)線(xiàn)執行引導加載操作。圖2給出了主機和目標系統的系統級方框圖。

圖2:系統級方框圖顯示主機和目標系統的不同組件。

如果引導加載器主機是另一個(gè)微控制器,那么無(wú)線(xiàn)引導加載程序仍會(huì )在其它藍牙到串行適配器(連接到主機微控制器UART接口)的幫助下進(jìn)行。對于不支持藍牙的PC而言,標準的USB藍牙收發(fā)器可用來(lái)建立藍牙模塊連接。

成功引導加載后,目標系統會(huì )開(kāi)始執行新的應用。如果需要引導加載另一個(gè)新應用,那么目標系統必須重啟,以再次啟動(dòng)引導加載器。如果應用調用引導加載器,就能避免這一過(guò)程。引導加載的應用響應于某種外部事件,如按下按鍵或主機發(fā)出的具體數據命令,從而再次啟動(dòng)引導加載操作,在目標系統上載入新的應用。

此外,低功耗藍牙(BLE)模塊也可用于無(wú)線(xiàn)引導加載。與傳統藍牙不同的是,低功耗藍牙不使用SPP。不過(guò),對于低功耗藍牙而言,所有配置文件和服務(wù)支持全部位于應用空間內。產(chǎn)品開(kāi)發(fā)人員能在通用屬性配置文件(GATT)基礎上開(kāi)發(fā)自己的串行端口服務(wù),滿(mǎn)足BLE模塊需求,并將其用于無(wú)線(xiàn)引導加載。

引導加載器的設計考慮因素:

穩健可靠的引導加載器應當能夠檢測、報告并有效處理無(wú)線(xiàn)引導加載過(guò)程中出現的錯誤,如傳輸過(guò)程中的數據包丟失、數據損壞和閃存寫(xiě)入錯誤等。通過(guò)存儲應用的校驗和或循環(huán)冗余碼(CRC),可以執行閃存錯誤校驗。在引導加載操作開(kāi)始后,位會(huì )被清空。如果應用成功下載并安裝,就會(huì )更新。舉例來(lái)說(shuō),如果在引導加載時(shí)斷電,那么在重啟時(shí)引導加載器應檢測無(wú)效的校驗位,而且不會(huì )讓部分加載的應用獲得控制權,而是等待主機啟動(dòng)新的引導加載操作。

一旦新應用實(shí)現引導加載,那么引導加載器必須確認引導加載鏡像是否有效,并讓新應用獲得控制權。引導加載器還應當能檢查閃存中的自身鏡像,判斷其是否有效。另一個(gè)重要考慮因素是避免應用覆蓋引導加載器本身。如果引導加載器損壞或被應用覆蓋,那么系統就無(wú)法工作,需要對系統的引導加載器進(jìn)行重新編程。為了避免這種情況,閃存的引導加載器區域必須進(jìn)行保護,避免引導加載器代碼被意外覆蓋。

引導加載器設計的另一個(gè)重要考慮因素就是何時(shí)開(kāi)始與主機通信。在確認應用有效后,引導加載器可等待一定時(shí)間讓主機開(kāi)始新的引導加載操作。如果等待時(shí)間過(guò)短,主機可能還無(wú)法可靠啟動(dòng)通信。如果等待時(shí)間過(guò)長(cháng),產(chǎn)品的整體啟動(dòng)時(shí)間就會(huì )太長(cháng)。與引導加載新應用時(shí)避免設備重啟的解決方案類(lèi)似,這個(gè)時(shí)序問(wèn)題可通過(guò)讓?xiě)谜{用引導加載器進(jìn)行解決。

為了確保目標系統無(wú)錯誤,我們可用多應用引導加載器在閃存中存儲多個(gè)應用鏡像。如果引導加載器檢測到某個(gè)應用鏡像被損壞,那么引導加載器能跳到另一個(gè)應用鏡像。能夠保存的應用數量取決于目標系統的閃存大小。

此外,引導加載器中還可包含簡(jiǎn)單的調試功能,可用UART接口和Tera Term等終端仿真程序實(shí)現,從而在PC上顯示調試信息。調試信息還能用相同的藍牙到串行調試器無(wú)線(xiàn)發(fā)送。

定制引導加載器主機工具:

不同微控制器可直接使用標準的引導加載器主機工具應用,無(wú)需對SPP的無(wú)線(xiàn)引導加載進(jìn)行任何修改。然而,引導加載器主機工具可以進(jìn)行定制,從而更好地滿(mǎn)足無(wú)線(xiàn)引導加載需求,并嵌入終端仿真器窗口,以查看調試信息,甚至能通過(guò)SPP無(wú)線(xiàn)發(fā)送具體數據來(lái)從應用中調用引導加載器。圖3顯示了具有嵌入式終端仿真器窗口的定制引導加載器主機工具應用實(shí)例。為充分利用終端仿真器,引導加載到目標系統的任何新應用都必須包含UART接口,并能在主機向目標系統發(fā)送具體數據時(shí)調用引導加載器。UART接口可在引導加載器和應用之間共享。

圖3:具有嵌入式終端仿真器窗口的定制引導加載器主機工具應用實(shí)例。

如果采用稍微復雜的多應用引導加載器設計,我們也能利用SPP從主機向目標系統無(wú)線(xiàn)發(fā)送不同消息,從而在閃存中切換存儲的多個(gè)應用,這就能節約新應用引導加載所需的時(shí)間。



關(guān)鍵詞: 引導加載器 SPP 串行端口 藍牙

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>