本發(fā)明屬于藍牙無線通信技術領域,尤其涉及一種基于藍牙BLE的無線升級手柄固件的方法及裝置。
背景技術:
目前市面上的游戲手柄,大部份在手柄生產(chǎn)時,將手柄控制程序(rom)一次性寫入在手柄里,這種方式只能在工廠通過指定的設備操作,難度很高,一般用戶很難操作,特別不利于升級rom;目前主流的手柄現(xiàn)狀:第一、不可升級,通過工廠出廠時通過特殊設備一次寫入到FLASH中,用戶不可升級更新;第二、能通電腦USB端品升級,但是通過在電腦上下載和安裝指定軟件和驅動,通過有線的方式升級,操作過程較麻煩。第三、部份設備可以通過HID和SPP進行升級。雖然藍牙還提供了HID和SPP聯(lián)接等標準模式,但此標準較麻煩,具發(fā)現(xiàn)慢、配對麻煩、干擾大等缺點,而且傳輸速度較慢。在部份系統(tǒng)上受限制不支持HID和SPP,或要求ROOT權限,例如:iOS系統(tǒng)上默認無法支持HID和SPP。
技術實現(xiàn)要素:
為了克服現(xiàn)有技術的不足,本發(fā)明的目的之一在于提供一種基于藍牙BLE的無線升級手柄固件的方法,其能解決手柄無線升級優(yōu)化的技術問題。
本發(fā)明的目的之二在于提供一種基于藍牙BLE的無線升級手柄固件的裝置,其能解決手柄無線升級優(yōu)化的技術問題。
本發(fā)明的目的之一采用以下技術方案實現(xiàn):
一種基于藍牙BLE的無線升級手柄固件的方法,包括以下步驟:
S1:一終端設備通過其藍牙BLE模塊與一手柄的藍牙BLE模塊進行連接;
S2:該終端設備獲取手柄的當前版本信息,且從固件服務器獲取最新版本信息;
S3:該終端設備判斷手柄的當前版本信息與固件服務器處的最新版本信息是否一致,如果是,則結束;如果否,則從固件服務器處獲取最新版本信息的固件數(shù)據(jù)包;所述固件數(shù)據(jù)包包括地址位、固件數(shù)據(jù)和校驗位;
S4:所述手柄通過其藍牙BLE模塊的GATT協(xié)議接收終端設備發(fā)送的固件數(shù)據(jù)包,并將固件數(shù)據(jù)包寫入手柄的flash存儲模塊中;所述flash存儲模塊包括信息區(qū)和數(shù)據(jù)區(qū)。
優(yōu)選地,步驟S4之后還包括步驟S5:所述手柄通過藍牙BLE模塊接收終端設備發(fā)送的重啟指令,手柄的MCU根據(jù)重啟指令重啟手柄,并從flash存儲模塊處加載固件數(shù)據(jù)。其能進一步解決固件數(shù)據(jù)加載的技術問題。
優(yōu)選地,在步驟S4中具體包括以下子步驟:
S41:手柄的MCU接收到終端設備發(fā)送的更新指令后,使得手柄進行升級模式;
S42:手柄通過藍牙BLE模塊的GATT協(xié)議接收終端設備發(fā)送的固件數(shù)據(jù);
S43:根據(jù)校驗位判斷固件數(shù)據(jù)是否正確,如果正確,則執(zhí)行步驟S44,如果不正確,則退出升級模式,停止更新;
S44:根據(jù)地址位將固件數(shù)據(jù)存儲flash存儲模塊中的數(shù)據(jù)區(qū)。其進一步公開了接收數(shù)據(jù)的方式。
優(yōu)選地,步驟S43中的根據(jù)檢驗位判斷固件數(shù)據(jù)是否正確的方式為CRC校驗或者奇偶校驗。其進一步公開了固件數(shù)據(jù)檢測的方法。
本發(fā)明的目的之二采用以下技術方案實現(xiàn):
一種基于藍牙BLE的無線升級手柄固件的裝置,包括以下模塊:
連接模塊:設置于一終端設備,用于通過其藍牙BLE模塊與一手柄的藍牙BLE模塊進行連接;
信息獲取模塊:設置于終端設備,用于獲取手柄的當前版本信息,且從固件服務器獲取最新版本信息;
判斷模塊:設置于終端設備,用于判斷判斷手柄的當前版本信息與固件服務器處的最新版本信息是否一致,如果是,則結束;如果否,則從固件服務器處獲取最新版本信息的固件數(shù)據(jù)包;所述固件數(shù)據(jù)包包括地址位、固件數(shù)據(jù)和校驗位;
數(shù)據(jù)寫入模塊:設置于一手柄,用于通過其藍牙BLE模塊的GATT協(xié)議接收終端設備發(fā)送的固件數(shù)據(jù)包,并將固件數(shù)據(jù)包寫入手柄的flash存儲模塊中;所述flash存儲模塊包括信息區(qū)和數(shù)據(jù)區(qū)。
優(yōu)選地,數(shù)據(jù)寫入模塊之后還包括重啟模塊:設置于終端設備,所述手柄通過藍牙BLE模塊接收終端設備發(fā)送的重啟指令,手柄的MCU根據(jù)重啟指令重啟手柄,并從flash存儲模塊處加載固件數(shù)據(jù)。其能解決固件數(shù)據(jù)加載的技術問題。
優(yōu)選地,在數(shù)據(jù)寫入模塊中具體包括以下子模塊:
更新指令接收模塊:設置于手柄,用于接收終端設備發(fā)送的更新指令后,使手柄進行升級模式;
固件數(shù)據(jù)接收模塊:設置于手柄,用于通過藍牙BLE模塊的GATT協(xié)議接收終端設備發(fā)送的固件數(shù)據(jù);
數(shù)據(jù)判斷模塊:設置于手柄,用于根據(jù)校驗位判斷固件數(shù)據(jù)是否正確,如果正確,則執(zhí)行固件數(shù)據(jù)寫入模塊,如果不正確,則退出升級模式,停止更新;
固件數(shù)據(jù)寫入模塊:設置于手柄,用于根據(jù)地址位將固件數(shù)據(jù)存儲flash存儲模塊中的數(shù)據(jù)區(qū)。其進一步公開了數(shù)據(jù)輸入模塊中的各個子模塊。
優(yōu)選地,在數(shù)據(jù)判斷模塊中根據(jù)校驗位判斷固件數(shù)據(jù)是否正確的方式為CRC校驗或者奇偶校驗。其進一步公開了固件數(shù)據(jù)的校驗方式。
相比現(xiàn)有技術,本發(fā)明的有益效果在于:
本發(fā)明方法主要特性主要有以下幾點:第一:聯(lián)接快速簡單:利用藍牙4.0BLE特性功能,能夠做到快速發(fā)現(xiàn)和聯(lián)接,具抗干擾強等特點,操作較傳統(tǒng)的HID和SPP更方便簡單。目前市面上的手機和平板等裝配的藍牙模塊,大多已具有藍4.0的BLE功能。第二:具更高的通用性:同時支持android、iOS及其它支持藍牙聯(lián)接的系統(tǒng),具備很高的通用性。使用手機或平板的藍牙BLE無線升級,設備要求普及。第三:自動對比和查找最新版本,對比服務器上最新版本,升級操作更簡單;升級過程中對數(shù)據(jù)進行校驗,遍免錯刷,更具安全性和便捷性。通過優(yōu)化和升級,給手柄功能擴展帶來不限想象空間和靈活性。
附圖說明
圖1為本發(fā)明基于藍牙BLE的無線升級手柄固件的流程圖;
圖2為本發(fā)明基于藍牙BLE的無線升級手柄固件的裝置圖;
圖3為本發(fā)明基于藍牙BLE搭建的自定義Profile框圖。
具體實施方式
下面,結合附圖以及具體實施方式,對本發(fā)明做進一步描述:
本發(fā)明的硬件設施主要包括一終端設備和手柄,該終端設備具有藍牙BLE模塊并且能夠通過網(wǎng)絡獲取最新的版本信息,該手柄包括MCU模塊、藍牙BLE模塊、flash存儲模塊、按鍵模塊、電源模塊和LED模塊,其中MCU模塊用于管理藍牙BLE模塊和flash存儲模塊,對接收到的指令進行加工處理,通過藍牙BLE模塊進行藍牙連接、通信和管理的相關處理,通過MCU及相關的flash讀寫指令進行flash數(shù)據(jù)進行讀寫。
如圖1所示,本發(fā)明提供了一種基于藍牙BLE的無線升級手柄固件的方法,包括以下步驟:
S1:一終端設備通過其藍牙BLE模塊與一手柄的藍牙BLE模塊進行連接;在本步驟主要是用來檢測手柄的藍牙模塊是否打開,如果打開與手柄的藍牙模塊進行連接,從而以此去完成之后的數(shù)據(jù)傳輸?shù)炔襟E;兩個具有藍牙模塊的設備之間的搜索與連接都是現(xiàn)有技術中,常用的手段,再次就不過多進行詳細的描述;
S2:該終端設備獲取手柄的當前版本信息,且從固件服務器獲取最新版本信息;
S3:該終端設備判斷手柄的當前版本信息與固件服務器處的最新版本信息是否一致,如果是,則結束;如果否,則從固件服務器處獲取最新版本信息的固件數(shù)據(jù)包;所述固件數(shù)據(jù)包包括地址位、固件數(shù)據(jù)和校驗位;在步驟S2和步驟S3中,主要是為了比對手柄的當前版本信息與固件服務器的最新版本信息是否一致,避免出現(xiàn)手柄已經(jīng)是最新的版本信息了,還進行更新,從而浪費時間并且還存在錯刷的可能;
S4:所述手柄通過其藍牙BLE模塊的GATT協(xié)議接收終端設備發(fā)送的固件數(shù)據(jù)包,并將固件數(shù)據(jù)包寫入手柄的flash存儲模塊中;所述flash存儲模塊包括信息區(qū)和數(shù)據(jù)區(qū);
將flash的存儲單元劃分為信息區(qū)和數(shù)據(jù),在信息區(qū)存放手柄相關的硬件參數(shù)信息,比如硬件版本等通常不變的信息,在數(shù)據(jù)區(qū)存放手柄ROM數(shù)據(jù),相關的數(shù)據(jù)可以進行變更和擦寫,從而使得數(shù)據(jù)的更改變得更加的容易。
在步驟S4中具體包括以下子步驟:
S41:手柄的MCU接收到終端設備發(fā)送的更新指令后,使得手柄進行升級模式;
S42:手柄通過藍牙BLE模塊的GATT協(xié)議接收終端設備發(fā)送的固件數(shù)據(jù);通過藍牙BLE,大部分操作系統(tǒng)默認實現(xiàn)了通用HID、A2DP的標準結構,但是通過以上的標準結構,是很難做到自定義的數(shù)據(jù)傳輸,使得手柄版本的更新變得困難,并且該模式還收到環(huán)境和權利的約束;但是可以利用藍牙GATT的特性,通過創(chuàng)建自定義的GATT profile來實現(xiàn)自定義的數(shù)據(jù)的傳輸結構;如圖3所示,基于標準藍牙GATT協(xié)議,建立一個自定義的Bluetooth Gatt Server,其下包括Bluetooth Profile,并且在Bluetooth Profile中包括Name、第一UUID、Advertisement和Service等信息,其中Service還包括第二UUID和Read/Write等信息,其中Read/Write可讀可寫,其中UUID為唯一識別碼,建立好上述特征后,終端設備就可以通過以上信息判斷和連接此特征。
S43:根據(jù)校驗位判斷固件數(shù)據(jù)是否正確,如果正確,則執(zhí)行步驟S44,如果不正確,則退出升級模式,停止更新;其中根據(jù)檢驗位判斷固件數(shù)據(jù)是否正確的方式為CRC校驗或者奇偶校驗;通過設置校驗位從而使得其在升級過程中對數(shù)據(jù)進行校驗,避免錯刷,使得無線升級更加的安全和便捷。
S44:根據(jù)地址位將固件數(shù)據(jù)存儲flash存儲模塊中的數(shù)據(jù)區(qū)。
S5:所述手柄通過藍牙BLE模塊接收終端設備發(fā)送的重啟指令,手柄的一MCU根據(jù)重啟指令重啟手柄,并從flash存儲模塊處加載固件數(shù)據(jù)。通過重啟的設置,使得手柄進行重啟的時候,能夠重新加載存入flash的ROM數(shù)據(jù),從而完成手柄固件的更新,使得手柄的功能更加的完善。
如圖2所示,本發(fā)明還提供了一種基于藍牙BLE的無線升級手柄固件的裝置,包括以下模塊:
連接模塊:設置于一終端設備,用于通過其藍牙BLE模塊與一手柄的藍牙BLE模塊進行連接;
信息獲取模塊:設置于終端設備,用于獲取手柄的當前版本信息,且從固件服務器獲取最新版本信息;
判斷模塊:設置于終端設備,用于判斷判斷手柄的當前版本信息與固件服務器處的最新版本信息是否一致,如果是,則結束;如果否,則從固件服務器處獲取最新版本信息的固件數(shù)據(jù)包;所述固件數(shù)據(jù)包包括地址位、固件數(shù)據(jù)和校驗位;
數(shù)據(jù)寫入模塊:設置于一手柄,用于通過其藍牙BLE模塊的GATT協(xié)議接收終端設備發(fā)送的固件數(shù)據(jù)包,并將固件數(shù)據(jù)包寫入手柄的flash存儲模塊中;所述flash存儲模塊包括信息區(qū)和數(shù)據(jù)區(qū);在數(shù)據(jù)寫入模塊中具體包括以下子模塊:
更新指令接收模塊:設置于手柄,用于接收終端設備發(fā)送的更新指令后,使手柄進行升級模式;
固件數(shù)據(jù)接收模塊:設置于手柄,用于通過藍牙BLE模塊的GATT協(xié)議接收終端設備發(fā)送的固件數(shù)據(jù);
數(shù)據(jù)判斷模塊:設置于手柄,用于根據(jù)校驗位判斷固件數(shù)據(jù)是否正確,如果正確,則執(zhí)行固件數(shù)據(jù)寫入模塊,如果不正確,則退出升級模式,停止更新;在數(shù)據(jù)判斷模塊中根據(jù)校驗位判斷固件數(shù)據(jù)是否正確的方式為CRC校驗或者奇偶校驗。
固件數(shù)據(jù)寫入模塊:設置于手柄,用于根據(jù)地址位將固件數(shù)據(jù)存儲flash存儲模塊中的數(shù)據(jù)區(qū)。
重啟模塊:設置于終端設備,所述手柄通過藍牙BLE模塊接收終端設備發(fā)送的重啟指令,手柄的一MCU根據(jù)重啟指令重啟手柄,并從flash存儲模塊處加載固件數(shù)據(jù)。
對本領域的技術人員來說,可根據(jù)以上描述的技術方案以及構思,做出其它各種相應的改變以及形變,而所有的這些改變以及形變都應該屬于本發(fā)明權利要求的保護范圍之內(nèi)。