一種安全下載方法、裝置及系統(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)有限公司