一種穿戴式人體運(yùn)動(dòng)捕捉系統(tǒng)的節(jié)點(diǎn)固件更新方法
【專利摘要】本申請(qǐng)?zhí)峁┑拇┐魇饺梭w運(yùn)動(dòng)捕捉系統(tǒng)的節(jié)點(diǎn)固件更新方法,只需通過向數(shù)據(jù)協(xié)調(diào)器發(fā)送更新指令和數(shù)據(jù)包,即可完成協(xié)調(diào)器所控制范圍內(nèi)所有傳感器節(jié)點(diǎn)程序升級(jí)操作簡(jiǎn)單方便;此外,無需拆卸傳感器節(jié)點(diǎn),或者使用專用編程接口,也不需要逐個(gè)節(jié)點(diǎn)進(jìn)行更新升級(jí),可以節(jié)省大量的人力成本,避免無用的人力消耗;另外,本申請(qǐng)?zhí)峁┑拇┐魇饺梭w運(yùn)動(dòng)捕捉系統(tǒng)的節(jié)點(diǎn)固件更新方法,無需為節(jié)點(diǎn)程序更新安裝額外的有線無線連接設(shè)備,通過合理利用節(jié)點(diǎn)與數(shù)據(jù)協(xié)調(diào)器之間的藍(lán)牙通信設(shè)備即可實(shí)現(xiàn)升級(jí)指令和更新數(shù)據(jù)包的傳送。
【專利說明】
-種穿戴式人體運(yùn)動(dòng)捕捉系統(tǒng)的節(jié)點(diǎn)固件更新方法
技術(shù)領(lǐng)域
[0001] 本發(fā)明設(shè)及穿戴人體健康技術(shù)領(lǐng)域,特別設(shè)及一種穿戴式人體運(yùn)動(dòng)捕捉系統(tǒng)的節(jié) 點(diǎn)固件更新方法。
【背景技術(shù)】
[0002] 穿戴式人體運(yùn)動(dòng)捕捉系統(tǒng)的一般結(jié)構(gòu)是由一個(gè)數(shù)據(jù)協(xié)調(diào)器(或者數(shù)據(jù)基站、數(shù)據(jù) 中轉(zhuǎn)中屯、)和多個(gè)傳感器節(jié)點(diǎn)構(gòu)成,各個(gè)傳感器節(jié)點(diǎn)分布于身體的各個(gè)部位,采集的運(yùn)動(dòng)數(shù) 據(jù)通過有線或者無線的方式傳送到數(shù)據(jù)協(xié)調(diào)器。一般而言,為了不影響人體的運(yùn)動(dòng),傳感器 與數(shù)據(jù)協(xié)調(diào)器間的通信方式均采用無線通信方式。
[0003] 在開發(fā)過程中,需要多次更改部分需要固化的關(guān)鍵參數(shù),如量程、精度和闊值等, 不得不逐個(gè)節(jié)點(diǎn)更新程序;一套運(yùn)動(dòng)捕捉系統(tǒng)往往由十個(gè)左右節(jié)點(diǎn)構(gòu)成。逐個(gè)節(jié)點(diǎn)地進(jìn)行 程序更新,既耗費(fèi)人力也不便捷。在使用過程中,必須要滿足客戶對(duì)系統(tǒng)的性能提升、功能 擴(kuò)展等要求,能夠提供相應(yīng)的升級(jí)方案,通過更新固件程序能夠盡可能降低成本、實(shí)現(xiàn)對(duì)原 有資源的重新利用。
[0004] 在應(yīng)用編程(In-Application Programming)指在系統(tǒng)運(yùn)行的過程中對(duì)程序執(zhí)行 代碼進(jìn)行動(dòng)態(tài)修改,可W完成在線升級(jí)程序,避免重新拆裝設(shè)備,相比于原始的在系統(tǒng)編程 (In-System Programming)具有獨(dú)特的優(yōu)勢(shì)。
[0005] 中國(guó)專利200720009338.9公開了一種基于GPRS網(wǎng)絡(luò)的ARM嵌入式終端遠(yuǎn)程升級(jí)裝 置,通過GPRS通信模塊將升級(jí)數(shù)據(jù)包發(fā)送至待升級(jí)設(shè)備,設(shè)備接收到數(shù)據(jù)包后通過ARM忍片 支持的IAP特性進(jìn)行程序更新;考慮到升級(jí)數(shù)據(jù)包可能較大,會(huì)進(jìn)行數(shù)據(jù)包分包傳輸。
[0006] 中國(guó)專利201210216152.6公開了一種空調(diào)設(shè)備的控制裝置、程序更新方法,通過 無線設(shè)備(WiFi或Zigbee)向控制器發(fā)送更新指令和數(shù)據(jù)包,完成對(duì)控制器的程序更新;同 時(shí),控制器向另一個(gè)控制器(室外機(jī))發(fā)送指令和數(shù)據(jù)包,完成室外機(jī)的控制程序更新。
[0007] 中國(guó)專利201410821443.7公開了一種基于IAP的可配置全網(wǎng)絡(luò)遠(yuǎn)程節(jié)點(diǎn)固件升級(jí) 方法,上位機(jī)通過化hernet網(wǎng)絡(luò)通信將更新數(shù)據(jù)包傳送到化C設(shè)備,PLC設(shè)備接收到數(shù)據(jù)包 后通過CAN總線傳輸?shù)竭h(yuǎn)程節(jié)點(diǎn),特別適合于大區(qū)域分布式或大范圍可移動(dòng)的嵌入式設(shè)備, 如大型油庫、倉儲(chǔ)、城市綜合體、車載設(shè)備等領(lǐng)域。
[000引現(xiàn)有技術(shù)都是針對(duì)特定的應(yīng)用場(chǎng)合而設(shè)計(jì),并不適合所述穿戴式人體運(yùn)動(dòng)捕捉系 統(tǒng)的各個(gè)節(jié)點(diǎn)控制程序更新,主要存在W下幾個(gè)方面問題:
[0009] DGPRS遠(yuǎn)程終端升級(jí)適合更新設(shè)備遠(yuǎn)離主機(jī)的情況,可W避免長(zhǎng)距離情況下人員 奔波和升級(jí)成本的增加;但是每個(gè)節(jié)點(diǎn)必須安裝GPRS設(shè)備,造成軟硬件成本上升;此外, GPRS網(wǎng)絡(luò)帶寬較小,數(shù)據(jù)包只能切分多個(gè)數(shù)據(jù)塊傳輸,且受網(wǎng)絡(luò)環(huán)境影響,在數(shù)據(jù)包較大的 情況下,數(shù)據(jù)傳輸、校驗(yàn)都會(huì)影響升級(jí)成敗。
[0010] 2)針對(duì)空調(diào)設(shè)備程序更新方法能夠?qū)崿F(xiàn)控制器、空調(diào)的一致更新,但是只設(shè)及單 一的設(shè)備,無法滿足傳感器網(wǎng)絡(luò)的多個(gè)節(jié)點(diǎn)尋址、數(shù)據(jù)收發(fā)等問題。
[0011] 3)采樣CAN總線連接網(wǎng)絡(luò)設(shè)備程序更新方案特別適合于大型油庫或者樓道等應(yīng)用 場(chǎng)合,可W在不破壞墻體、設(shè)備的情況下進(jìn)行設(shè)備升級(jí),但是CAN通信協(xié)議過于復(fù)雜,如果應(yīng) 用于所述穿戴式傳感器網(wǎng)絡(luò)節(jié)點(diǎn)會(huì)增加開發(fā)難度、且需要有線連接,不利于人體活動(dòng)。
【發(fā)明內(nèi)容】
[0012] 有鑒于此,有必要提供一種操作簡(jiǎn)單、節(jié)約成本的穿戴式人體運(yùn)動(dòng)捕捉系統(tǒng)的節(jié) 點(diǎn)固件更新方法。
[0013] 為實(shí)現(xiàn)上述目的,本申請(qǐng)采用下述技術(shù)方案:
[0014] -種穿戴式人體運(yùn)動(dòng)捕捉系統(tǒng)的節(jié)點(diǎn)固件更新方法,所述穿戴式人體運(yùn)動(dòng)捕捉系 統(tǒng)包括上位機(jī)、一個(gè)數(shù)據(jù)協(xié)調(diào)器及多個(gè)傳感器節(jié)點(diǎn)、所述上位機(jī)信號(hào)連接于所述數(shù)據(jù)協(xié)調(diào) 器,用于將更新固件指令和固件數(shù)據(jù)包發(fā)送到所述數(shù)據(jù)協(xié)調(diào)器,所述數(shù)據(jù)協(xié)調(diào)器輪詢掃描 每個(gè)傳感器節(jié)點(diǎn)并發(fā)送指令和數(shù)據(jù)包,所述傳感器節(jié)點(diǎn)接收來自數(shù)據(jù)協(xié)調(diào)器的程序更新 包,完成固件程序更新,所述穿戴式人體運(yùn)動(dòng)捕捉系統(tǒng)的節(jié)點(diǎn)固件更新方法包括下述步驟:
[0015] 步驟SlO:初始化所述上位機(jī);
[0016] 步驟S20:測(cè)試所述上位機(jī)與所述數(shù)據(jù)協(xié)調(diào)器串口通信是否正常,如果正常則發(fā)送 固件更新指令"衝PdateFirmr,所述數(shù)據(jù)協(xié)調(diào)器接收到指令后向所述上位機(jī)發(fā)送指令"@ ReceiveingFirm妒;
[0017] 步驟S30:所述上位機(jī)判別指令后,將程序所需的固件更新數(shù)據(jù)包傳送到所述數(shù)據(jù) 協(xié)調(diào)器,并等待數(shù)據(jù)協(xié)調(diào)器返回結(jié)果;
[0018] 步驟S40:所述數(shù)據(jù)協(xié)調(diào)器通過串口接收數(shù)據(jù)包,如果傳輸未完成,向所述上位機(jī) 發(fā)送"傳輸失敗"指令,請(qǐng)求重傳;如果接收成功,還需進(jìn)行CRC校驗(yàn):如果校驗(yàn)成功,向上位 機(jī)發(fā)送"傳輸完成"指令;如果校驗(yàn)失敗,則發(fā)送指令"校驗(yàn)失敗"指令,請(qǐng)求重傳;
[0019] 步驟S50:所述數(shù)據(jù)協(xié)調(diào)器成功接收固件更新包后,進(jìn)行數(shù)據(jù)包重新封裝,所述數(shù) 據(jù)包包括所述傳感器節(jié)點(diǎn)的ID號(hào)、藍(lán)牙配對(duì)碼、數(shù)據(jù)包W及其他附加信息;
[0020] 步驟S60:所述數(shù)據(jù)協(xié)調(diào)器設(shè)定的ID測(cè)試藍(lán)牙通信是否正常,如果正常,發(fā)送更新 指令1化dateXXr,其中"XX"代表所述傳感器節(jié)點(diǎn)的編號(hào),對(duì)應(yīng)一個(gè)設(shè)定的ID號(hào),所述傳感 器節(jié)點(diǎn)接收到指令,產(chǎn)生軟中斷,所述單片機(jī)響應(yīng)軟中斷重啟;
[0021 ]步驟S70:所述傳感器節(jié)點(diǎn)重啟后執(zhí)行IAP程序,進(jìn)入數(shù)據(jù)接收準(zhǔn)備,如果接收成 功,向數(shù)據(jù)協(xié)調(diào)器返回"接收成功"指令;反之,返回"接收失敗"指令;
[0022] 步驟S80:所述傳感器節(jié)點(diǎn)接收完成數(shù)據(jù)包后,解析出固件更新數(shù)據(jù)包,轉(zhuǎn)而執(zhí)行 IAP程序,將數(shù)據(jù)包寫入所述傳感器節(jié)點(diǎn)忍片的FLASH存儲(chǔ)區(qū),同時(shí)向數(shù)據(jù)協(xié)調(diào)器發(fā)送"更新 成功"指令,并產(chǎn)生一個(gè)軟中斷,控制忍片重啟執(zhí)行FLASH用戶區(qū)代碼;
[0023] 步驟S90:數(shù)據(jù)協(xié)調(diào)器接收到"更新成功"的指令,繼續(xù)對(duì)下一個(gè)節(jié)點(diǎn)進(jìn)行通信連 接、數(shù)據(jù)傳輸和固件更新,并重復(fù)上述步驟,直至所有節(jié)點(diǎn)完成,并向所述上位機(jī)發(fā)送"固件 升級(jí)成功"指令。
[0024] 優(yōu)選地,所述數(shù)據(jù)協(xié)調(diào)器由第一主控單片機(jī)、無線通信模塊、串口通信模塊組成, 所述第一主控單片機(jī)用于完成所述上位機(jī)的指令判別、數(shù)據(jù)包的存儲(chǔ)和轉(zhuǎn)發(fā)和所有傳感器 節(jié)點(diǎn)的通信;所述無線通信模塊用于與所述傳感器節(jié)點(diǎn)的一對(duì)一通信、數(shù)據(jù)包傳送和校驗(yàn); 所述串口通信模塊用于連接所述第一主控單片機(jī)和所述上位機(jī)。
[0025] 優(yōu)選地,所述第一主控單片機(jī)采用ST公司的STM32F405RG,所述無線通信模塊為藍(lán) 牙4.0,所述串口通信模塊為USART通信模塊。
[0026] 優(yōu)選地,在進(jìn)行所述穿戴式人體運(yùn)動(dòng)捕捉系統(tǒng)的節(jié)點(diǎn)固件更新之前還包括對(duì)所述 數(shù)據(jù)協(xié)調(diào)器進(jìn)行更新,具體包括下述步驟:
[0027] 步驟SllO:初始化所述數(shù)據(jù)協(xié)調(diào)器,包括初始化所述第一主控單片機(jī)、無線通信模 塊、串口通信模塊;
[00%]步驟S120:所述第一主控單片機(jī)判別是否接收到固件更新指令"軌JpdateFirmO", 如果沒有,正常執(zhí)行既定程序;如果接收到更新指令,進(jìn)入中斷,跳轉(zhuǎn)執(zhí)行更新程序;
[0029] 步驟S130:開始執(zhí)行更新程序,所述第一主控單片機(jī)向所述上位機(jī)發(fā)送數(shù)據(jù)接收 準(zhǔn)備好指令"SReceiveingFirm妒,通過串口接收來自上位機(jī)的數(shù)據(jù)包,如果傳輸未完成,向 所述上位機(jī)發(fā)送指令"CTransError妒;如果傳輸完成,再需進(jìn)行CRC校驗(yàn):如果校驗(yàn)成功,將 "數(shù)據(jù)傳輸完成"標(biāo)記位值' 1',并向上位機(jī)發(fā)送指令"@FirmFinished@" W報(bào)告數(shù)據(jù)傳輸完 成;如果校驗(yàn)失敗,則向上位機(jī)發(fā)送指令"OCRCErrorO",請(qǐng)求重傳;校驗(yàn)成功則發(fā)送"@ FirmSuccess妒指示固件接收成功;
[0030] 步驟S140:所述第一主控單片機(jī)判斷"數(shù)據(jù)傳輸完成"標(biāo)記位,如果為1,先將數(shù)據(jù) 包存儲(chǔ)在在所述數(shù)據(jù)協(xié)調(diào)器忍片的RAM區(qū),同時(shí)向指定所述傳感器節(jié)點(diǎn)發(fā)送藍(lán)牙配對(duì)碼,建 立藍(lán)牙連接;
[0031] 步驟S150:連接成功后,先向所述傳感器節(jié)點(diǎn)發(fā)送固件更新指令$UpdateXX$,其中 為目標(biāo)節(jié)點(diǎn)ID號(hào),如果返回等待固件數(shù)據(jù)包指令I(lǐng)Waitin評(píng),則進(jìn)行數(shù)據(jù)包封 裝,格式為"數(shù)據(jù)包同步頭+傳感器節(jié)點(diǎn)ID+藍(lán)牙配對(duì)碼+更新固件數(shù)據(jù)包+CRC校驗(yàn)值",并通 過藍(lán)牙傳輸?shù)街付↖D的節(jié)點(diǎn);
[0032] 步驟S160:接收所述傳感器節(jié)點(diǎn)返回的指令,如果傳輸未完成、或者傳輸完成而 CRC校驗(yàn)出錯(cuò)則重新傳送數(shù)據(jù)包;如果,傳輸成功則將子節(jié)點(diǎn)ID對(duì)應(yīng)"數(shù)據(jù)傳輸成功"標(biāo)記位 置'1';
[0033] 步驟S170:等待節(jié)點(diǎn)返回固件更新成功指令,如果超過20秒未接收到,則重新進(jìn)行 步驟S140~150;如果接收到指令則將子節(jié)點(diǎn)ID對(duì)應(yīng)"固件更新成功"標(biāo)記位置'1',同時(shí)向 上位機(jī)發(fā)送"ID號(hào)為XX的子節(jié)點(diǎn)已更新固件";
[0034] 步驟S180:檢查所有的ID號(hào)對(duì)應(yīng)的"固件更新成功"標(biāo)記位,如果全部為'1',則向 上位機(jī)發(fā)送信息,指示所有節(jié)點(diǎn)固件程序均已更新;如果有某個(gè)ID號(hào)對(duì)應(yīng)的"固件更新成 功"標(biāo)記位為0,則執(zhí)行步驟S140~160。
[0035] 優(yōu)選地,所述傳感器節(jié)點(diǎn)包括帶IAP特性的第二主控單片機(jī)、無線通信模塊及運(yùn)動(dòng) 傳感器,其中,無線通信模塊主要完成與數(shù)據(jù)協(xié)調(diào)器的通信、數(shù)據(jù)包接收和校驗(yàn);所述第二 主控單片機(jī)對(duì)接收到的數(shù)據(jù)包解析,指令識(shí)別、FLASH讀寫;運(yùn)動(dòng)傳感器用于采集人體運(yùn)動(dòng) 信息。
[0036] 優(yōu)選地,所述第二主控單片機(jī)采用ST公司的STM3化151QC、所述運(yùn)動(dòng)傳感器采用 InvenSense 公司的MPU9150。
[0037] 優(yōu)選地,在進(jìn)行所述穿戴式人體運(yùn)動(dòng)捕捉系統(tǒng)的節(jié)點(diǎn)固件更新之前還包括對(duì)所述 傳感器節(jié)點(diǎn)進(jìn)行更新,具體包括下述步驟:
[0038] 步驟S210:所述傳感器節(jié)點(diǎn)初始化;
[0039] 步驟S220:所述第二主控單片監(jiān)測(cè)是否有固件更新指令$UpdateXX$,并匹配自身 設(shè)置的節(jié)點(diǎn)ID值,如果檢測(cè)到命令,退出運(yùn)動(dòng)監(jiān)測(cè)模式,產(chǎn)生軟中斷,使得第二主控單片重 啟執(zhí)行IAP程序;反之,繼續(xù)監(jiān)測(cè)更新指令,如果20秒內(nèi)未接收到則執(zhí)行工作區(qū)程序,完成運(yùn) 動(dòng)監(jiān)測(cè);
[0040] 步驟S230:進(jìn)入IAP程序后,第二主控單片先向數(shù)據(jù)協(xié)調(diào)器發(fā)送準(zhǔn)備好傳送固件更 新數(shù)據(jù)包指令I(lǐng)Waitin評(píng)并通過藍(lán)牙接收數(shù)據(jù)包;如果等待10秒沒有數(shù)據(jù)接收到, 跳轉(zhuǎn)到用戶區(qū)程序;反之,進(jìn)入數(shù)據(jù)接收部分;
[0041] 步驟S240:進(jìn)入數(shù)據(jù)接收部分后,如果傳輸未完成、或者傳輸完成而CRC校驗(yàn)出錯(cuò) 則向協(xié)調(diào)器分別發(fā)送IxxiYsans化iIdr、IXXCRCErrorr指令,指示數(shù)據(jù)包傳輸未完成, 請(qǐng)求重傳;如果傳輸完成,則將更新準(zhǔn)備好標(biāo)志位置' 1',同時(shí)向所述上位機(jī)發(fā)送傳輸完成 指令"$XXTrsansFinished$",并進(jìn)入固件更新子程序;
[0042] 步驟S250:進(jìn)入固件更新子程序后,第二主控單片先提取出固件更新數(shù)據(jù)包,并依 據(jù)IAP設(shè)置,寫入指定化ASH區(qū)域,寫入完成后,向數(shù)據(jù)協(xié)調(diào)器發(fā)送固件更新成功指令"$ XXFirmUpdateSuccessS";
[0043] 步驟S250:利用第二主控單片機(jī)中斷系統(tǒng)產(chǎn)生一個(gè)軟中斷,觸發(fā)中斷響應(yīng)重啟第 二主控單片,使得第二主控單片進(jìn)入IAP程序,等待20秒后跳轉(zhuǎn)到用戶區(qū)程序,執(zhí)行更新 FLA甜工作區(qū)域的代碼,完成固件升級(jí)。
[0044] 本發(fā)明采用上述技術(shù)方案,其有益效果在于:
[0045] 本發(fā)明提供的穿戴式人體運(yùn)動(dòng)捕捉系統(tǒng)的節(jié)點(diǎn)固件更新方法,利用所述上位機(jī)將 更新固件指令和固件數(shù)據(jù)包發(fā)送到所述數(shù)據(jù)協(xié)調(diào)器,所述數(shù)據(jù)協(xié)調(diào)器輪詢掃描每個(gè)傳感器 節(jié)點(diǎn)并發(fā)送指令和數(shù)據(jù)包,所述傳感器節(jié)點(diǎn)接收來自數(shù)據(jù)協(xié)調(diào)器的程序更新包,完成固件 程序更新。本申請(qǐng)?zhí)峁┑拇┐魇饺梭w運(yùn)動(dòng)捕捉系統(tǒng)的節(jié)點(diǎn)固件更新方法,只需通過向數(shù)據(jù) 協(xié)調(diào)器發(fā)送更新指令和數(shù)據(jù)包,即可完成協(xié)調(diào)器所控制范圍內(nèi)所有傳感器節(jié)點(diǎn)程序升級(jí)操 作簡(jiǎn)單方便;此外,無需拆卸傳感器節(jié)點(diǎn),或者使用專用編程接口,也不需要逐個(gè)節(jié)點(diǎn)進(jìn)行 更新升級(jí),可W節(jié)省大量的人力成本,避免無用的人力消耗;另外,本申請(qǐng)?zhí)峁┑拇┐魇饺?體運(yùn)動(dòng)捕捉系統(tǒng)的節(jié)點(diǎn)固件更新方法,無需為節(jié)點(diǎn)程序更新安裝額外的有線無線連接設(shè) 備,通過合理利用節(jié)點(diǎn)與數(shù)據(jù)協(xié)調(diào)器之間的藍(lán)牙通信設(shè)備即可實(shí)現(xiàn)升級(jí)指令和更新數(shù)據(jù)包 的傳送。
【附圖說明】
[0046] 圖1為本發(fā)明提供的穿戴式人體運(yùn)動(dòng)捕捉系統(tǒng)的結(jié)構(gòu)示意圖。
[0047] 圖2為所述數(shù)據(jù)協(xié)調(diào)器的結(jié)構(gòu)示意圖。
[004引圖3為多個(gè)傳感器節(jié)點(diǎn)130的結(jié)構(gòu)示意圖。
[0049] 圖4(a)為上位機(jī)與數(shù)據(jù)協(xié)調(diào)器間固件更新數(shù)據(jù)包結(jié)構(gòu)圖。
[0050] 圖4(b)為數(shù)據(jù)協(xié)調(diào)器與傳感器節(jié)點(diǎn)間固件更新數(shù)據(jù)包結(jié)構(gòu)圖。
[0051 ]圖5為對(duì)所述數(shù)據(jù)協(xié)調(diào)器進(jìn)行更新的步驟流程圖。
[0052]圖6為對(duì)所述傳感器節(jié)點(diǎn)進(jìn)行更新的步驟流程圖。
[005引圖7為IAP升級(jí)設(shè)及FLASH存儲(chǔ)區(qū)域劃分示意圖。
【具體實(shí)施方式】
[0054] 下面詳細(xì)描述本發(fā)明的實(shí)施例,所述實(shí)施例的示例在附圖中示出,其中自始至終 相同或類似的標(biāo)號(hào)表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附 圖描述的實(shí)施例是示例性的,僅用于解釋本發(fā)明,而不能理解為對(duì)本發(fā)明的限制。
[0055] 請(qǐng)參閱圖1,為本發(fā)明提供的穿戴式人體運(yùn)動(dòng)捕捉系統(tǒng)的結(jié)構(gòu)示意圖,所述穿戴式 人體運(yùn)動(dòng)捕捉系統(tǒng)包括上位機(jī)110、一個(gè)數(shù)據(jù)協(xié)調(diào)器120及多個(gè)傳感器節(jié)點(diǎn)130、所述上位機(jī) 110信號(hào)連接于所述數(shù)據(jù)協(xié)調(diào)器120,用于將更新固件指令和固件數(shù)據(jù)包發(fā)送到所述數(shù)據(jù)協(xié) 調(diào)器120,所述數(shù)據(jù)協(xié)調(diào)器120輪詢掃描每個(gè)傳感器節(jié)點(diǎn)130并發(fā)送指令和數(shù)據(jù)包,所述傳感 器節(jié)點(diǎn)130接收來自數(shù)據(jù)協(xié)調(diào)器120的程序更新包,完成固件程序更新。
[0056] 請(qǐng)參閱圖2,為所述數(shù)據(jù)協(xié)調(diào)器120的結(jié)構(gòu)示意圖,所述數(shù)據(jù)協(xié)調(diào)器120由第一主控 單片機(jī)121、無線通信模塊122、串口通信模塊123組成,所述第一主控單片121機(jī)用于完成所 述上位機(jī)110的指令判別、數(shù)據(jù)包的存儲(chǔ)和轉(zhuǎn)發(fā)和所有傳感器節(jié)點(diǎn)130的通信;所述無線通 信模塊122用于與所述傳感器節(jié)點(diǎn)130的一對(duì)一通信、數(shù)據(jù)包傳送和校驗(yàn);所述串口通信模 塊123用于連接所述第一主控單片機(jī)121和所述上位機(jī)130。
[0057] 優(yōu)選地,所述無線通信模塊122采用藍(lán)牙4.0,第一主控單片機(jī)121采用ST公司的 STM32F405RG、藍(lán)牙忍片為TI公司的CC254U配置為主設(shè)備模式)、所述串口通信模塊123使 用CP2102實(shí)現(xiàn)USB轉(zhuǎn)串口。
[0058] 請(qǐng)參閱圖3,為多個(gè)傳感器節(jié)點(diǎn)130的結(jié)構(gòu)示意圖,包括:帶IAP特性的第二主控單 片機(jī)131、無線通信模塊132及運(yùn)動(dòng)傳感器133,其中,無線通信模塊132完成與數(shù)據(jù)協(xié)調(diào)器的 通信、數(shù)據(jù)包接收和校驗(yàn);所述第二主控單片機(jī)131對(duì)接收到的數(shù)據(jù)包解析,指令識(shí)別、 flash讀寫;運(yùn)動(dòng)傳感器133用于采集人體運(yùn)動(dòng)信息。
[0059] 優(yōu)選地,第二主控單片機(jī)131采用ST公司的STM32L15 IQC、運(yùn)動(dòng)傳感器采用 InvenSense 公司的MPU9150。
[0060] 本發(fā)明提供的穿戴式人體運(yùn)動(dòng)捕捉系統(tǒng)的節(jié)點(diǎn)固件更新方法,包括下述步驟:
[0061 ] 步驟SlO:初始化所述上位機(jī);
[0062] 步驟S20:測(cè)試所述上位機(jī)與所述數(shù)據(jù)協(xié)調(diào)器串口通信是否正常,如果正常則發(fā)送 固件更新指令"衝PdateFirmr,所述數(shù)據(jù)協(xié)調(diào)器接收到指令后向所述上位機(jī)發(fā)送指令"@ ReceiveingFirm妒;
[0063] 步驟S30:所述上位機(jī)判別指令后,將程序所需的固件更新數(shù)據(jù)包傳送到所述數(shù)據(jù) 協(xié)調(diào)器,并等待數(shù)據(jù)協(xié)調(diào)器返回結(jié)果;
[0064] 步驟S40:所述數(shù)據(jù)協(xié)調(diào)器通過串口接收數(shù)據(jù)包,如果傳輸未完成,向所述上位機(jī) 發(fā)送"傳輸失敗"指令,請(qǐng)求重傳;如果接收成功,還需進(jìn)行CRC校驗(yàn):如果校驗(yàn)成功,向上位 機(jī)發(fā)送"傳輸完成"指令;如果校驗(yàn)失敗,則發(fā)送指令"校驗(yàn)失敗"指令,請(qǐng)求重傳;
[0065] 步驟S50:所述數(shù)據(jù)協(xié)調(diào)器成功接收固件更新包后,進(jìn)行數(shù)據(jù)包重新封裝,所述數(shù) 據(jù)包包括所述傳感器節(jié)點(diǎn)的ID號(hào)、藍(lán)牙配對(duì)碼、數(shù)據(jù)包W及其他附加信息;
[0066] 步驟S60:所述數(shù)據(jù)協(xié)調(diào)器設(shè)定的ID測(cè)試藍(lán)牙通信是否正常,如果正常,發(fā)送更新 指令1化dateXXr,其中"XX"代表所述傳感器節(jié)點(diǎn)的編號(hào),對(duì)應(yīng)一個(gè)設(shè)定的ID號(hào),所述傳感 器節(jié)點(diǎn)接收到指令,產(chǎn)生軟中斷,所述單片機(jī)響應(yīng)軟中斷重啟;
[0067] 步驟S70:所述傳感器節(jié)點(diǎn)重啟后執(zhí)行IAP程序,進(jìn)入數(shù)據(jù)接收準(zhǔn)備,如果接收成 功,向數(shù)據(jù)協(xié)調(diào)器返回"接收成功"指令;反之,返回"接收失敗"指令;
[0068] 步驟S80:所述傳感器節(jié)點(diǎn)接收完成數(shù)據(jù)包后,解析出固件更新數(shù)據(jù)包,轉(zhuǎn)而執(zhí)行 IAP程序,將數(shù)據(jù)包寫入所述傳感器節(jié)點(diǎn)忍片的FLASH存儲(chǔ)區(qū),同時(shí)向數(shù)據(jù)協(xié)調(diào)器發(fā)送"更新 成功"指令,并產(chǎn)生一個(gè)軟中斷,控制忍片重啟執(zhí)行FLASH用戶區(qū)代碼;
[0069] 步驟S90:數(shù)據(jù)協(xié)調(diào)器接收到"更新成功"的指令,繼續(xù)對(duì)下一個(gè)節(jié)點(diǎn)進(jìn)行通信連 接、數(shù)據(jù)傳輸和固件更新,并重復(fù)上述步驟,直至所有節(jié)點(diǎn)完成,并向所述上位機(jī)發(fā)送"固件 升級(jí)成功"指令。
[0070] 參閱圖4(a)及圖4(b),分別表示為上位機(jī)與數(shù)據(jù)協(xié)調(diào)器間固件更新數(shù)據(jù)包結(jié)構(gòu)圖 及數(shù)據(jù)協(xié)調(diào)器與傳感器節(jié)點(diǎn)間固件更新數(shù)據(jù)包結(jié)構(gòu)圖。
[0071] 其中;
[0072] ①數(shù)據(jù)協(xié)調(diào)器與上位機(jī)間指令:
[0073]
[0074]
[0075]
[0076] 本發(fā)明提供的穿戴式人體運(yùn)動(dòng)捕捉系統(tǒng)的節(jié)點(diǎn)固件更新方法,利用所述上位機(jī)將 更新固件指令和固件數(shù)據(jù)包發(fā)送到所述數(shù)據(jù)協(xié)調(diào)器,所述數(shù)據(jù)協(xié)調(diào)器輪詢掃描每個(gè)傳感器 節(jié)點(diǎn)并發(fā)送指令和數(shù)據(jù)包,所述傳感器節(jié)點(diǎn)接收來自數(shù)據(jù)協(xié)調(diào)器的程序更新包,完成固件 程序更新。
[0077] 優(yōu)選地,請(qǐng)參閱圖5,在進(jìn)行所述穿戴式人體運(yùn)動(dòng)捕捉系統(tǒng)的節(jié)點(diǎn)固件更新之前還 包括對(duì)所述數(shù)據(jù)協(xié)調(diào)器進(jìn)行更新,具體包括下述步驟:
[0078] 步驟SllO:初始化所述數(shù)據(jù)協(xié)調(diào)器,包括初始化所述第一主控單片機(jī)、無線通信模 塊、串口通信模塊;
[0079] 步驟S120:所述第一主控單片機(jī)判別是否接收到固件更新指令"軌JpdateFirmO", 如果沒有,正常執(zhí)行既定程序;如果接收到更新指令,進(jìn)入中斷,跳轉(zhuǎn)執(zhí)行更新程序;
[0080] 步驟S130:開始執(zhí)行更新程序,所述第一主控單片機(jī)向所述上位機(jī)發(fā)送數(shù)據(jù)接收 準(zhǔn)備好指令"SReceiveingFirm妒,通過串口接收來自上位機(jī)的數(shù)據(jù)包,如果傳輸未完成,向 所述上位機(jī)發(fā)送指令"CTransError妒;如果傳輸完成,再需進(jìn)行CRC校驗(yàn):如果校驗(yàn)成功,將 "數(shù)據(jù)傳輸完成"標(biāo)記位值' 1',并向上位機(jī)發(fā)送指令"@FirmFinished@" W報(bào)告數(shù)據(jù)傳輸完 成;如果校驗(yàn)失敗,則向上位機(jī)發(fā)送指令"OCRCErrorO",請(qǐng)求重傳;校驗(yàn)成功則發(fā)送"@ FirmSuccess妒指示固件接收成功;
[0081 ]步驟S140:所述第一主控單片機(jī)判斷"數(shù)據(jù)傳輸完成"標(biāo)記位,如果為1,先將數(shù)據(jù) 包存儲(chǔ)在在所述數(shù)據(jù)協(xié)調(diào)器忍片的RAM區(qū),同時(shí)向指定所述傳感器節(jié)點(diǎn)發(fā)送藍(lán)牙配對(duì)碼,建 立藍(lán)牙連接;
[0082] 步驟S150:連接成功后,先向所述傳感器節(jié)點(diǎn)發(fā)送固件更新指令$UpdateXX$,其中 為目標(biāo)節(jié)點(diǎn)ID號(hào),如果返回等待固件數(shù)據(jù)包指令I(lǐng)Waitin評(píng),則進(jìn)行數(shù)據(jù)包封 裝,格式為"數(shù)據(jù)包同步頭+傳感器節(jié)點(diǎn)ID+藍(lán)牙配對(duì)碼+更新固件數(shù)據(jù)包+CRC校驗(yàn)值",并通 過藍(lán)牙傳輸?shù)街付↖D的節(jié)點(diǎn);
[0083] 步驟S160:接收所述傳感器節(jié)點(diǎn)返回的指令,如果傳輸未完成、或者傳輸完成而 CRC校驗(yàn)出錯(cuò)則重新傳送數(shù)據(jù)包;如果,傳輸成功則將子節(jié)點(diǎn)ID對(duì)應(yīng)"數(shù)據(jù)傳輸成功"標(biāo)記位 置'1';
[0084] 步驟S170:等待節(jié)點(diǎn)返回固件更新成功指令,如果超過20秒未接收到,則重新進(jìn)行 步驟S140~150;如果接收到指令則將子節(jié)點(diǎn)ID對(duì)應(yīng)"固件更新成功"標(biāo)記位置'1',同時(shí)向 上位機(jī)發(fā)送"ID號(hào)為XX的子節(jié)點(diǎn)已更新固件";
[0085] 步驟S180:檢查所有的ID號(hào)對(duì)應(yīng)的"固件更新成功"標(biāo)記位,如果全部為'1',則向 上位機(jī)發(fā)送信息,指示所有節(jié)點(diǎn)固件程序均已更新;如果有某個(gè)ID號(hào)對(duì)應(yīng)的"固件更新成 功"標(biāo)記位為0,則執(zhí)行步驟S140~160。
[0086] 優(yōu)選地,請(qǐng)參閱圖6,在進(jìn)行所述穿戴式人體運(yùn)動(dòng)捕捉系統(tǒng)的節(jié)點(diǎn)固件更新之前還 包括對(duì)所述傳感器節(jié)點(diǎn)進(jìn)行更新,具體包括下述步驟:
[0087] 步驟S210:所述傳感器節(jié)點(diǎn)初始化;
[0088] 步驟S220:所述第二主控單片監(jiān)測(cè)是否有固件更新指令$UpdateXX$,并匹配自身 設(shè)置的節(jié)點(diǎn)ID值,如果檢測(cè)到命令,退出運(yùn)動(dòng)監(jiān)測(cè)模式,產(chǎn)生軟中斷,使得第二主控單片重 啟執(zhí)行IAP程序;反之,繼續(xù)監(jiān)測(cè)更新指令,如果20秒內(nèi)未接收到則執(zhí)行工作區(qū)程序,完成運(yùn) 動(dòng)監(jiān)測(cè);
[0089] 步驟S230:進(jìn)入IAP程序后,第二主控單片先向數(shù)據(jù)協(xié)調(diào)器發(fā)送準(zhǔn)備好傳送固件更 新數(shù)據(jù)包指令I(lǐng)Waitin評(píng)并通過藍(lán)牙接收數(shù)據(jù)包;如果等待10秒沒有數(shù)據(jù)接收到, 跳轉(zhuǎn)到用戶區(qū)程序;反之,進(jìn)入數(shù)據(jù)接收部分;
[0090] 步驟S240:進(jìn)入數(shù)據(jù)接收部分后,如果傳輸未完成、或者傳輸完成而CRC校驗(yàn)出錯(cuò) 則向協(xié)調(diào)器分別發(fā)送IxxiYsans化iIdr、IXXCRCErrorr指令,指示數(shù)據(jù)包傳輸未完成, 請(qǐng)求重傳;如果傳輸完成,則將更新準(zhǔn)備好標(biāo)志位置' 1',同時(shí)向所述上位機(jī)發(fā)送傳輸完成 指令"$XXTrsansFinished$",并進(jìn)入固件更新子程序;
[0091 ]步驟S250:進(jìn)入固件更新子程序后,第二主控單片先提取出固件更新數(shù)據(jù)包,并依 據(jù)IAP設(shè)置,寫入指定化ASH區(qū)域,寫入完成后,向數(shù)據(jù)協(xié)調(diào)器發(fā)送固件更新成功指令"$ XXFirmUpdateSuccessS";
[0092] 步驟S260:利用第二主控單片機(jī)中斷系統(tǒng)產(chǎn)生一個(gè)軟中斷,觸發(fā)中斷響應(yīng)重啟第 二主控單片,使得第二主控單片進(jìn)入IAP程序,等待20秒后跳轉(zhuǎn)到用戶區(qū)程序,執(zhí)行更新 FLA甜工作區(qū)域的代碼,完成固件升級(jí)。
[0093] 請(qǐng)參閱圖7,為IAP升級(jí)設(shè)及化A甜存儲(chǔ)區(qū)域劃分示意圖??蒞理解,ARM微控制忍片 的固件代碼存儲(chǔ)于初始地址為0X800 0000的化A細(xì)地址區(qū)域,IAP特性將整片地址劃分為 IAP代碼區(qū)和工作代碼區(qū).
[0094] ARM忍片重啟或者上電后,首先執(zhí)行IAP代碼,如果在設(shè)置的時(shí)間內(nèi)接收到更新指 令,則執(zhí)行固件更新的一些列操作:接收數(shù)據(jù)、解析數(shù)據(jù)W及寫入工作FLASH代碼區(qū)等;如果 超時(shí),自動(dòng)跳轉(zhuǎn)執(zhí)行工作區(qū)代碼,完成既定的功能。
[0095] 本申請(qǐng)?zhí)峁┑拇┐魇饺梭w運(yùn)動(dòng)捕捉系統(tǒng)的節(jié)點(diǎn)固件更新方法,只需通過向數(shù)據(jù)協(xié) 調(diào)器發(fā)送更新指令和數(shù)據(jù)包,即可完成協(xié)調(diào)器所控制范圍內(nèi)所有傳感器節(jié)點(diǎn)程序升級(jí)操作 簡(jiǎn)單方便;此外,無需拆卸傳感器節(jié)點(diǎn),或者使用專用編程接口,也不需要逐個(gè)節(jié)點(diǎn)進(jìn)行更 新升級(jí),可W節(jié)省大量的人力成本,避免無用的人力消耗;另外,本申請(qǐng)?zhí)峁┑拇┐魇饺梭w 運(yùn)動(dòng)捕捉系統(tǒng)的節(jié)點(diǎn)固件更新方法,無需為節(jié)點(diǎn)程序更新安裝額外的有線無線連接設(shè)備, 通過合理利用節(jié)點(diǎn)與數(shù)據(jù)協(xié)調(diào)器之間的藍(lán)牙通信設(shè)備即可實(shí)現(xiàn)升級(jí)指令和更新數(shù)據(jù)包的 傳送。
[0096] 雖然本發(fā)明參照當(dāng)前的較佳實(shí)施方式進(jìn)行了描述,但本領(lǐng)域的技術(shù)人員應(yīng)能理 解,上述較佳實(shí)施方式僅用來說明本發(fā)明,并非用來限定本發(fā)明的保護(hù)范圍,任何在本發(fā)明 的精神和原則范圍之內(nèi),所做的任何修飾、等效替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的權(quán)利保 護(hù)范圍之內(nèi)。
【主權(quán)項(xiàng)】
1. 一種穿戴式人體運(yùn)動(dòng)捕捉系統(tǒng)的節(jié)點(diǎn)固件更新方法,所述穿戴式人體運(yùn)動(dòng)捕捉系統(tǒng) 包括上位機(jī)、一個(gè)數(shù)據(jù)協(xié)調(diào)器及多個(gè)傳感器節(jié)點(diǎn)、所述上位機(jī)信號(hào)連接于所述數(shù)據(jù)協(xié)調(diào)器, 用于將更新固件指令和固件數(shù)據(jù)包發(fā)送到所述數(shù)據(jù)協(xié)調(diào)器,所述數(shù)據(jù)協(xié)調(diào)器輪詢掃描每個(gè) 傳感器節(jié)點(diǎn)并發(fā)送指令和數(shù)據(jù)包,所述傳感器節(jié)點(diǎn)接收來自數(shù)據(jù)協(xié)調(diào)器的程序更新包,完 成固件程序更新,其特征在于,所述穿戴式人體運(yùn)動(dòng)捕捉系統(tǒng)的節(jié)點(diǎn)固件更新方法包括下 述步驟: 步驟S10:初始化所述上位機(jī); 步驟S20:測(cè)試所述上位機(jī)與所述數(shù)據(jù)協(xié)調(diào)器串口通信是否正常,如果正常則發(fā)送固件 更新指令"OUpdateFirmO",所述數(shù)據(jù)協(xié)調(diào)器接收到指令后向所述上位機(jī)發(fā)送指令 ReceiveingFirmO"; 步驟S30:所述上位機(jī)判別指令后,將程序所需的固件更新數(shù)據(jù)包傳送到所述數(shù)據(jù)協(xié)調(diào) 器,并等待數(shù)據(jù)協(xié)調(diào)器返回結(jié)果; 步驟S40 :所述數(shù)據(jù)協(xié)調(diào)器通過串口接收數(shù)據(jù)包,如果傳輸未完成,向所述上位機(jī)發(fā)送 "傳輸失敗"指令,請(qǐng)求重傳;如果接收成功,還需進(jìn)行CRC校驗(yàn):如果校驗(yàn)成功,向上位機(jī)發(fā) 送"傳輸完成"指令;如果校驗(yàn)失敗,則發(fā)送指令"校驗(yàn)失敗"指令,請(qǐng)求重傳; 步驟S50:所述數(shù)據(jù)協(xié)調(diào)器成功接收固件更新包后,進(jìn)行數(shù)據(jù)包重新封裝,所述數(shù)據(jù)包 包括所述傳感器節(jié)點(diǎn)的ID號(hào)、藍(lán)牙配對(duì)碼、數(shù)據(jù)包以及其他附加信息; 步驟S60:所述數(shù)據(jù)協(xié)調(diào)器設(shè)定的ID測(cè)試藍(lán)牙通信是否正常,如果正常,發(fā)送更新指令 "$UpdateXXr,其中"XX"代表所述傳感器節(jié)點(diǎn)的編號(hào),對(duì)應(yīng)一個(gè)設(shè)定的ID號(hào),所述傳感器節(jié) 點(diǎn)接收到指令,產(chǎn)生軟中斷,所述單片機(jī)響應(yīng)軟中斷重啟; 步驟S70:所述傳感器節(jié)點(diǎn)重啟后執(zhí)行IAP程序,進(jìn)入數(shù)據(jù)接收準(zhǔn)備,如果接收成功,向 數(shù)據(jù)協(xié)調(diào)器返回"接收成功"指令;反之,返回"接收失敗"指令; 步驟S80:所述傳感器節(jié)點(diǎn)接收完成數(shù)據(jù)包后,解析出固件更新數(shù)據(jù)包,轉(zhuǎn)而執(zhí)行IAP程 序,將數(shù)據(jù)包寫入所述傳感器節(jié)點(diǎn)芯片的FLASH存儲(chǔ)區(qū),同時(shí)向數(shù)據(jù)協(xié)調(diào)器發(fā)送"更新成功" 指令,并產(chǎn)生一個(gè)軟中斷,控制芯片重啟執(zhí)行FLASH用戶區(qū)代碼; 步驟S90:數(shù)據(jù)協(xié)調(diào)器接收到"更新成功"的指令,繼續(xù)對(duì)下一個(gè)節(jié)點(diǎn)進(jìn)行通信連接、數(shù) 據(jù)傳輸和固件更新,并重復(fù)上述步驟,直至所有節(jié)點(diǎn)完成,并向所述上位機(jī)發(fā)送"固件升級(jí) 成功"指令。2. 如權(quán)利要求1所述的穿戴式人體運(yùn)動(dòng)捕捉系統(tǒng)的節(jié)點(diǎn)固件更新方法,其特征在于,所 述數(shù)據(jù)協(xié)調(diào)器由第一主控單片機(jī)、無線通信模塊、串口通信模塊組成,所述第一主控單片機(jī) 用于完成所述上位機(jī)的指令判別、數(shù)據(jù)包的存儲(chǔ)和轉(zhuǎn)發(fā)和所有傳感器節(jié)點(diǎn)的通信;所述無 線通信模塊用于與所述傳感器節(jié)點(diǎn)的一對(duì)一通信、數(shù)據(jù)包傳送和校驗(yàn);所述串口通信模塊 用于連接所述第一主控單片機(jī)和所述上位機(jī)。3. 如權(quán)利要求2所述的穿戴式人體運(yùn)動(dòng)捕捉系統(tǒng)的節(jié)點(diǎn)固件更新方法,其特征在于,所 述第一主控單片機(jī)采用ST公司的STM32F405RG,所述無線通信模塊為藍(lán)牙4.0,所述串口通 信模塊為USART通信模塊。4. 如權(quán)利要求3所述的穿戴式人體運(yùn)動(dòng)捕捉系統(tǒng)的節(jié)點(diǎn)固件更新方法,其特征在于,在 進(jìn)行所述穿戴式人體運(yùn)動(dòng)捕捉系統(tǒng)的節(jié)點(diǎn)固件更新之前還包括對(duì)所述數(shù)據(jù)協(xié)調(diào)器進(jìn)行更 新,具體包括下述步驟: 步驟S110:初始化所述數(shù)據(jù)協(xié)調(diào)器,包括初始化所述第一主控單片機(jī)、無線通信模塊、 串口通信模塊; 步驟S120:所述第一主控單片機(jī)判別是否接收到固件更新指令"OUpdateFirmO",如果 沒有,正常執(zhí)行既定程序;如果接收到更新指令,進(jìn)入中斷,跳轉(zhuǎn)執(zhí)行更新程序; 步驟S130:開始執(zhí)行更新程序,所述第一主控單片機(jī)向所述上位機(jī)發(fā)送數(shù)據(jù)接收準(zhǔn)備 好指令"@ReceiveingFirm@",通過串口接收來自上位機(jī)的數(shù)據(jù)包,如果傳輸未完成,向所述 上位機(jī)發(fā)送指令"OTransErrorO" ;如果傳輸完成,再需進(jìn)行CRC校驗(yàn):如果校驗(yàn)成功,將"數(shù) 據(jù)傳輸完成"標(biāo)記位值'1',并向上位機(jī)發(fā)送指令"OFirmFinishedO"以報(bào)告數(shù)據(jù)傳輸完成; 如果校驗(yàn)失敗,則向上位機(jī)發(fā)送指令"OCRCErrorO",請(qǐng)求重傳;校驗(yàn)成功則發(fā)送 FirmSuccessO"指示固件接收成功; 步驟S140:所述第一主控單片機(jī)判斷"數(shù)據(jù)傳輸完成"標(biāo)記位,如果為1,先將數(shù)據(jù)包存 儲(chǔ)在在所述數(shù)據(jù)協(xié)調(diào)器芯片的RAM區(qū),同時(shí)向指定所述傳感器節(jié)點(diǎn)發(fā)送藍(lán)牙配對(duì)碼,建立藍(lán) 牙連接; 步驟S150:連接成功后,先向所述傳感器節(jié)點(diǎn)發(fā)送固件更新指令$UpdateXX$,其中"XX" 為目標(biāo)節(jié)點(diǎn)ID號(hào),如果返回等待固件數(shù)據(jù)包指令"$WaitingFirm$",則進(jìn)行數(shù)據(jù)包封裝,格 式為"數(shù)據(jù)包同步頭+傳感器節(jié)點(diǎn)ID+藍(lán)牙配對(duì)碼+更新固件數(shù)據(jù)包+CRC校驗(yàn)值",并通過藍(lán) 牙傳輸?shù)街付↖D的節(jié)點(diǎn); 步驟S160:接收所述傳感器節(jié)點(diǎn)返回的指令,如果傳輸未完成、或者傳輸完成而CRC校 驗(yàn)出錯(cuò)則重新傳送數(shù)據(jù)包;如果,傳輸成功則將子節(jié)點(diǎn)ID對(duì)應(yīng)"數(shù)據(jù)傳輸成功"標(biāo)記位置 '1,; 步驟S170:等待節(jié)點(diǎn)返回固件更新成功指令,如果超過20秒未接收到,則重新進(jìn)行步驟 S140~150;如果接收到指令則將子節(jié)點(diǎn)ID對(duì)應(yīng)"固件更新成功"標(biāo)記位置' Γ,同時(shí)向上位 機(jī)發(fā)送"ID號(hào)為XX的子節(jié)點(diǎn)已更新固件"; 步驟S180:檢查所有的ID號(hào)對(duì)應(yīng)的"固件更新成功"標(biāo)記位,如果全部為'1',則向上位 機(jī)發(fā)送信息,指示所有節(jié)點(diǎn)固件程序均已更新;如果有某個(gè)ID號(hào)對(duì)應(yīng)的"固件更新成功"標(biāo) 記位為0,則執(zhí)行步驟S140~160。5. 如權(quán)利要求1所述的穿戴式人體運(yùn)動(dòng)捕捉系統(tǒng)的節(jié)點(diǎn)固件更新方法,其特征在于,所 述傳感器節(jié)點(diǎn)包括帶IAP特性的第二主控單片機(jī)、無線通信模塊及運(yùn)動(dòng)傳感器,其中,無線 通信模塊完成與數(shù)據(jù)協(xié)調(diào)器的通信、數(shù)據(jù)包接收和校驗(yàn);所述第二主控單片機(jī)對(duì)接收到的 數(shù)據(jù)包解析,指令識(shí)別、FLASH讀寫;運(yùn)動(dòng)傳感器用于采集人體運(yùn)動(dòng)信息。6. 如權(quán)利要求5所述的穿戴式人體運(yùn)動(dòng)捕捉系統(tǒng)的節(jié)點(diǎn)固件更新方法,其特征在于,所 述第二主控單片機(jī)采用ST公司的STM32L151QC、所述運(yùn)動(dòng)傳感器采用InvenSense公司的 MPU9150。7. 如權(quán)利要求6所述的穿戴式人體運(yùn)動(dòng)捕捉系統(tǒng)的節(jié)點(diǎn)固件更新方法,其特征在于,在 進(jìn)行所述穿戴式人體運(yùn)動(dòng)捕捉系統(tǒng)的節(jié)點(diǎn)固件更新之前還包括對(duì)所述傳感器節(jié)點(diǎn)進(jìn)行更 新,具體包括下述步驟: 步驟S210:所述傳感器節(jié)點(diǎn)初始化; 步驟S220:所述第二主控單片監(jiān)測(cè)是否有固件更新指令$UpdateXX$,并匹配自身設(shè)置 的節(jié)點(diǎn)ID值,如果檢測(cè)到命令,退出運(yùn)動(dòng)監(jiān)測(cè)模式,產(chǎn)生軟中斷,使得第二主控單片重啟執(zhí) 行IAP程序;反之,繼續(xù)監(jiān)測(cè)更新指令,如果20秒內(nèi)未接收到則執(zhí)行工作區(qū)程序,完成運(yùn)動(dòng)監(jiān) 測(cè); 步驟S230:進(jìn)入ΙΑΡ程序后,第二主控單片先向數(shù)據(jù)協(xié)調(diào)器發(fā)送準(zhǔn)備好傳送固件更新數(shù) 據(jù)包指令"$WaitingFiri4",并通過藍(lán)牙接收數(shù)據(jù)包;如果等待1〇秒沒有數(shù)據(jù)接收到,跳轉(zhuǎn) 到用戶區(qū)程序;反之,進(jìn)入數(shù)據(jù)接收部分; 步驟S240:進(jìn)入數(shù)據(jù)接收部分后,如果傳輸未完成、或者傳輸完成而CRC校驗(yàn)出錯(cuò)則向 協(xié)調(diào)器分別發(fā)送"$XXTrsansFaild$"、"$XXCRCError$"指令,指示數(shù)據(jù)包傳輸未完成,請(qǐng)求 重傳;如果傳輸完成,則將更新準(zhǔn)備好標(biāo)志位置' Γ,同時(shí)向所述上位機(jī)發(fā)送傳輸完成指令 "$XXTrsansFinished$",并進(jìn)入固件更新子程序; 步驟S250 :進(jìn)入固件更新子程序后,第二主控單片先提取出固件更新數(shù)據(jù)包,并依據(jù) IAP設(shè)置,寫入指定FLASH區(qū)域,寫入完成后,向數(shù)據(jù)協(xié)調(diào)器發(fā)送固件更新成功指令"$ XXFirmUpdateSuccess$,> ; 步驟S260:利用第二主控單片機(jī)中斷系統(tǒng)產(chǎn)生一個(gè)軟中斷,觸發(fā)中斷響應(yīng)重啟第二主 控單片,使得第二主控單片進(jìn)入IAP程序,等待20秒后跳轉(zhuǎn)到用戶區(qū)程序,執(zhí)行更新FLASH工 作區(qū)域的代碼,完成固件升級(jí)。
【文檔編號(hào)】G06F9/445GK105978727SQ201610424641
【公開日】2016年9月28日
【申請(qǐng)日】2016年6月16日
【發(fā)明人】寧運(yùn)琨, 趙國(guó)如, 全永奇, 謝高生
【申請(qǐng)人】深圳先進(jìn)技術(shù)研究院