亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種數(shù)據(jù)無損的遠(yuǎn)程代碼更新方法和裝置的制造方法

文檔序號(hào):9304452閱讀:418來源:國(guó)知局
一種數(shù)據(jù)無損的遠(yuǎn)程代碼更新方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及遠(yuǎn)程代碼更新領(lǐng)域,更具體地,涉及一種數(shù)據(jù)無損的遠(yuǎn)程代碼更新方 法和裝置。
【背景技術(shù)】
[0002] 隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展,在無線傳感器網(wǎng)絡(luò)等領(lǐng)域,無線遠(yuǎn)程代碼更新技術(shù)愈發(fā) 顯得必不可少。在軍事、科學(xué)研究等領(lǐng)域,有些數(shù)據(jù)極其珍貴,丟失2、3分鐘內(nèi)采集的數(shù)據(jù) 也變得無法容忍,這對(duì)無線遠(yuǎn)程代碼更新機(jī)制帶來了新的挑戰(zhàn)。
[0003] 目前,基于WiFi、以太網(wǎng)、GPRS、ZigBee、CAN總線等技術(shù)的遠(yuǎn)程代碼更新技術(shù)層出 不窮。他們均遵從于BootLoader(代碼更新)代碼與用戶代碼分離的原則,即在BootLoader 程序中接收待更新程序的機(jī)器碼文件,并將其拷貝到指定地址的ROM中,并采用PC指針跳 轉(zhuǎn)來完成代碼更新操作。在C〇rteX-M4內(nèi)核的STM32芯片上,目前已經(jīng)出現(xiàn)按照上述原則 采用GPRS技術(shù)完成代碼更新的技術(shù)。
[0004] 然而,現(xiàn)存的技術(shù)受網(wǎng)絡(luò)質(zhì)量、環(huán)境的影響,或多或少的存在代碼更新延遲,更有 甚者代碼更新失敗,這不可避免造成了大量的數(shù)據(jù)丟失。

【發(fā)明內(nèi)容】

[0005] 為解決基于GPRS的傳統(tǒng)無線遠(yuǎn)程代碼更新時(shí)數(shù)據(jù)采集大量丟失、代碼更新花費(fèi) 時(shí)間長(zhǎng)的技術(shù)問題,本發(fā)明提出了一種數(shù)據(jù)無損的遠(yuǎn)程代碼更新方法,其采用空間換時(shí)間 的方式降低了代碼更新時(shí)間長(zhǎng)的問題,由于更新時(shí)延低從而在代碼更新過程中不會(huì)出現(xiàn)數(shù) 據(jù)大量丟失的情況。
[0006] 本發(fā)明所提供的數(shù)據(jù)無損的遠(yuǎn)程代碼更新方法,包括如下步驟:
[0007] 步驟一,服務(wù)器端發(fā)送ProcessAppInfoMsg幀,該幀將代碼的總字節(jié)數(shù)和總包數(shù) 傳遞給控制器并由控制器寫入SD卡指定位置處中,以供校驗(yàn)幀校驗(yàn)時(shí)使用,控制器返回 ProcessSendResponse幀;若ProcessAppInfoMsg幀出錯(cuò)則重發(fā)ProcessAppInfoMsg幀;
[0008] 步驟二,服務(wù)器端發(fā)送ProcessTransDataMsg幀,控制器端根據(jù)該幀的校驗(yàn)碼校 驗(yàn)該幀,若正確則根據(jù)SD卡的記錄格式將代碼寫入SD卡相應(yīng)地址處;若出錯(cuò),則返回當(dāng)前 應(yīng)接受幀的包號(hào)以要求服務(wù)器重發(fā)該幀;此外,若服務(wù)器收不到該幀的返回幀則重發(fā)該幀, 該過程持續(xù)到第n幀發(fā)送結(jié)束,n為要發(fā)送的幀的數(shù)量;
[0009] 步驟三,服務(wù)器端發(fā)送ProcessAppVerificationMsg幀,該幀在代碼幀發(fā)送完畢 后發(fā)送,其記錄了所有代碼的累加校驗(yàn)和,若從SD卡中讀取的所有代碼幀的累加校驗(yàn)和與 此相等,則校驗(yàn)成功,否則由該幀的返回幀攜帶出錯(cuò)信息,請(qǐng)求服務(wù)器重發(fā)該幀;此外,若服 務(wù)器收不到該幀的返回幀則重發(fā)該幀。
[0010] 步驟四,服務(wù)器端發(fā)送ProcessAppUpdateMsg幀,用戶應(yīng)用程序接收到該幀則程 序跳轉(zhuǎn)到bootloader處,由bootloader完成代碼更新操作。
[0011] 優(yōu)選的,在所述步驟一之前,通過下述步驟提取.S19文件:
[0012] S1,讀取一行S記錄,若為SO記錄,表明該文件的起始格式正確,否則,表明文件打 開錯(cuò)誤,返回程序開始處重新打開文件;
[0013]S2,讀取一行S3記錄,取得該S3記錄的長(zhǎng)度賦值給變量len,然后以代碼在主控芯 片F(xiàn)lash中的地址為下標(biāo),將所述len字節(jié)代碼存儲(chǔ)在boot,image,f□數(shù)組中;
[0014]S3,在相同下標(biāo)的boot,image.f□數(shù)組中標(biāo)記代碼是否為有效數(shù)據(jù),其中1表示 有效,〇表示無效;
[0015]S4,計(jì)算所述len字節(jié)代碼的累加校驗(yàn)和fcs,若fcs與該S3記錄的最后一個(gè)字節(jié) 相加和為〇xff,則表明該S3記錄提取的代碼有效,否則報(bào)錯(cuò)并退出.S19文件的提取流程。
[0016] 優(yōu)選的,BootLoader和.S19機(jī)器碼文件存儲(chǔ)在控制器的MCU的Flash區(qū)中,將 Flash區(qū)劃分為bootloader代碼區(qū)和用戶代碼區(qū),bootloader代碼區(qū)包括bootloader代 碼和bootloader中斷向量表,用戶代碼區(qū)包括用戶代碼和用戶代碼中斷向量表。
[0017] 優(yōu)選的,bootloader中斷向量表在Flash中的起始地址為零地址處,bootloader 代碼在Flash中的結(jié)束地址小于0x00008000,用戶代碼中斷向量表在Flash中的起始地址 為0x0000_8000,用戶代碼在Flash中的起始地址為0x00008420。
[0018] 優(yōu)選的,累加校驗(yàn)為32位。
[0019] 本發(fā)明所提供的實(shí)現(xiàn)上述任意一項(xiàng)所述的數(shù)據(jù)無損的遠(yuǎn)程代碼更新方法的數(shù)據(jù) 無損的遠(yuǎn)程代碼更新裝置,包括:服務(wù)器、GPRS模塊、控制器和SD卡,其中,服務(wù)器和控制器 之間通過GPRS模塊通信連接,SD卡與控制器通信連接。
[0020] 與現(xiàn)有技術(shù)相比,本發(fā)明提出的數(shù)據(jù)無損的遠(yuǎn)程代碼更新方法,在用戶應(yīng)用程序 中,將通過GPRS傳輸過來的數(shù)據(jù)存儲(chǔ)到SD卡中,當(dāng)數(shù)據(jù)傳輸完畢,調(diào)用BootLoader程序 將SD卡中的數(shù)據(jù)拷貝到芯片內(nèi)部的Flash中,完成代碼更新,由于數(shù)據(jù)從SD卡中拷貝到 Flash中十分快速,因此極大的減少了代碼更新的時(shí)間,這在對(duì)時(shí)間需求較高的場(chǎng)合來說具 有十分重要的意義。
【附圖說明】
[0021] 為了更清楚地說明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例中所需要使用的附 圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域 普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0022] 圖1是本發(fā)明所述的數(shù)據(jù)無損的遠(yuǎn)程代碼更新裝置的框圖;
[0023] 圖2是本發(fā)明所述的.S19文件有效數(shù)據(jù)提取的流程圖;
[0024] 圖3是本發(fā)明所述的中斷向量表重定位的示意圖;
[0025] 圖4是本發(fā)明所述的SD卡記錄格式;
[0026] 圖5是本發(fā)明所述的服務(wù)器端與控制芯片端通信幀格式;
[0027] 圖6是本發(fā)明所述的數(shù)據(jù)無損的遠(yuǎn)程代碼更新方法的流程圖。
【具體實(shí)施方式】
[0028] 嵌入式系統(tǒng)在上電后首先要執(zhí)行的代碼就是BootLoader代碼,該代碼初始化和 CHJ相關(guān)的硬件,并將操作系統(tǒng)的映像或者嵌入式應(yīng)用程序裝載到內(nèi)存中,然后跳轉(zhuǎn)到應(yīng)用 程序處執(zhí)行相關(guān)代碼。
[0029] 嵌入式BootLoader的啟動(dòng)一般分為兩個(gè)階段。第一階段主要用于初始化依賴于 CHJ的硬件,該段代碼一般使用匯編語(yǔ)言實(shí)現(xiàn)。這個(gè)階段的主要任務(wù)有:(1)初始化基本的 硬件設(shè)備(例如關(guān)閉所有的中斷、關(guān)閉處理器內(nèi)部數(shù)據(jù)、指令的Cache等);(2)為應(yīng)用程序 準(zhǔn)備好RAM空間。如果用戶應(yīng)用程序存儲(chǔ)于固態(tài)存儲(chǔ)媒介(例如SD卡、服務(wù)器硬盤等),則 復(fù)制BootLoader的第二階段的代碼到RAM中,設(shè)置相應(yīng)的堆棧指針并跳轉(zhuǎn)到第二階段的C 代碼程序入口處執(zhí)行。第二階段代碼一般采用C或者C++編寫,便于開發(fā)人員編寫、修改和 移植,也為了實(shí)現(xiàn)更加復(fù)雜的功能,這個(gè)階段的主要任務(wù)就是初始化用戶應(yīng)用程序的硬件 設(shè)備,將應(yīng)用程序的映像拷貝到RAM中,配置堆棧指針后開始運(yùn)行用戶應(yīng)用程序。
[0030] 本發(fā)明提出的數(shù)據(jù)無損的無線遠(yuǎn)程代碼方法,通過深入剖析bootloader機(jī)制,并 結(jié)合MG323(華為GPRS模塊)的透明傳輸技術(shù),在基于飛思卡爾公司CortexM4內(nèi)核的 K60DN512Z芯片的主控器(MCU)上設(shè)計(jì)了bootloader,該芯片將MG323發(fā)送過來的代碼經(jīng) 過處理后存儲(chǔ)在SD卡中,而bootloader負(fù)責(zé)在接收到代碼更新指令后將存儲(chǔ)到SD卡中代 碼復(fù)制到MCUFlash的指定位置,并通過PC指針跳轉(zhuǎn)來實(shí)現(xiàn)代碼更新。由于該方案的代碼 更新速度主要取決于SD卡拷貝數(shù)據(jù)的速度,因此,可實(shí)現(xiàn)2HZ以下數(shù)據(jù)的無損采集。
[0031] 圖1給出了實(shí)現(xiàn)本發(fā)明所述的數(shù)據(jù)無損的無線遠(yuǎn)程代碼更新方法的硬件裝置,包
當(dāng)前第1頁(yè)1 2 3 4 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1