国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種安全下載方法、裝置及系統(tǒng)的制作方法

      文檔序號:6626419閱讀:161來源:國知局
      一種安全下載方法、裝置及系統(tǒng)的制作方法
      【專利摘要】本發(fā)明公開了一種安全下載方法、裝置及系統(tǒng),用于防止錯誤下載并可以在下載錯誤或應(yīng)用層死鎖時主動重新下載,避免了現(xiàn)場對設(shè)備進(jìn)行拆卸,節(jié)省了大量時間和人力成本,該方法包括:在設(shè)備啟動時,向上位機(jī)發(fā)送設(shè)備指令,設(shè)備指令中包括狀態(tài)字信息,以使上位機(jī)根據(jù)狀態(tài)字信息確定設(shè)備是否需要應(yīng)用程序下載;在接收上位機(jī)發(fā)送的應(yīng)用程序或超時未接收上位機(jī)發(fā)送的應(yīng)用程序之后,讀取應(yīng)用程序的標(biāo)識內(nèi)容,根據(jù)標(biāo)識內(nèi)容判斷應(yīng)用程序是否正確,如果是,執(zhí)行應(yīng)用程序,如果否,將錯誤類型狀態(tài)字寫入狀態(tài)字信息,復(fù)位重新啟動,返回執(zhí)行在設(shè)備啟動時,向上位機(jī)發(fā)送設(shè)備指令;當(dāng)應(yīng)用程序發(fā)生復(fù)位重新啟動,返回執(zhí)行在設(shè)備啟動時,向上位機(jī)發(fā)送設(shè)備指令。
      【專利說明】—種安全下載方法、裝置及系統(tǒng)

      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及嵌入式【技術(shù)領(lǐng)域】,具體涉及一種安全下載方法、裝置及系統(tǒng)。

      【背景技術(shù)】
      [0002]在控制系統(tǒng)中,一般由上位機(jī)與多臺設(shè)備相連,每臺設(shè)備上可以運(yùn)行應(yīng)用程序,應(yīng)用程序需要從上位機(jī)下載并更新。在現(xiàn)有技術(shù)中,一般由Bootloader完成設(shè)備加載啟動,Bootloader可以用來引導(dǎo)和下載更新應(yīng)用程序并運(yùn)行。但是,采用傳統(tǒng)的Bootloader下載方式,一旦在下載過程中出現(xiàn)錯誤,例如在下載過程中設(shè)備斷電,或者應(yīng)用程序出現(xiàn)死鎖,設(shè)備將無法正常工作,且無法自動重新下載應(yīng)用程序。此時,必須現(xiàn)場維護(hù)工程師對設(shè)備進(jìn)行拆卸,使用下載工具重新啟動下載,這樣當(dāng)現(xiàn)場設(shè)備眾多時,對設(shè)備的維護(hù)會花費(fèi)大量的時間以及人力成本。


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

      [0003]有鑒于此,本發(fā)明提供一種安全下載方法、裝置及系統(tǒng),以解決現(xiàn)有技術(shù)中在下載錯誤時需要對設(shè)備進(jìn)行現(xiàn)場維護(hù)導(dǎo)致需要大量時間以及人力成本的技術(shù)問題。
      [0004]為解決上述問題,本發(fā)明提供的技術(shù)方案如下:
      [0005]—種安全下載方法,所述方法包括:
      [0006]在設(shè)備啟動時,向上位機(jī)發(fā)送設(shè)備指令,所述設(shè)備指令中包括狀態(tài)字信息,以使所述上位機(jī)根據(jù)所述狀態(tài)字信息確定所述設(shè)備是否需要應(yīng)用程序下載;
      [0007]在接收所述上位機(jī)發(fā)送的應(yīng)用程序或超時未接收所述上位機(jī)發(fā)送的應(yīng)用程序之后,讀取所述應(yīng)用程序的標(biāo)識內(nèi)容,根據(jù)所述標(biāo)識內(nèi)容判斷所述應(yīng)用程序是否正確,如果是,執(zhí)行所述應(yīng)用程序,如果否,將錯誤類型狀態(tài)字寫入所述狀態(tài)字信息,復(fù)位重新啟動,返回執(zhí)行所述在設(shè)備啟動時,向上位機(jī)發(fā)送設(shè)備指令;
      [0008]當(dāng)所述應(yīng)用程序發(fā)生復(fù)位重新啟動,返回執(zhí)行所述在設(shè)備啟動時,向上位機(jī)發(fā)送設(shè)備指令。
      [0009]相應(yīng)的,在接收所述上位機(jī)發(fā)送的應(yīng)用程序或超時未接收所述上位機(jī)發(fā)送的應(yīng)用程序之后,讀取所述應(yīng)用程序的標(biāo)識內(nèi)容之前,所述方法還包括:
      [0010]判斷當(dāng)前是否存在應(yīng)用程序,如果是,讀取所述應(yīng)用程序的標(biāo)識內(nèi)容,如果否,將無應(yīng)用程序狀態(tài)字寫入所述狀態(tài)字信息,復(fù)位重新啟動,返回執(zhí)行所述在設(shè)備啟動時,向上位機(jī)發(fā)送設(shè)備指令。
      [0011]相應(yīng)的,所述在設(shè)備啟動時,向上位機(jī)發(fā)送設(shè)備指令,所述設(shè)備指令中包括狀態(tài)字信息,包括:
      [0012]在設(shè)備啟動時,判斷是否為復(fù)位啟動;
      [0013]如果是復(fù)位啟動,讀取狀態(tài)字寄存器中的狀態(tài)字信息,如果所述狀態(tài)字信息是所述錯誤類型狀態(tài)字或所述無應(yīng)用程序狀態(tài)字,向上位機(jī)發(fā)送設(shè)備指令,所述設(shè)備指令中包括所述錯誤類型狀態(tài)字或所述無應(yīng)用程序狀態(tài)字;
      [0014]如果所述狀態(tài)字信息不是所述錯誤類型狀態(tài)字或所述無應(yīng)用程序狀態(tài)字,將應(yīng)用層錯誤狀態(tài)字寫入所述狀態(tài)字信息,向上位機(jī)發(fā)送設(shè)備指令,所述設(shè)備指令中包括所述應(yīng)用層錯誤狀態(tài)字;
      [0015]如果不是復(fù)位啟動,將正確標(biāo)識狀態(tài)字寫入所述狀態(tài)字信息,向上位機(jī)發(fā)送設(shè)備指令,所述設(shè)備指令中包括正確標(biāo)識狀態(tài)字。
      [0016]相應(yīng)的,所述根據(jù)所述標(biāo)識內(nèi)容判斷所述應(yīng)用程序是否正確,包括:
      [0017]判斷所述設(shè)備的實(shí)際控制器局域網(wǎng)CAN總線端口號是否屬于所述標(biāo)識內(nèi)容中設(shè)定的CAN總線端口號范圍;
      [0018]判斷設(shè)備實(shí)際所包含的子設(shè)備是否屬于所述標(biāo)識內(nèi)容中設(shè)定的支持子設(shè)備;
      [0019]對所述子設(shè)備進(jìn)行子設(shè)備測試,判斷所述子設(shè)備是否正常運(yùn)行。
      [0020]一種安全下載方法,所述方法包括:
      [0021]接收設(shè)備發(fā)送的設(shè)備指令,所述設(shè)備指令中包括狀態(tài)字信息;
      [0022]根據(jù)所述狀態(tài)字信息確定所述設(shè)備是否需要應(yīng)用程序下載;
      [0023]如果所述設(shè)備需要應(yīng)用程序下載,讀取所述應(yīng)用程序的標(biāo)識內(nèi)容,根據(jù)所述標(biāo)識內(nèi)容判斷所述應(yīng)用程序是否正確,如果是,向所述設(shè)備發(fā)送所述應(yīng)用程序,如果否,提示應(yīng)用程序錯誤。
      [0024]相應(yīng)的,所述根據(jù)所述狀態(tài)字信息確定所述設(shè)備是否需要應(yīng)用程序下載,包括:
      [0025]當(dāng)所述狀態(tài)字信息為錯誤類型狀態(tài)字或無應(yīng)用程序狀態(tài)字,確定所述設(shè)備需要應(yīng)用程序下載;
      [0026]當(dāng)所述狀態(tài)字信息為應(yīng)用層錯誤狀態(tài)字,確定所述設(shè)備需要應(yīng)用程序下載;
      [0027]當(dāng)所述狀態(tài)字信息為正確標(biāo)識狀態(tài)字,確定所述設(shè)備不需要應(yīng)用程序下載。
      [0028]相應(yīng)的,所述根據(jù)所述標(biāo)識內(nèi)容判斷所述應(yīng)用程序是否正確,包括:
      [0029]判斷所述設(shè)備支持的功能是否屬于所述標(biāo)識內(nèi)容中設(shè)定的功能;
      [0030]判斷所述設(shè)備是否屬于所述標(biāo)識內(nèi)容中設(shè)定的支持設(shè)備;
      [0031]判斷所述設(shè)備的控制器局域網(wǎng)CAN總線端口號是否屬于所述標(biāo)識內(nèi)容中設(shè)定的CAN總線端口號范圍;
      [0032]判斷所述設(shè)備所包含的子設(shè)備是否屬于所述標(biāo)識內(nèi)容中設(shè)定的支持子設(shè)備。
      [0033]一種安全下載裝置,所述裝置包括:
      [0034]發(fā)送單元,用于在設(shè)備啟動時,向上位機(jī)發(fā)送設(shè)備指令,所述設(shè)備指令中包括狀態(tài)字信息,以使所述上位機(jī)根據(jù)所述狀態(tài)字信息確定所述設(shè)備是否需要應(yīng)用程序下載;
      [0035]讀取單元,用于在接收所述上位機(jī)發(fā)送的應(yīng)用程序或超時未接收所述上位機(jī)發(fā)送的應(yīng)用程序之后,讀取所述應(yīng)用程序的標(biāo)識內(nèi)容;
      [0036]第一判斷單元,用于根據(jù)所述標(biāo)識內(nèi)容判斷所述應(yīng)用程序是否正確,如果是,進(jìn)入執(zhí)行單元,如果否,進(jìn)入第一寫入單元;
      [0037]所述執(zhí)行單元,用于執(zhí)行所述應(yīng)用程序;
      [0038]所述第一寫入單元,用于將錯誤類型狀態(tài)字寫入所述狀態(tài)字信息,復(fù)位重新啟動,返回所述發(fā)送單元;
      [0039]復(fù)位單元,用于當(dāng)所述應(yīng)用程序發(fā)生復(fù)位重新啟動,返回所述發(fā)送單元。
      [0040]一種安全下載裝置,所述裝置包括:
      [0041]接收單元,用于接收設(shè)備發(fā)送的設(shè)備指令,所述設(shè)備指令中包括狀態(tài)字信息;
      [0042]確定單元,用于根據(jù)所述狀態(tài)字信息確定所述設(shè)備是否需要應(yīng)用程序下載;
      [0043]讀取單元,用于如果所述設(shè)備需要應(yīng)用程序下載,讀取所述應(yīng)用程序的標(biāo)識內(nèi)容;
      [0044]判斷單元,用于根據(jù)所述標(biāo)識內(nèi)容判斷所述應(yīng)用程序是否正確,如果是,進(jìn)入發(fā)送單元,如果否,進(jìn)入提示單元;
      [0045]所述發(fā)送單元,用于向所述設(shè)備發(fā)送所述應(yīng)用程序;
      [0046]所述提示單元,用于提示應(yīng)用程序錯誤。
      [0047]—種安全下載系統(tǒng),所述系統(tǒng)包括:
      [0048]上位機(jī)以及設(shè)備;
      [0049]所述設(shè)備為所述的第一種安全下載裝置;
      [0050]所述上位機(jī)為所述的第二種安全下載裝置。
      [0051]由此可見,本發(fā)明實(shí)施例具有如下有益效果:
      [0052]本發(fā)明實(shí)施例中設(shè)備在啟動時可以向上位機(jī)發(fā)送帶有狀態(tài)字信息的設(shè)備指令,當(dāng)設(shè)備判斷出應(yīng)用程序錯誤可以復(fù)位或者設(shè)備出現(xiàn)死鎖會發(fā)生看門狗復(fù)位,均可以將錯誤狀態(tài)寫入狀態(tài)字信息,上位機(jī)可以根據(jù)狀態(tài)字信息確定重新下載應(yīng)用程序,從而不再需要到設(shè)備現(xiàn)場拆機(jī)進(jìn)行重新下載,節(jié)省了大量時間以及人力成本。同時,所下載的應(yīng)用程序中具有標(biāo)識內(nèi)容,上位機(jī)在下載之前對應(yīng)用程序進(jìn)行檢測保證了要下載程序的正確性,設(shè)備也可以通過標(biāo)識內(nèi)容判斷應(yīng)用程序是否正確,保證所下載的應(yīng)用程序和設(shè)備硬件的一致性,從而避免應(yīng)用程序在執(zhí)行中發(fā)生錯誤。

      【專利附圖】

      【附圖說明】
      [0053]圖1為本發(fā)明實(shí)施例中提供的安全下載方法實(shí)施例的應(yīng)用場景示意圖;
      [0054]圖2為本發(fā)明實(shí)施例中提供的安全下載方法實(shí)施例一的流程圖;
      [0055]圖3為本發(fā)明實(shí)施例中提供的安全下載方法實(shí)施例二的流程圖;
      [0056]圖4為本發(fā)明實(shí)施例中提供的安全下載方法實(shí)施例三的流程圖;
      [0057]圖5為本發(fā)明實(shí)施例中提供的安全下載裝置實(shí)施例一的示意圖;
      [0058]圖6為本發(fā)明實(shí)施例中提供的安全下載裝置實(shí)施例二的示意圖;
      [0059]圖7為本發(fā)明實(shí)施例中提供的安全下載裝置實(shí)施例三的示意圖;
      [0060]圖8為本發(fā)明實(shí)施例中提供的安全下載系統(tǒng)實(shí)施例的示意圖。

      【具體實(shí)施方式】
      [0061]為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和【具體實(shí)施方式】對本發(fā)明實(shí)施例作進(jìn)一步詳細(xì)的說明。
      [0062]本發(fā)明實(shí)施例提供的安全下載方法、裝置及系統(tǒng),是針對現(xiàn)有技術(shù)中采用傳統(tǒng)的Bootloader下載方式,一旦在下載過程中出現(xiàn)錯誤,例如在下載過程中設(shè)備斷電,或者應(yīng)用程序出現(xiàn)死鎖,設(shè)備將無法正常工作,且無法自動重新下載應(yīng)用程序,此時,必須現(xiàn)場維護(hù)工程師對設(shè)備進(jìn)行拆卸,使用下載工具重新啟動下載,這樣當(dāng)現(xiàn)場設(shè)備眾多時,對設(shè)備的維護(hù)會花費(fèi)大量的時間以及人力成本的技術(shù)問題,提出設(shè)備在啟動時可以向上位機(jī)發(fā)送帶有狀態(tài)字信息的設(shè)備指令,當(dāng)設(shè)備判斷出應(yīng)用程序錯誤可以復(fù)位或者設(shè)備出現(xiàn)死鎖會發(fā)生看門狗復(fù)位,均可以將錯誤狀態(tài)寫入狀態(tài)字信息,上位機(jī)可以根據(jù)狀態(tài)字信息確定重新下載應(yīng)用程序,同時,所下載的應(yīng)用程序中具有標(biāo)識內(nèi)容,上位機(jī)在下載之前對應(yīng)用程序進(jìn)行檢測保證了要下載程序的正確性,設(shè)備也可以通過標(biāo)識內(nèi)容判斷應(yīng)用程序是否正確,保證所下載的應(yīng)用程序和設(shè)備硬件的一致性,從而避免應(yīng)用程序在執(zhí)行中發(fā)生錯誤。
      [0063]參見圖1所示,是本發(fā)明實(shí)施例中提供的安全下載方法的應(yīng)用系統(tǒng)框架示意圖,上位機(jī)通過CAN(ControIIer Area Network,控制器局域網(wǎng)絡(luò))總線與多臺設(shè)備相連,每臺設(shè)備可以從上位機(jī)下載應(yīng)用程序,以下實(shí)施例將分別從設(shè)備側(cè)以及上位機(jī)側(cè)對本發(fā)明實(shí)施例中提供的安全下載方法進(jìn)行描述。
      [0064]參見圖2所示,本發(fā)明實(shí)施例中提供的安全下載方法實(shí)施例一,可以包括以下步驟:
      [0065]步驟201:在設(shè)備啟動時,向上位機(jī)發(fā)送設(shè)備指令,設(shè)備指令中包括狀態(tài)字信息,以使上位機(jī)根據(jù)狀態(tài)字信息確定設(shè)備是否需要應(yīng)用程序下載。
      [0066]本實(shí)施例從設(shè)備側(cè)進(jìn)行描述,設(shè)備啟動包括冷啟動以及熱啟動,熱啟動即為設(shè)備復(fù)位重啟。在設(shè)備啟動后,設(shè)備向上位機(jī)發(fā)送設(shè)備指令,在實(shí)際應(yīng)用中可以利用Bootloader實(shí)現(xiàn)系統(tǒng)啟動即向上位機(jī)發(fā)送設(shè)備指令。本實(shí)施例中設(shè)備指令需要包括代表設(shè)備狀態(tài)的狀態(tài)字信息,狀態(tài)字信息可以包括正確標(biāo)識狀態(tài)字、錯誤類型狀態(tài)字、無應(yīng)用程序狀態(tài)字或應(yīng)用層錯誤狀態(tài)字等。
      [0067]由于CAN總線最多可以傳遞8字節(jié)內(nèi)容,可以采用兩字節(jié)來傳遞狀態(tài)字,例如正確標(biāo)識狀態(tài)字可以為Oxffff、無應(yīng)用程序狀態(tài)字可以為Oxfffe、應(yīng)用層錯誤狀態(tài)字可以為0x0001、第一種錯誤類型狀態(tài)字可以為0x0002、第二種錯誤類型狀態(tài)字可以為0x0003等等,狀態(tài)字信息的定義可以根據(jù)實(shí)際應(yīng)用靈活設(shè)置,本發(fā)明對此不進(jìn)行限制。
      [0068]則上位機(jī)可以根據(jù)狀態(tài)字信息確定設(shè)備是否需要應(yīng)用程序下載,例如狀態(tài)字信息為錯誤類型狀態(tài)字、無應(yīng)用程序狀態(tài)字或應(yīng)用層錯誤狀態(tài)字代表設(shè)備應(yīng)用程序出現(xiàn)錯誤,需要應(yīng)用程序下載,狀態(tài)字信息為正確標(biāo)識狀態(tài)字則應(yīng)用程序不需要下載。
      [0069]在本發(fā)明的一些實(shí)施例中,即在設(shè)備啟動時,向上位機(jī)發(fā)送設(shè)備指令,設(shè)備指令中包括狀態(tài)字信息的具體實(shí)現(xiàn)可以包括:
      [0070]在設(shè)備啟動時,判斷是否為復(fù)位啟動。
      [0071]如果是復(fù)位啟動即熱啟動,讀取狀態(tài)字寄存器中的狀態(tài)字信息,如果狀態(tài)字信息是錯誤類型狀態(tài)字或無應(yīng)用程序狀態(tài)字,向上位機(jī)發(fā)送設(shè)備指令,設(shè)備指令中包括錯誤類型狀態(tài)字或無應(yīng)用程序狀態(tài)字。
      [0072]如果狀態(tài)字信息不是錯誤類型狀態(tài)字或無應(yīng)用程序狀態(tài)字,將應(yīng)用層錯誤狀態(tài)字寫入狀態(tài)字信息,向上位機(jī)發(fā)送設(shè)備指令,設(shè)備指令中包括應(yīng)用層錯誤狀態(tài)字。
      [0073]狀態(tài)字信息一般保存在狀態(tài)字寄存器中,即設(shè)備啟動后通過Bootloader讀取狀態(tài)字寄存器中的狀態(tài)字信息,如果狀態(tài)字信息不是錯誤類型狀態(tài)字或無應(yīng)用程序狀態(tài)字,則說明本次復(fù)位為應(yīng)用程序出現(xiàn)死鎖后觸發(fā)的應(yīng)用程序看門狗復(fù)位,代表應(yīng)用層出現(xiàn)錯誤,需要首先將應(yīng)用層錯誤狀態(tài)字(例如0x0001)寫入狀態(tài)字寄存器中的狀態(tài)字信息,Bootloader再將狀態(tài)字信息發(fā)送給上位機(jī)。
      [0074]如果不是復(fù)位啟動,將正確標(biāo)識狀態(tài)字寫入狀態(tài)字信息,向上位機(jī)發(fā)送設(shè)備指令,設(shè)備指令中包括正確標(biāo)識狀態(tài)字。
      [0075]步驟202:在接收上位機(jī)發(fā)送的應(yīng)用程序或超時未接收上位機(jī)發(fā)送的應(yīng)用程序之后,讀取應(yīng)用程序的標(biāo)識內(nèi)容。
      [0076]如果上位機(jī)確定設(shè)備需要應(yīng)用程序下載則會向設(shè)備發(fā)送應(yīng)用程序,設(shè)備則接收上位機(jī)發(fā)送的應(yīng)用程序;如果上位機(jī)確定設(shè)備不需要應(yīng)用程序下載,則設(shè)備在等待超時未接收到上位機(jī)發(fā)送的應(yīng)用程序后繼續(xù)執(zhí)行讀取應(yīng)用程序的標(biāo)識內(nèi)容。
      [0077]本發(fā)明實(shí)施例中,標(biāo)識內(nèi)容和原始應(yīng)用程序共同組成新的應(yīng)用程序,應(yīng)用程序的標(biāo)識內(nèi)容代表當(dāng)前設(shè)備中的應(yīng)用程序的一些屬性,例如該應(yīng)用程序的功能、所支持的設(shè)備、所支持的CAN總線端口號范圍或所支持的子設(shè)備等等。
      [0078]在本發(fā)明的一些實(shí)施例中,在接收上位機(jī)發(fā)送的應(yīng)用程序或超時未接收上位機(jī)發(fā)送的應(yīng)用程序之后,讀取應(yīng)用程序的標(biāo)識內(nèi)容之前,還包括:
      [0079]判斷當(dāng)如是否存在應(yīng)用程序,如果是,讀取應(yīng)用程序的標(biāo)識內(nèi)容,如果否,將無應(yīng)用程序狀態(tài)字寫入狀態(tài)字信息,復(fù)位重新啟動,返回執(zhí)行在設(shè)備啟動時,向上位機(jī)發(fā)送設(shè)備指令。
      [0080]在首次冷啟動設(shè)備時,設(shè)備默認(rèn)初始具有應(yīng)用程序,而如果當(dāng)前沒有應(yīng)用程序,本發(fā)明實(shí)施例也可以實(shí)現(xiàn)通知上位機(jī)發(fā)送應(yīng)用程序。
      [0081]步驟203:根據(jù)標(biāo)識內(nèi)容判斷應(yīng)用程序是否正確,如果是,執(zhí)行步驟204,如果否,執(zhí)行步驟205。
      [0082]步驟204:執(zhí)行應(yīng)用程序。
      [0083]步驟205:將錯誤類型狀態(tài)字寫入狀態(tài)字信息,復(fù)位重新啟動,返回執(zhí)行步驟202。
      [0084]由于本發(fā)明實(shí)施例中應(yīng)用程序具有代表應(yīng)用程序?qū)傩缘臉?biāo)識內(nèi)容,這樣在應(yīng)用程序執(zhí)行前先通過對標(biāo)識內(nèi)容判斷所下載的應(yīng)用程序是否正確,也即所下載的應(yīng)用程序是否與設(shè)備相匹配,只有在確認(rèn)正確的情況下才執(zhí)行應(yīng)用程序,很大程度避免了所下載的應(yīng)用程序在執(zhí)行時出現(xiàn)錯誤的情況。如果判斷應(yīng)用程序錯誤,則將錯誤類型狀態(tài)字寫入狀態(tài)字信息,復(fù)位重新啟動,在重新啟動后可以將錯誤類型狀態(tài)字發(fā)送給上位機(jī),通知上位機(jī)重新下載正確的應(yīng)用程序。
      [0085]步驟206:當(dāng)應(yīng)用程序發(fā)生復(fù)位重新啟動,返回執(zhí)行步驟202。
      [0086]應(yīng)用程序在執(zhí)行中也可能發(fā)生死鎖情況,本發(fā)明實(shí)施例在應(yīng)用程序發(fā)生看門狗復(fù)位時,設(shè)備重新啟動,通過前述說明,設(shè)備可以寫入應(yīng)用層錯誤狀態(tài)字,以便及時通知上位機(jī)需要重新下載應(yīng)用程序,從而解決了現(xiàn)有技術(shù)中應(yīng)用層死鎖系統(tǒng)無法修護(hù)的技術(shù)問題。
      [0087]這樣,本發(fā)明實(shí)施例中設(shè)備在啟動時可以向上位機(jī)發(fā)送帶有狀態(tài)字信息的設(shè)備指令,當(dāng)設(shè)備判斷出應(yīng)用程序錯誤可以復(fù)位或者設(shè)備出現(xiàn)死鎖會發(fā)生看門狗復(fù)位,均可以將錯誤狀態(tài)寫入狀態(tài)字信息,上位機(jī)可以根據(jù)狀態(tài)字信息確定重新下載應(yīng)用程序,從而不再需要到設(shè)備現(xiàn)場拆機(jī)進(jìn)行重新下載,節(jié)省了大量時間以及人力成本。同時,所下載的應(yīng)用程序中具有標(biāo)識內(nèi)容,設(shè)備可以通過標(biāo)識內(nèi)容判斷應(yīng)用程序是否正確,保證所下載的應(yīng)用程序和設(shè)備硬件的一致性,從而避免應(yīng)用程序在執(zhí)行中發(fā)生錯誤。
      [0088]基于上述說明,參見圖3所示,本發(fā)明實(shí)施例中提供的安全下載方法實(shí)施例二,可以包括以下步驟:
      [0089]步驟301:設(shè)備啟動。
      [0090]步驟302:判斷是否為復(fù)位啟動,如果是,執(zhí)行步驟305,如果否,執(zhí)行步驟303。
      [0091]步驟303:將正確標(biāo)識狀態(tài)字寫入狀態(tài)字信息。
      [0092]步驟304:向上位機(jī)發(fā)送設(shè)備指令,設(shè)備指令中包括正確標(biāo)識狀態(tài)字。
      [0093]當(dāng)設(shè)備為冷啟動,先默認(rèn)設(shè)備上具有正確的應(yīng)用程序,向上位機(jī)發(fā)送包括正確標(biāo)識狀態(tài)字的設(shè)備指令,如果后續(xù)判斷無應(yīng)用程序或應(yīng)用程序錯誤還可以通過復(fù)位重啟重新向上位機(jī)發(fā)送設(shè)備指令。
      [0094]步驟305:讀取狀態(tài)字寄存器中的狀態(tài)字信息。
      [0095]步驟306:判斷狀態(tài)字信息是否是錯誤類型狀態(tài)字或無應(yīng)用程序狀態(tài)字,如果是,執(zhí)行步驟307,如果否,執(zhí)行步驟308。
      [0096]步驟307:向上位機(jī)發(fā)送設(shè)備指令,設(shè)備指令中包括錯誤類型狀態(tài)字或無應(yīng)用程序狀態(tài)字。
      [0097]步驟308:將應(yīng)用層錯誤狀態(tài)字寫入狀態(tài)字信息。
      [0098]步驟309:向上位機(jī)發(fā)送設(shè)備指令,設(shè)備指令中包括應(yīng)用層錯誤狀態(tài)字。
      [0099]當(dāng)設(shè)備為復(fù)位啟動(熱啟動)又可以分為兩種不同的情況,當(dāng)設(shè)備判斷出應(yīng)用程序錯誤或無應(yīng)用程序時會寫入相應(yīng)的狀態(tài)字并復(fù)位,設(shè)備在復(fù)位后讀取錯誤類型狀態(tài)字或無應(yīng)用程序狀態(tài)字并向上位機(jī)發(fā)送;另一種情況是應(yīng)用程序在執(zhí)行過程中由于在預(yù)設(shè)時間內(nèi)看門狗器件沒有接收到信號而發(fā)生看門狗復(fù)位,代表應(yīng)用程序的執(zhí)行過程中出現(xiàn)死鎖情況,此時設(shè)備復(fù)位后狀態(tài)字信息并不能顯示相應(yīng)的情況,因此,在設(shè)備復(fù)位而狀態(tài)字信息又不是錯誤類型狀態(tài)字或無應(yīng)用程序狀態(tài)字,則可以判斷出出現(xiàn)了應(yīng)用層執(zhí)行錯誤,需要首先將應(yīng)用層錯誤狀態(tài)字寫入狀態(tài)字信息,再向上位機(jī)發(fā)送,以重新下載應(yīng)用程序。
      [0100]步驟310:在向上位機(jī)發(fā)送設(shè)備指令后,接收上位機(jī)發(fā)送的應(yīng)用程序或等待接收上位機(jī)發(fā)送的應(yīng)用程序直到超時。
      [0101]步驟311:判斷當(dāng)前是否存在應(yīng)用程序,如果是,執(zhí)行步驟313,如果否,執(zhí)行步驟317。
      [0102]步驟313:讀取應(yīng)用程序的標(biāo)識內(nèi)容。
      [0103]步驟313:根據(jù)標(biāo)識內(nèi)容判斷應(yīng)用程序是否正確,如果是,執(zhí)行步驟314,如果否,執(zhí)行步驟316。
      [0104]步驟314:執(zhí)行應(yīng)用程序。
      [0105]步驟315:當(dāng)應(yīng)用程序發(fā)生復(fù)位重新啟動,返回步驟301。
      [0106]步驟316:將錯誤類型狀態(tài)字寫入狀態(tài)字信息,復(fù)位重新啟動,返回步驟301。
      [0107]步驟317:將無應(yīng)用程序狀態(tài)字寫入狀態(tài)字信息,復(fù)位重新啟動,返回步驟301。
      [0108]也即判斷出應(yīng)用程序出現(xiàn)任一種異常情況均可以復(fù)位重啟:當(dāng)根據(jù)標(biāo)識內(nèi)容判斷出應(yīng)用程序錯誤,可以將錯誤類型狀態(tài)字寫入狀態(tài)字信息,復(fù)位重新啟動;當(dāng)判斷出沒有應(yīng)用程序,可以將無應(yīng)用程序狀態(tài)字寫入狀態(tài)字信息,復(fù)位重新啟動;當(dāng)應(yīng)用程序發(fā)生看門狗復(fù)位,也可以重新啟動,返回將包括相應(yīng)狀態(tài)字信息的設(shè)備指令發(fā)送給上位機(jī),以使上位機(jī)根據(jù)狀態(tài)字信息確定設(shè)備是否需要應(yīng)用程序下載。
      [0109]基于上述兩個實(shí)施例,在本發(fā)明的一些實(shí)施例中,設(shè)備根據(jù)標(biāo)識內(nèi)容判斷應(yīng)用程序是否正確的具體實(shí)現(xiàn)可以包括:
      [0110]判斷設(shè)備的實(shí)際控制器局域網(wǎng)CAN總線端口號是否屬于標(biāo)識內(nèi)容中設(shè)定的CAN總線端口號范圍。
      [0111]判斷設(shè)備實(shí)際所包含的子設(shè)備是否屬于標(biāo)識內(nèi)容中設(shè)定的支持子設(shè)備。
      [0112]對子設(shè)備進(jìn)行子設(shè)備測試,判斷子設(shè)備是否正常運(yùn)行。
      [0113]應(yīng)用程序的標(biāo)識內(nèi)容可以設(shè)定應(yīng)用程序所支持的CAN總線端口號范圍、所支持的子設(shè)備等,由于設(shè)備的實(shí)際端口號、所包括的子設(shè)備可能與設(shè)備標(biāo)稱的不符,因此在應(yīng)用程序執(zhí)行之前,需要先判斷設(shè)備的實(shí)際端口號、所包含的子設(shè)備是否與應(yīng)用程序相匹配;其次對子設(shè)備進(jìn)行子設(shè)備測試,例如當(dāng)子設(shè)備為AT45和NorFlash,通過內(nèi)存讀寫的方式進(jìn)行測試,如果讀出和寫入的內(nèi)容一致,則說明子設(shè)備正常運(yùn)行,如果不一致則將錯誤類型寫入狀態(tài)字信息?;蛘咭膊捎妙愃莆募﨏RC校驗(yàn)的方法進(jìn)行驗(yàn)證子設(shè)備的正確性,對于如何對子設(shè)備進(jìn)行子設(shè)備測試本發(fā)明不進(jìn)行限定。
      [0114]這樣,本發(fā)明實(shí)施例中設(shè)備在啟動時可以向上位機(jī)發(fā)送帶有狀態(tài)字信息的設(shè)備指令,當(dāng)設(shè)備判斷出應(yīng)用程序錯誤可以復(fù)位或者設(shè)備出現(xiàn)死鎖會發(fā)生看門狗復(fù)位,均可以將錯誤狀態(tài)寫入狀態(tài)字信息,上位機(jī)可以根據(jù)狀態(tài)字信息確定重新下載應(yīng)用程序,從而不再需要到設(shè)備現(xiàn)場拆機(jī)進(jìn)行重新下載,節(jié)省了大量時間以及人力成本。同時,所下載的應(yīng)用程序中具有標(biāo)識內(nèi)容,設(shè)備可以通過標(biāo)識內(nèi)容判斷應(yīng)用程序是否正確,保證所下載的應(yīng)用程序和設(shè)備硬件的一致性,從而避免應(yīng)用程序在執(zhí)行中發(fā)生錯誤。
      [0115]參見圖4所示,本發(fā)明實(shí)施例中提供的安全下載方法實(shí)施例三,可以包括以下步驟:
      [0116]步驟401:接收設(shè)備發(fā)送的設(shè)備指令,設(shè)備指令中包括狀態(tài)字信息。
      [0117]本實(shí)施例從上位機(jī)側(cè)進(jìn)行描述,上位機(jī)可以接收設(shè)備發(fā)送的設(shè)備指令,設(shè)備指令中包括狀態(tài)字信息,狀態(tài)字信息可以包括正確標(biāo)識狀態(tài)字、錯誤類型狀態(tài)字、無應(yīng)用程序狀態(tài)字或應(yīng)用層錯誤狀態(tài)字等。
      [0118]步驟402:根據(jù)狀態(tài)字信息確定設(shè)備是否需要應(yīng)用程序下載,如果是,進(jìn)入步驟403。
      [0119]在本發(fā)明的一些實(shí)施例中,根據(jù)狀態(tài)字信息確定設(shè)備是否需要應(yīng)用程序下載的具體實(shí)現(xiàn)可以包括:
      [0120]當(dāng)狀態(tài)字信息為錯誤類型狀態(tài)字或無應(yīng)用程序狀態(tài)字,確定設(shè)備需要應(yīng)用程序下載;
      [0121]當(dāng)狀態(tài)字信息為應(yīng)用層錯誤狀態(tài)字,確定設(shè)備需要應(yīng)用程序下載;
      [0122]當(dāng)狀態(tài)字信息為正確標(biāo)識狀態(tài)字,確定設(shè)備不需要應(yīng)用程序下載。
      [0123]也就是說,狀態(tài)字信息為錯誤類型狀態(tài)字、無應(yīng)用程序狀態(tài)字或應(yīng)用層錯誤狀態(tài)字可以代表設(shè)備應(yīng)用程序出現(xiàn)錯誤,需要應(yīng)用程序下載,狀態(tài)字信息為正確標(biāo)識狀態(tài)字則應(yīng)用程序不需要下載。
      [0124]同時,上位機(jī)在應(yīng)用程序需要更新時,也可以主動確定需要應(yīng)用程序下載,例如,應(yīng)用程序版本發(fā)生了變化,此時可以直接確定需要應(yīng)用程序下載,而可以不依據(jù)設(shè)備指令中的狀態(tài)字信息。
      [0125]步驟403:讀取應(yīng)用程序的標(biāo)識內(nèi)容。
      [0126]步驟404:根據(jù)標(biāo)識內(nèi)容判斷應(yīng)用程序是否正確,如果是,執(zhí)行步驟405,如果否,執(zhí)行步驟406。
      [0127]在本發(fā)明的一些實(shí)施例中,根據(jù)標(biāo)識內(nèi)容判斷應(yīng)用程序是否正確的具體實(shí)現(xiàn)可以包括:
      [0128]判斷設(shè)備支持的功能是否屬于標(biāo)識內(nèi)容中設(shè)定的功能;
      [0129]判斷設(shè)備是否屬于標(biāo)識內(nèi)容中設(shè)定的支持設(shè)備;
      [0130]判斷設(shè)備的控制器局域網(wǎng)CAN總線端口號是否屬于標(biāo)識內(nèi)容中設(shè)定的CAN總線端口號范圍;
      [0131]判斷設(shè)備所包含的子設(shè)備是否屬于標(biāo)識內(nèi)容中設(shè)定的支持子設(shè)備。
      [0132]步驟405:向設(shè)備發(fā)送應(yīng)用程序。
      [0133]步驟406:提示應(yīng)用程序錯誤。
      [0134]標(biāo)識內(nèi)容和原始應(yīng)用程序共同組成新的應(yīng)用程序,應(yīng)用程序的標(biāo)識內(nèi)容代表當(dāng)前設(shè)備中的應(yīng)用程序的一些屬性,例如該應(yīng)用程序的功能、所支持的設(shè)備、所支持的CAN總線端口號范圍或所支持的子設(shè)備等等。
      [0135]例如以下為應(yīng)用程序標(biāo)識內(nèi)容的一個實(shí)例:
      [0136]應(yīng)用程序的功能Funct1n:MDB or DAM ;
      [0137]所支持的設(shè)備Support:STM32F407ZG ;
      [0138]所支持的CAN總線端口號范圍CANID:Form xx to yy (其中當(dāng)χχ = yy為單一設(shè)備);
      [0139]所支持的子設(shè)備(設(shè)備所包含的設(shè)備)SubDevice:CAN、At45db、NorFlash)。
      [0140]在上位機(jī)中可以將標(biāo)識內(nèi)容設(shè)置于應(yīng)用程序中指定的空間,指定方法例如:定義一個const數(shù)組,const char*p = {上述標(biāo)示內(nèi)容};使用—at關(guān)鍵字,const char*p—at (0x8006000) = {上述標(biāo)示內(nèi)容},將上述標(biāo)示內(nèi)容放置于指定地址;或,使用Keil工具軟件,將上述數(shù)組單獨(dú)的放入一個文件,選擇“Opt1n for File”,填寫對話框內(nèi)容。
      [0141]由應(yīng)用程序標(biāo)識內(nèi)容則上位機(jī)可以在向設(shè)備發(fā)送應(yīng)用程序之前,先對待下載的應(yīng)用程序是否適用于該設(shè)備進(jìn)行判斷,具體通過判斷設(shè)備支持的功能是否屬于標(biāo)識內(nèi)容中設(shè)定的功能;判斷設(shè)備是否屬于標(biāo)識內(nèi)容中設(shè)定的支持設(shè)備;判斷設(shè)備的控制器局域網(wǎng)CAN總線端口號是否屬于標(biāo)識內(nèi)容中設(shè)定的CAN總線端口號范圍;判斷設(shè)備所包含的子設(shè)備是否屬于標(biāo)識內(nèi)容中設(shè)定的支持子設(shè)備來實(shí)現(xiàn),可以理解的是以上各項(xiàng)判斷的先后順序并不限制,當(dāng)判斷均正確,則可以向設(shè)備發(fā)送該應(yīng)用程序,如果任一項(xiàng)判斷結(jié)果為不正確,則需要提示錯誤,對應(yīng)用程序再進(jìn)行檢查。
      [0142]這樣,本發(fā)明實(shí)施例中設(shè)備在啟動時可以向上位機(jī)發(fā)送帶有狀態(tài)字信息的設(shè)備指令,當(dāng)設(shè)備判斷出應(yīng)用程序錯誤可以復(fù)位或者設(shè)備出現(xiàn)死鎖會發(fā)生看門狗復(fù)位,均可以將錯誤狀態(tài)寫入狀態(tài)字信息,上位機(jī)可以根據(jù)狀態(tài)字信息確定重新下載應(yīng)用程序,從而不再需要到設(shè)備現(xiàn)場拆機(jī)進(jìn)行重新下載,節(jié)省了大量時間以及人力成本。同時,所下載的應(yīng)用程序中具有標(biāo)識內(nèi)容,上位機(jī)在下載之前對應(yīng)用程序進(jìn)行檢測保證了要下載程序的正確性,保證所下載的應(yīng)用程序和設(shè)備硬件的一致性,從而避免應(yīng)用程序在執(zhí)行中發(fā)生錯誤。
      [0143]參見圖5所示,本發(fā)明實(shí)施例中提供的安全下載裝置實(shí)施例一,可以包括:
      [0144]發(fā)送單元501,用于在設(shè)備啟動時,向上位機(jī)發(fā)送設(shè)備指令,設(shè)備指令中包括狀態(tài)字信息,以使上位機(jī)根據(jù)狀態(tài)字信息確定設(shè)備是否需要應(yīng)用程序下載。
      [0145]讀取單元502,用于在接收上位機(jī)發(fā)送的應(yīng)用程序或超時未接收上位機(jī)發(fā)送的應(yīng)用程序之后,讀取應(yīng)用程序的標(biāo)識內(nèi)容。
      [0146]第一判斷單元503,用于根據(jù)標(biāo)識內(nèi)容判斷應(yīng)用程序是否正確,如果是,進(jìn)入執(zhí)行單元,如果否,進(jìn)入第一寫入單元。
      [0147]執(zhí)行單元504,用于執(zhí)行應(yīng)用程序。
      [0148]第一寫入單元505,用于將錯誤類型狀態(tài)字寫入狀態(tài)字信息,復(fù)位重新啟動,返回發(fā)送單元。
      [0149]復(fù)位單元506,用于當(dāng)應(yīng)用程序發(fā)生復(fù)位重新啟動,返回發(fā)送單元。
      [0150]參見圖6所示,本發(fā)明實(shí)施例中提供的安全下載裝置實(shí)施例二,可以包括:
      [0151]發(fā)送單元601可以包括:
      [0152]第一判斷子單元6011,用于在設(shè)備啟動時,判斷是否為復(fù)位啟動。
      [0153]讀取子單元6012,用于如果第一判斷子單元的判斷結(jié)果為是,讀取狀態(tài)字寄存器中的狀態(tài)字信息。
      [0154]第一發(fā)送子單元6013,用于如果狀態(tài)字信息是錯誤類型狀態(tài)字或無應(yīng)用程序狀態(tài)字,向上位機(jī)發(fā)送設(shè)備指令,設(shè)備指令中包括錯誤類型狀態(tài)字或無應(yīng)用程序狀態(tài)字。
      [0155]第二發(fā)送子單元6014,用于如果狀態(tài)字信息不是錯誤類型狀態(tài)字或無應(yīng)用程序狀態(tài)字,將應(yīng)用層錯誤狀態(tài)字寫入狀態(tài)字信息,向上位機(jī)發(fā)送設(shè)備指令,設(shè)備指令中包括應(yīng)用層錯誤狀態(tài)字。
      [0156]第三發(fā)送子單元6015,用于如果第一判斷子單元的判斷結(jié)果為否,將正確標(biāo)識狀態(tài)字寫入狀態(tài)字信息,向上位機(jī)發(fā)送設(shè)備指令,設(shè)備指令中包括正確標(biāo)識狀態(tài)字。
      [0157]第二判斷單元602,用于判斷當(dāng)前是否存在應(yīng)用程序,如果是,進(jìn)入讀取單元,如果否,進(jìn)入第二寫入單元。
      [0158]第二寫入單元603,用于將無應(yīng)用程序狀態(tài)字寫入狀態(tài)字信息,復(fù)位重新啟動,返回發(fā)送單元。
      [0159]讀取單元604,用于在接收上位機(jī)發(fā)送的應(yīng)用程序或超時未接收上位機(jī)發(fā)送的應(yīng)用程序之后,讀取應(yīng)用程序的標(biāo)識內(nèi)容。
      [0160]第一判斷單元605,用于根據(jù)標(biāo)識內(nèi)容判斷應(yīng)用程序是否正確,如果是,進(jìn)入執(zhí)行單元,如果否,進(jìn)入第一寫入單元。
      [0161]執(zhí)行單元606,用于執(zhí)行應(yīng)用程序。
      [0162]第一寫入單元607,用于將錯誤類型狀態(tài)字寫入狀態(tài)字信息,復(fù)位重新啟動,返回發(fā)送單元。
      [0163]復(fù)位單元608,用于當(dāng)應(yīng)用程序發(fā)生復(fù)位重新啟動,返回發(fā)送單元。
      [0164]在本發(fā)明的一些實(shí)施例中,上述實(shí)施例中的第一判斷單元可以包括:
      [0165]第二判斷子單元,用于判斷設(shè)備的實(shí)際控制器局域網(wǎng)CAN總線端口號是否屬于標(biāo)識內(nèi)容中設(shè)定的CAN總線端口號范圍;
      [0166]第三判斷子單元,用于判斷設(shè)備實(shí)際所包含的子設(shè)備是否屬于標(biāo)識內(nèi)容中設(shè)定的支持子設(shè)備;
      [0167]第四判斷子單元,用于對子設(shè)備進(jìn)行子設(shè)備測試,判斷子設(shè)備是否正常運(yùn)行。
      [0168]參見圖7所示,本發(fā)明實(shí)施例中提供的安全下載裝置實(shí)施例三,可以包括:
      [0169]接收單元701,用于接收設(shè)備發(fā)送的設(shè)備指令,設(shè)備指令中包括狀態(tài)字信息。
      [0170]確定單元702,用于根據(jù)狀態(tài)字信息確定設(shè)備是否需要應(yīng)用程序下載。
      [0171]讀取單元703,用于如果設(shè)備需要應(yīng)用程序下載,讀取應(yīng)用程序的標(biāo)識內(nèi)容。
      [0172]判斷單元704,用于根據(jù)標(biāo)識內(nèi)容判斷應(yīng)用程序是否正確,如果是,進(jìn)入發(fā)送單元,如果否,進(jìn)入提示單元。
      [0173]發(fā)送單元705,用于向設(shè)備發(fā)送應(yīng)用程序。
      [0174]提示單元706,用于提示應(yīng)用程序錯誤。
      [0175]在本發(fā)明的一些實(shí)施例中,確定單元可以包括:
      [0176]第一確定子單元,用于當(dāng)狀態(tài)字信息為錯誤類型狀態(tài)字或無應(yīng)用程序狀態(tài)字,確定設(shè)備需要應(yīng)用程序下載;
      [0177]第二確定子單元,用于當(dāng)狀態(tài)字信息為應(yīng)用層錯誤狀態(tài)字,確定設(shè)備需要應(yīng)用程序下載;
      [0178]第三確定子單元,用于當(dāng)狀態(tài)字信息為正確標(biāo)識狀態(tài)字,確定設(shè)備不需要應(yīng)用程序下載。
      [0179]在本發(fā)明的一些實(shí)施例中,判斷單元可以包括:
      [0180]第一判斷子單元,用于判斷設(shè)備支持的功能是否屬于標(biāo)識內(nèi)容中設(shè)定的功能;
      [0181]第二判斷子單元,用于判斷設(shè)備是否屬于標(biāo)識內(nèi)容中設(shè)定的支持設(shè)備;
      [0182]第三判斷子單元,用于判斷設(shè)備的控制器局域網(wǎng)CAN總線端口號是否屬于標(biāo)識內(nèi)容中設(shè)定的CAN總線端口號范圍;
      [0183]第四判斷子單元,用于判斷設(shè)備所包含的子設(shè)備是否屬于標(biāo)識內(nèi)容中設(shè)定的支持子設(shè)備。
      [0184]參見圖8所示,本發(fā)明實(shí)施例中提供的安全下載系統(tǒng)實(shí)施例,可以包括:
      [0185]上位機(jī)801以及設(shè)備802。
      [0186]其中,設(shè)備802可以為上述實(shí)施例中提供的安全下載裝置實(shí)施例一或二。
      [0187]上位機(jī)801可以為上述實(shí)施例中提供的安全下載裝置實(shí)施例三。
      [0188]相關(guān)說明請參見上述實(shí)施例,在此不再贅述。
      [0189]這樣,本發(fā)明實(shí)施例中設(shè)備在啟動時可以向上位機(jī)發(fā)送帶有狀態(tài)字信息的設(shè)備指令,當(dāng)設(shè)備判斷出應(yīng)用程序錯誤可以復(fù)位或者設(shè)備出現(xiàn)死鎖會發(fā)生看門狗復(fù)位,均可以將錯誤狀態(tài)寫入狀態(tài)字信息,上位機(jī)可以根據(jù)狀態(tài)字信息確定重新下載應(yīng)用程序,從而不再需要到設(shè)備現(xiàn)場拆機(jī)進(jìn)行重新下載,節(jié)省了大量時間以及人力成本。同時,所下載的應(yīng)用程序中具有標(biāo)識內(nèi)容,上位機(jī)在下載之前對應(yīng)用程序進(jìn)行檢測保證了要下載程序的正確性,設(shè)備也可以通過標(biāo)識內(nèi)容判斷應(yīng)用程序是否正確,保證所下載的應(yīng)用程序和設(shè)備硬件的一致性,從而避免應(yīng)用程序在執(zhí)行中發(fā)生錯誤。
      [0190]需要說明的是,本說明書中各個實(shí)施例采用遞進(jìn)的方式描述,每個實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個實(shí)施例之間相同相似部分互相參見即可。對于實(shí)施例公開的系統(tǒng)或裝置而言,由于其與實(shí)施例公開的方法相對應(yīng),所以描述的比較簡單,相關(guān)之處參見方法部分說明即可。
      [0191]還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實(shí)體或者操作與另一個實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
      [0192]結(jié)合本文中所公開的實(shí)施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來實(shí)施。軟件模塊可以置于隨機(jī)存儲器(RAM)、內(nèi)存、只讀存儲器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤、可移動磁盤、CD-ROM、或【技術(shù)領(lǐng)域】內(nèi)所公知的任意其它形式的存儲介質(zhì)中。
      [0193]對所公開的實(shí)施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對這些實(shí)施例的多種修改對本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開的原理和新穎特點(diǎn)相一致的最寬的范圍。
      【權(quán)利要求】
      1.一種安全下載方法,其特征在于,所述方法包括: 在設(shè)備啟動時,向上位機(jī)發(fā)送設(shè)備指令,所述設(shè)備指令中包括狀態(tài)字信息,以使所述上位機(jī)根據(jù)所述狀態(tài)字信息確定所述設(shè)備是否需要應(yīng)用程序下載; 在接收所述上位機(jī)發(fā)送的應(yīng)用程序或超時未接收所述上位機(jī)發(fā)送的應(yīng)用程序之后,讀取所述應(yīng)用程序的標(biāo)識內(nèi)容,根據(jù)所述標(biāo)識內(nèi)容判斷所述應(yīng)用程序是否正確,如果是,執(zhí)行所述應(yīng)用程序,如果否,將錯誤類型狀態(tài)字寫入所述狀態(tài)字信息,復(fù)位重新啟動,返回執(zhí)行所述在設(shè)備啟動時,向上位機(jī)發(fā)送設(shè)備指令; 當(dāng)所述應(yīng)用程序發(fā)生復(fù)位重新啟動,返回執(zhí)行所述在設(shè)備啟動時,向上位機(jī)發(fā)送設(shè)備指令。
      2.根據(jù)權(quán)利要求1所述的方法,其特征在于,在接收所述上位機(jī)發(fā)送的應(yīng)用程序或超時未接收所述上位機(jī)發(fā)送的應(yīng)用程序之后,讀取所述應(yīng)用程序的標(biāo)識內(nèi)容之前,所述方法還包括: 判斷當(dāng)前是否存在應(yīng)用程序,如果是,讀取所述應(yīng)用程序的標(biāo)識內(nèi)容,如果否,將無應(yīng)用程序狀態(tài)字寫入所述狀態(tài)字信息,復(fù)位重新啟動,返回執(zhí)行所述在設(shè)備啟動時,向上位機(jī)發(fā)送設(shè)備指令。
      3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述在設(shè)備啟動時,向上位機(jī)發(fā)送設(shè)備指令,所述設(shè)備指令中包括狀態(tài)字信息,包括: 在設(shè)備啟動時,判斷是否為復(fù)位啟動; 如果是復(fù)位啟動,讀取狀態(tài)字寄存器中的狀態(tài)字信息,如果所述狀態(tài)字信息是所述錯誤類型狀態(tài)字或所述無應(yīng)用程序狀態(tài)字,向上位機(jī)發(fā)送設(shè)備指令,所述設(shè)備指令中包括所述錯誤類型狀態(tài)字或所述無應(yīng)用程序狀態(tài)字; 如果所述狀態(tài)字信息不是所述錯誤類型狀態(tài)字或所述無應(yīng)用程序狀態(tài)字,將應(yīng)用層錯誤狀態(tài)字寫入所述狀態(tài)字信息,向上位機(jī)發(fā)送設(shè)備指令,所述設(shè)備指令中包括所述應(yīng)用層錯誤狀態(tài)字; 如果不是復(fù)位啟動,將正確標(biāo)識狀態(tài)字寫入所述狀態(tài)字信息,向上位機(jī)發(fā)送設(shè)備指令,所述設(shè)備指令中包括正確標(biāo)識狀態(tài)字。
      4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述標(biāo)識內(nèi)容判斷所述應(yīng)用程序是否正確,包括: 判斷所述設(shè)備的實(shí)際控制器局域網(wǎng)CAN總線端口號是否屬于所述標(biāo)識內(nèi)容中設(shè)定的CAN總線端口號范圍; 判斷設(shè)備實(shí)際所包含的子設(shè)備是否屬于所述標(biāo)識內(nèi)容中設(shè)定的支持子設(shè)備; 對所述子設(shè)備進(jìn)行子設(shè)備測試,判斷所述子設(shè)備是否正常運(yùn)行。
      5.一種安全下載方法,其特征在于,所述方法包括: 接收設(shè)備發(fā)送的設(shè)備指令,所述設(shè)備指令中包括狀態(tài)字信息; 根據(jù)所述狀態(tài)字信息確定所述設(shè)備是否需要應(yīng)用程序下載; 如果所述設(shè)備需要應(yīng)用程序下載,讀取所述應(yīng)用程序的標(biāo)識內(nèi)容,根據(jù)所述標(biāo)識內(nèi)容判斷所述應(yīng)用程序是否正確,如果是,向所述設(shè)備發(fā)送所述應(yīng)用程序,如果否,提示應(yīng)用程序錯誤。
      6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述根據(jù)所述狀態(tài)字信息確定所述設(shè)備是否需要應(yīng)用程序下載,包括: 當(dāng)所述狀態(tài)字信息為錯誤類型狀態(tài)字或無應(yīng)用程序狀態(tài)字,確定所述設(shè)備需要應(yīng)用程序下載; 當(dāng)所述狀態(tài)字信息為應(yīng)用層錯誤狀態(tài)字,確定所述設(shè)備需要應(yīng)用程序下載; 當(dāng)所述狀態(tài)字信息為正確標(biāo)識狀態(tài)字,確定所述設(shè)備不需要應(yīng)用程序下載。
      7.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述根據(jù)所述標(biāo)識內(nèi)容判斷所述應(yīng)用程序是否正確,包括: 判斷所述設(shè)備支持的功能是否屬于所述標(biāo)識內(nèi)容中設(shè)定的功能; 判斷所述設(shè)備是否屬于所述標(biāo)識內(nèi)容中設(shè)定的支持設(shè)備; 判斷所述設(shè)備的控制器局域網(wǎng)CAN總線端口號是否屬于所述標(biāo)識內(nèi)容中設(shè)定的CAN總線端口號范圍; 判斷所述設(shè)備所包含的子設(shè)備是否屬于所述標(biāo)識內(nèi)容中設(shè)定的支持子設(shè)備。
      8.一種安全下載裝置,其特征在于,所述裝置包括: 發(fā)送單元,用于在設(shè)備啟動時,向上位機(jī)發(fā)送設(shè)備指令,所述設(shè)備指令中包括狀態(tài)字信息,以使所述上位機(jī)根據(jù)所述狀態(tài)字信息確定所述設(shè)備是否需要應(yīng)用程序下載; 讀取單元,用于在接收所述上位機(jī)發(fā)送的應(yīng)用程序或超時未接收所述上位機(jī)發(fā)送的應(yīng)用程序之后,讀取所述應(yīng)用程序的標(biāo)識內(nèi)容; 第一判斷單元,用于根據(jù)所述標(biāo)識內(nèi)容判斷所述應(yīng)用程序是否正確,如果是,進(jìn)入執(zhí)行單元,如果否,進(jìn)入第一寫入單元; 所述執(zhí)行單元,用于執(zhí)行所述應(yīng)用程序; 所述第一寫入單元,用于將錯誤類型狀態(tài)字寫入所述狀態(tài)字信息,復(fù)位重新啟動,返回所述發(fā)送單元; 復(fù)位單元,用于當(dāng)所述應(yīng)用程序發(fā)生復(fù)位重新啟動,返回所述發(fā)送單元。
      9.一種安全下載裝置,其特征在于,所述裝置包括: 接收單元,用于接收設(shè)備發(fā)送的設(shè)備指令,所述設(shè)備指令中包括狀態(tài)字信息; 確定單元,用于根據(jù)所述狀態(tài)字信息確定所述設(shè)備是否需要應(yīng)用程序下載; 讀取單元,用于如果所述設(shè)備需要應(yīng)用程序下載,讀取所述應(yīng)用程序的標(biāo)識內(nèi)容; 判斷單元,用于根據(jù)所述標(biāo)識內(nèi)容判斷所述應(yīng)用程序是否正確,如果是,進(jìn)入發(fā)送單元,如果否,進(jìn)入提示單元; 所述發(fā)送單元,用于向所述設(shè)備發(fā)送所述應(yīng)用程序; 所述提示單元,用于提示應(yīng)用程序錯誤。
      10.一種安全下載系統(tǒng),其特征在于,所述系統(tǒng)包括: 上位機(jī)以及設(shè)備; 所述設(shè)備為權(quán)利要求8所述的安全下載裝置; 所述上位機(jī)為權(quán)利要求9所述的安全下載裝置。
      【文檔編號】G06F9/445GK104298624SQ201410456596
      【公開日】2015年1月21日 申請日期:2014年9月9日 優(yōu)先權(quán)日:2014年9月9日
      【發(fā)明者】趙玉秋, 楊龍, 賀亮, 尹柱霞, 劉權(quán)超 申請人:沈陽東軟醫(yī)療系統(tǒng)有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1