本發(fā)明涉及軟件技術(shù)領(lǐng)域,具體涉及一種多控制器的軟件升級(jí)及地址沖突檢測(cè)方法、裝置。
背景技術(shù):
在對(duì)具有多控制器的產(chǎn)品進(jìn)行研發(fā)及售后維護(hù)時(shí),需要對(duì)多個(gè)控制器的軟件進(jìn)行升級(jí)。例如,電動(dòng)汽車的核心部件之一的bms(batterymanagementsystem,電池管理系統(tǒng))內(nèi)部包括多個(gè)ecu((electroniccontrolunit,電子控制單元),各ecu之間通過can(controllerareanetwork,控制器局域網(wǎng)總線)網(wǎng)絡(luò)連接。在對(duì)bms內(nèi)部各ecu研發(fā)時(shí)以及在電動(dòng)汽車售出后會(huì)對(duì)ecu內(nèi)部軟件進(jìn)行升級(jí)優(yōu)化。
現(xiàn)有對(duì)于多控制器進(jìn)行升級(jí)的方法通常為:開發(fā)或維護(hù)人員依次將存儲(chǔ)有升級(jí)程序的pc機(jī)與各個(gè)控制器建立通信連接,對(duì)多個(gè)控制器逐個(gè)進(jìn)行升級(jí)。例如,對(duì)于bms內(nèi)部通過can網(wǎng)絡(luò)連接的多個(gè)ecu,pc機(jī)首先與第一ecu建立通信連接,向第一ecu發(fā)送升級(jí)程序使其開始升級(jí);待第一ecu升級(jí)完畢后,pc機(jī)再與第二ecu建立通信連接,向第二ecu發(fā)送升級(jí)程序使其開始升級(jí);待第二ecu升級(jí)完畢后,pc機(jī)再與第三ecu建立通信連接,向第三ecu發(fā)送升級(jí)程序使其開始升級(jí)……直至所有ecu均升級(jí)完畢。
發(fā)明人發(fā)現(xiàn),若pc與錯(cuò)誤的控制器建立通信連接,或者pc機(jī)將錯(cuò)誤的升級(jí)程序發(fā)送給控制器,則會(huì)由于控制器升級(jí)出錯(cuò)使得多個(gè)控制器中有兩個(gè)以上的控制器地址沖突,現(xiàn)有技術(shù)無法自動(dòng)解決由于升級(jí)出錯(cuò)所導(dǎo)致的地址沖突問題,確保多個(gè)控制器均得以正確升級(jí)。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明實(shí)施例提供了一種多控制器的軟件升級(jí)及地址沖突檢測(cè)方法、裝置,以解決現(xiàn)有技術(shù)中沒有對(duì)程序升級(jí)后的控制器的地址沖突檢測(cè)的方法導(dǎo)致在地址沖突的情況下無法自動(dòng)對(duì)誤升級(jí)的控制器進(jìn)行重新升級(jí)的問題。
根據(jù)第一方面,本發(fā)明實(shí)施例提供了一種多控制器升級(jí)后的地址沖突檢測(cè)方法,適用于上位機(jī),該方法包括:接收第一目標(biāo)控制器執(zhí)行升級(jí)程序之后所發(fā)送的升級(jí)確認(rèn)信息;所述升級(jí)程序?yàn)轭A(yù)先發(fā)送給多個(gè)第一目標(biāo)控制器的,每個(gè)升級(jí)程序中攜帶有其所對(duì)應(yīng)的第一目標(biāo)控制器的地址,所述升級(jí)程序被執(zhí)行時(shí)會(huì)使執(zhí)行其的控制器的軟件升級(jí)為新的版本,并將執(zhí)行其的控制器的地址修改為其所攜帶的第一目標(biāo)控制器的地址;所述升級(jí)確認(rèn)信息包括發(fā)送所述升級(jí)確認(rèn)信息的控制器在執(zhí)行升級(jí)程序之后的地址;根據(jù)預(yù)先存儲(chǔ)的多個(gè)第一目標(biāo)控制器升級(jí)前的地址,判斷是否存在所對(duì)應(yīng)的升級(jí)確認(rèn)信息未被接收到的第一目標(biāo)控制器;當(dāng)存在所對(duì)應(yīng)的升級(jí)確認(rèn)信息未被接收到的第一目標(biāo)控制器時(shí),確定多個(gè)第一目標(biāo)控制器執(zhí)行升級(jí)程序之后存在地址沖突。
根據(jù)第二方面,本發(fā)明實(shí)施例提供了一種多控制器的軟件升級(jí)方法,適用于上位機(jī),該方法包括:根據(jù)多個(gè)第一目標(biāo)控制器的地址,向所述多個(gè)第一目標(biāo)控制器分別發(fā)送升級(jí)程序;每個(gè)升級(jí)程序中攜帶有其所對(duì)應(yīng)的第一目標(biāo)控制器的地址,所述升級(jí)程序被執(zhí)行時(shí)會(huì)使執(zhí)行其的控制器的軟件升級(jí)為新的版本,并將執(zhí)行其的控制器的地址修改為其所攜帶的第一目標(biāo)控制器的地址;第一方面所述的多控制器升級(jí)后的地址沖突檢測(cè)方法檢測(cè)升級(jí)后的多個(gè)第一目標(biāo)控制器是否存在地址沖突;當(dāng)升級(jí)后的多個(gè)第一目標(biāo)控制器存在地址沖突時(shí),向多個(gè)第一目標(biāo)控制器發(fā)送地址沖突處理命令和沖突控制器升級(jí)前的地址;所述沖突控制器為所對(duì)應(yīng)的升級(jí)確認(rèn)信息未被接收到的第一目標(biāo)控制器;所述地址沖突處理命令用于控制每個(gè)所述第一目標(biāo)控制器將其自身升級(jí)前的地址與所述沖突控制器升級(jí)前的地址進(jìn)行比對(duì),并控制升級(jí)前的地址與所述沖突控制器升級(jí)前的地址一致的第一目標(biāo)控制將自身的地址修改為所述沖突控制器升級(jí)前的地址;根據(jù)所述沖突控制器升級(jí)前的地址,向其對(duì)應(yīng)的第一目標(biāo)控制器重新發(fā)送對(duì)應(yīng)的升級(jí)程序。
可選地,所述根據(jù)多個(gè)第一目標(biāo)控制器的地址,向所述多個(gè)第一目標(biāo)控制器分別發(fā)送升級(jí)程序的步驟之前,還包括:根據(jù)多個(gè)第二目標(biāo)控制器的地址,向多個(gè)第二目標(biāo)控制器發(fā)送升級(jí)通知;所述升級(jí)通知中攜帶有需要進(jìn)行軟件升級(jí)的控制器的地址;接收第二目標(biāo)控制器返回的應(yīng)答信息,并將返回所述應(yīng)答信息的第二目標(biāo)控制器確定為第一目標(biāo)控制器;所述應(yīng)答信息用于告知上位機(jī)發(fā)送所述應(yīng)答信息的控制器可以開始升級(jí),其中攜帶有發(fā)送所述應(yīng)答信息的控制器的地址。
根據(jù)第三方面,本發(fā)明實(shí)施例提供了一種多控制器的軟件升級(jí)方法,適用于控制器,該方法包括:接收上位機(jī)所發(fā)送的升級(jí)程序;所述升級(jí)程序中攜帶有其所對(duì)應(yīng)的第一目標(biāo)控制器的地址,所述升級(jí)程序被執(zhí)行時(shí)會(huì)使執(zhí)行其的控制器的軟件升級(jí)為新的版本,并將執(zhí)行其的控制器的地址修改為其所攜帶的第一目標(biāo)控制器的地址;執(zhí)行所述升級(jí)程序,將自身的軟件升級(jí)為新的版本,并將自身的地址修改為所述升級(jí)程序中所攜帶的第一目標(biāo)控制器的地址;向所述上位機(jī)發(fā)送升級(jí)確認(rèn)信息,所述升級(jí)確認(rèn)信息用于所述上位機(jī)通過第一方面所述的多控制器升級(jí)后的地址沖突檢測(cè)方法檢測(cè)升級(jí)后的多個(gè)第一目標(biāo)控制器是否存在地址沖突;接收所述上位機(jī)在檢測(cè)到升級(jí)后的多個(gè)第一目標(biāo)控制器存在地址沖突后所發(fā)送的地址沖突處理命令和沖突控制器升級(jí)前的地址;所述沖突控制器為所對(duì)應(yīng)的升級(jí)確認(rèn)信息未被所述上位機(jī)接收到的第一目標(biāo)控制器;判斷自身升級(jí)前的地址與所述沖突控制器升級(jí)前的地址是否一致;當(dāng)自身升級(jí)前的地址與所述沖突控制器升級(jí)前的地址一致時(shí),將自身的地址修改為所述沖突控制器升級(jí)前的地址。
可選地,所述接收所述上位機(jī)所發(fā)送的升級(jí)程序的步驟之前,還包括:接收所述上位機(jī)所發(fā)送的升級(jí)通知;所述升級(jí)通知中攜帶有需要進(jìn)行軟件升級(jí)的控制器的地址;判斷所述需要進(jìn)行升級(jí)的控制器的地址是否包括自身的地址;當(dāng)所述需要進(jìn)行升級(jí)的控制器的地址包括自身的地址時(shí),向所述上位機(jī)發(fā)送應(yīng)答信息;所述應(yīng)答信息用于告知所述上位機(jī)自身可以開始升級(jí),其中攜帶有自身的地址。
根據(jù)第四方面,本發(fā)明實(shí)施例提供了一種多控制器升級(jí)后的地址沖突檢測(cè)裝置,適用于上位機(jī),該裝置包括:第一接收單元,用于接收第一目標(biāo)控制器執(zhí)行升級(jí)程序之后所發(fā)送的升級(jí)確認(rèn)信息;所述升級(jí)程序?yàn)轭A(yù)先發(fā)送給多個(gè)第一目標(biāo)控制器的,每個(gè)升級(jí)程序中攜帶有其所對(duì)應(yīng)的第一目標(biāo)控制器的地址,所述升級(jí)程序被執(zhí)行時(shí)會(huì)使執(zhí)行其的控制器的軟件升級(jí)為新的版本,并將執(zhí)行其的控制器的地址修改為其所攜帶的第一目標(biāo)控制器的地址;所述升級(jí)確認(rèn)信息包括發(fā)送所述升級(jí)確認(rèn)信息的控制器在執(zhí)行升級(jí)程序之后的地址;第一判斷單元,用于根據(jù)預(yù)先存儲(chǔ)的多個(gè)第一目標(biāo)控制器升級(jí)前的地址,判斷是否存在所對(duì)應(yīng)的升級(jí)確認(rèn)信息未被接收到的第一目標(biāo)控制器;確定單元,用于當(dāng)存在所對(duì)應(yīng)的升級(jí)確認(rèn)信息未被接收到的第一目標(biāo)控制器時(shí),確定多個(gè)第一目標(biāo)控制器執(zhí)行升級(jí)程序之后存在地址沖突。
根據(jù)第五方面,本發(fā)明實(shí)施例提供了一種多控制器的軟件升級(jí)裝置,適用于上位機(jī),該裝置包括:第一發(fā)送單元,用于根據(jù)多個(gè)第一目標(biāo)控制器的地址,向所述多個(gè)第一目標(biāo)控制器分別發(fā)送升級(jí)程序;每個(gè)升級(jí)程序中攜帶有其所對(duì)應(yīng)的第一目標(biāo)控制器的地址,所述升級(jí)程序被執(zhí)行時(shí)會(huì)使執(zhí)行其的控制器的軟件升級(jí)為新的版本,并將執(zhí)行其的控制器的地址修改為其所攜帶的第一目標(biāo)控制器的地址;第四方面所述的多控制器升級(jí)后的地址沖突檢測(cè)裝置中的所述第一接收單元、所述第一判斷單元、所述確定單元;第二發(fā)送單元,用于當(dāng)升級(jí)后的多個(gè)第一目標(biāo)控制器存在地址沖突時(shí),向多個(gè)第一目標(biāo)控制器發(fā)送地址沖突處理命令和沖突控制器升級(jí)前的地址;所述沖突控制器為所對(duì)應(yīng)的升級(jí)確認(rèn)信息未被接收到的第一目標(biāo)控制器;所述地址沖突處理命令用于控制每個(gè)所述第一目標(biāo)控制器將其自身升級(jí)前的地址與所述沖突控制器升級(jí)前的地址進(jìn)行比對(duì),并控制升級(jí)前的地址與所述沖突控制器升級(jí)前的地址一致的第一目標(biāo)控制將自身的地址修改為所述沖突控制器升級(jí)前的地址;第三發(fā)送單元,用于根據(jù)所述沖突控制器升級(jí)前的地址,向其對(duì)應(yīng)的第一目標(biāo)控制器重新發(fā)送對(duì)應(yīng)的升級(jí)程序。
可選地,該裝置還包括:第四發(fā)送單元,用于根據(jù)多個(gè)第二目標(biāo)控制器的地址,向多個(gè)第二目標(biāo)控制器發(fā)送升級(jí)通知;所述升級(jí)通知中攜帶有需要進(jìn)行軟件升級(jí)的控制器的地址;第二接收單元,用于接收第二目標(biāo)控制器返回的應(yīng)答信息,并將返回所述應(yīng)答信息的第二目標(biāo)控制器確定為第一目標(biāo)控制器;所述應(yīng)答信息用于告知上位機(jī)發(fā)送所述應(yīng)答信息的控制器可以開始升級(jí),其中攜帶有發(fā)送所述應(yīng)答信息的控制器的地址。
根據(jù)第六方面,本發(fā)明實(shí)施例提供了一種多控制器的軟件升級(jí)裝置,適用于控制器,該裝置包括:第三接收單元,用于接收上位機(jī)所發(fā)送的升級(jí)程序;所述升級(jí)程序中攜帶有其所對(duì)應(yīng)的第一目標(biāo)控制器的地址,所述升級(jí)程序被執(zhí)行時(shí)會(huì)使執(zhí)行其的控制器的軟件升級(jí)為新的版本,并將執(zhí)行其的控制器的地址修改為其所攜帶的第一目標(biāo)控制器的地址;執(zhí)行單元,用于執(zhí)行所述升級(jí)程序,將自身的軟件升級(jí)為新的版本,并將自身的地址修改為所述升級(jí)程序中所攜帶的第一目標(biāo)控制器的地址;第五發(fā)送單元,用于向所述上位機(jī)發(fā)送升級(jí)確認(rèn)信息,所述升級(jí)確認(rèn)信息用于所述上位機(jī)通過第四方面所述的多控制器升級(jí)后的地址沖突檢測(cè)裝置檢測(cè)升級(jí)后的多個(gè)第一目標(biāo)控制器是否存在地址沖突;第四接收單元,用于接收所述上位機(jī)在檢測(cè)到升級(jí)后的多個(gè)第一目標(biāo)控制器存在地址沖突后所發(fā)送的地址沖突處理命令和沖突控制器升級(jí)前的地址;所述沖突控制器為所對(duì)應(yīng)的升級(jí)確認(rèn)信息未被所述上位機(jī)接收到的第一目標(biāo)控制器;第二判斷單元,用于判斷自身升級(jí)前的地址與所述沖突控制器升級(jí)前的地址是否一致;修改單元,用于當(dāng)自身升級(jí)前的地址與所述沖突控制器升級(jí)前的地址一致時(shí),將自身的地址修改為所述沖突控制器升級(jí)前的地址。
可選地,該裝置還包括:第五接收單元,用于接收所述上位機(jī)所發(fā)送的升級(jí)通知;所述升級(jí)通知中攜帶有需要進(jìn)行軟件升級(jí)的控制器的地址;第三判斷單元,用于判斷所述需要進(jìn)行升級(jí)的控制器的地址是否包括自身的地址;當(dāng)所述需要進(jìn)行升級(jí)的控制器的地址包括自身的地址時(shí),執(zhí)行所述接收所述上位機(jī)所發(fā)送的升級(jí)程序的步驟。
上述多控制器升級(jí)后的地址沖突檢測(cè)方法及裝置,預(yù)先給控制器發(fā)送的每個(gè)升級(jí)程序中攜帶有其所對(duì)應(yīng)的第一目標(biāo)控制器的地址,升級(jí)程序被執(zhí)行時(shí)會(huì)使執(zhí)行其的控制器的軟件升級(jí)為新的版本,并將執(zhí)行其的控制器的地址修改為升級(jí)程序所攜帶的第一目標(biāo)控制器的地址;控制器執(zhí)行升級(jí)程序后,會(huì)向上位機(jī)發(fā)送升級(jí)確認(rèn)信息,該升級(jí)確認(rèn)信息包括發(fā)送該升級(jí)確認(rèn)信息的控制器在執(zhí)行升級(jí)程序之前的地址;上位機(jī)接收該升級(jí)確認(rèn)信息后,根據(jù)預(yù)先存儲(chǔ)的多個(gè)第一目標(biāo)控制器升級(jí)前的地址,判斷是否存在所對(duì)應(yīng)的升級(jí)確認(rèn)信息未被接收到的第一目標(biāo)控制器,當(dāng)存在時(shí),便可以確定多個(gè)第一目標(biāo)控制器執(zhí)行升級(jí)程序之后存在地址沖突。通過本實(shí)施例,在向多個(gè)控制器發(fā)送升級(jí)程序使其軟件升級(jí)為新版本后,能夠自動(dòng)檢測(cè)這多個(gè)控制器升級(jí)之后是否存在地址沖突。
上述多控制器的軟件升級(jí)方法及裝置,上位機(jī)向多個(gè)第一目標(biāo)控制器分別發(fā)送升級(jí)程序,每個(gè)升級(jí)程序中攜帶有其所對(duì)應(yīng)的第一目標(biāo)控制器的地址,升級(jí)程序被執(zhí)行時(shí)會(huì)使執(zhí)行其的控制器的軟件升級(jí)為新的版本,并將執(zhí)行其的控制器的地址修改為其所攜帶的第一目標(biāo)控制器的地址;控制器接收上位機(jī)所發(fā)送的升級(jí)程序,執(zhí)行升級(jí)程序,將自身的軟件升級(jí)為新的版本,并將自身的地址修改為升級(jí)程序中所攜帶的第一目標(biāo)控制器的地址;然后控制器向上位機(jī)發(fā)送升級(jí)確認(rèn)信息,該升級(jí)確認(rèn)信息中攜帶有升級(jí)后的地址;然后上位機(jī)通過上述地址沖突檢測(cè)方法根據(jù)控制器所發(fā)送的升級(jí)確認(rèn)信息檢測(cè)升級(jí)后的多個(gè)第一目標(biāo)控制器是否存在地址沖突;當(dāng)存在地址沖突時(shí),上位機(jī)向多個(gè)第一目標(biāo)控制器發(fā)送地址沖突處理命令和沖突控制器升級(jí)前的地址;控制器接收該地址沖突處理命令和沖突控制器升級(jí)前的地址,判斷自身升級(jí)前的地址與沖突控制器升級(jí)前的地址是否一致,當(dāng)一致時(shí)將自身的地址修改為沖突控制器升級(jí)前的地址;上位機(jī)再根據(jù)沖突控制器升級(jí)前的地址,向其對(duì)應(yīng)的第一目標(biāo)控制器重新發(fā)送對(duì)應(yīng)的升級(jí)程序。通過本實(shí)施例,上位機(jī)可以控制多控制器進(jìn)行升級(jí),檢測(cè)并記錄升級(jí)錯(cuò)誤的控制器的地址,再對(duì)升級(jí)錯(cuò)誤的控制器重新升級(jí)。
附圖說明
通過參考附圖會(huì)更加清楚的理解本發(fā)明的特征和優(yōu)點(diǎn),附圖是示意性的而不應(yīng)理解為對(duì)本發(fā)明進(jìn)行任何限制,在附圖中:
圖1示出了根據(jù)本發(fā)明實(shí)施例的多控制器升級(jí)后的地址沖突檢測(cè)方法的流程圖;
圖2示出了根據(jù)本發(fā)明實(shí)施例的多控制器的軟件升級(jí)方法的流程圖;
圖3示出了上位機(jī)向控制器發(fā)送升級(jí)程序的示意圖;
圖4示出了控制器向上位機(jī)發(fā)送升級(jí)確認(rèn)信息的示意圖;
圖5示出了根據(jù)本發(fā)明另一實(shí)施例的多控制器的軟件升級(jí)方法的流程圖;
圖6示出了根據(jù)本發(fā)明再一實(shí)施例的多控制器的軟件升級(jí)方法的流程圖;
圖7示出了根據(jù)本發(fā)明實(shí)施例的多控制器升級(jí)后的地址沖突檢測(cè)裝置的示意圖;
圖8示出了根據(jù)本發(fā)明實(shí)施例的多控制器的軟件升級(jí)裝置的示意圖;
圖9示出了根據(jù)本發(fā)明另一實(shí)施例的多控制器的軟件升級(jí)裝置的示意圖。
具體實(shí)施方式
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
實(shí)施例一
本實(shí)施例提供了一種多控制器升級(jí)后的地址沖突檢測(cè)方法,適用于與多個(gè)控制器通信連接的上位機(jī),該上位機(jī)包括計(jì)算機(jī)、服務(wù)器或者移動(dòng)終端。如圖1所示,該方法包括下列步驟:
s101:接收第一目標(biāo)控制器執(zhí)行升級(jí)程序之后所發(fā)送的升級(jí)確認(rèn)信息。
此處升級(jí)程序?yàn)樯衔粰C(jī)預(yù)先發(fā)送給多個(gè)第一目標(biāo)控制器的,每個(gè)升級(jí)程序中包括第一目標(biāo)控制器所需升級(jí)為的軟件新版本(或者該第一目標(biāo)控制器已有軟件的補(bǔ)丁程序),并攜帶有該升級(jí)程序所對(duì)應(yīng)的該第一目標(biāo)控制器的地址。升級(jí)程序被執(zhí)行時(shí)會(huì)使執(zhí)行其的控制器的軟件升級(jí)為新的版本,并將執(zhí)行其的控制器的地址修改為其所攜帶的第一目標(biāo)控制器的地址。升級(jí)確認(rèn)信息包括發(fā)送升級(jí)確認(rèn)信息的控制器在執(zhí)行升級(jí)程序之后的地址。
例如,上位機(jī)向控制器a(其地址為0001)發(fā)送升級(jí)程序,該升級(jí)程序中攜帶有控制器a的地址0001。控制器a執(zhí)行該升級(jí)程序后將其地址修改為升級(jí)程序中所攜帶的控制器a的地址,即將地址從0001修改為0001。當(dāng)控制器a的升級(jí)程序沒有出錯(cuò)時(shí),控制器a升級(jí)前與升級(jí)后的地址是一致的。
這種機(jī)制下,當(dāng)控制器a采用錯(cuò)誤的升級(jí)程序升級(jí)時(shí),會(huì)使得控制器a的地址被修改為0001之外的地址,如0002。
s102:根據(jù)預(yù)先存儲(chǔ)的多個(gè)第一目標(biāo)控制器升級(jí)前的地址,判斷是否存在所對(duì)應(yīng)的升級(jí)確認(rèn)信息未被接收到的第一目標(biāo)控制器。
沿用上例,上位機(jī)分別向控制器a(地址為0001)、b(地址為0002)、c(地址為0003)、d(地址為0004)發(fā)送升級(jí)程序。
若控制器a、b、c均采用了正確的升級(jí)程序,從而向上位機(jī)所發(fā)送的升級(jí)確認(rèn)信息中所包括的是其原先的地址,即分別為0001、0002、0003。此外,控制器d采用了錯(cuò)誤的升級(jí)程序,如采用了控制器a的升級(jí)程序升級(jí),從而控制器d的地址就從0004修改為了0001,從而控制器d向上位機(jī)所發(fā)送的升級(jí)程序中所包括的是地址0001。
由此,上位機(jī)所接收到的來自控制器a、b、c、d的升級(jí)確認(rèn)信息中所包括的地址分別為0001、0002、0003、0001,即控制器a、b、c所對(duì)應(yīng)的升級(jí)確認(rèn)信息均被接收到,而控制器d所對(duì)應(yīng)的升級(jí)確認(rèn)信息(即包括了控制器d升級(jí)前的地址0004的升級(jí)確認(rèn)信息)未被接收到。
s103:當(dāng)存在所對(duì)應(yīng)的升級(jí)確認(rèn)信息未被接收到的第一目標(biāo)控制器時(shí),確定多個(gè)第一目標(biāo)控制器執(zhí)行升級(jí)程序之后存在地址沖突。
沿用上例,根據(jù)控制器d所對(duì)應(yīng)的升級(jí)確認(rèn)信息未被接收到便可以確定控制器a、b、c、d執(zhí)行升級(jí)程序后存在了地址沖突。
需要補(bǔ)充說明的是,控制器所對(duì)應(yīng)的升級(jí)確認(rèn)信息是指:升級(jí)信息中所包括的地址與控制器的地址相同。沿用上例,包括地址0001的升級(jí)確認(rèn)信息對(duì)應(yīng)于控制器a,包括地址0004的升級(jí)確認(rèn)信息對(duì)應(yīng)于控制器d。
上述多控制器升級(jí)后的地址沖突檢測(cè)方法,預(yù)先給控制器發(fā)送的每個(gè)升級(jí)程序中攜帶有其所對(duì)應(yīng)的第一目標(biāo)控制器的地址,升級(jí)程序被執(zhí)行時(shí)會(huì)使執(zhí)行其的控制器的軟件升級(jí)為新的版本,并將執(zhí)行其的控制器的地址修改為升級(jí)程序所攜帶的第一目標(biāo)控制器的地址;控制器執(zhí)行升級(jí)程序后,會(huì)向上位機(jī)發(fā)送升級(jí)確認(rèn)信息,該升級(jí)確認(rèn)信息包括發(fā)送該升級(jí)確認(rèn)信息的控制器在執(zhí)行升級(jí)程序之前的地址;上位機(jī)接收該升級(jí)確認(rèn)信息后,根據(jù)預(yù)先存儲(chǔ)的多個(gè)第一目標(biāo)控制器升級(jí)前的地址,判斷是否存在所對(duì)應(yīng)的升級(jí)確認(rèn)信息未被接收到的第一目標(biāo)控制器,當(dāng)存在時(shí),便可以確定多個(gè)第一目標(biāo)控制器執(zhí)行升級(jí)程序之后存在地址沖突。通過本實(shí)施例,在向多個(gè)控制器發(fā)送升級(jí)程序使其軟件升級(jí)為新版本后,能夠自動(dòng)檢測(cè)這多個(gè)控制器升級(jí)之后是否存在地址沖突。
實(shí)施例二
本實(shí)施例提供了一種多控制器的軟件升級(jí)方法,適用于與多個(gè)控制器通信連接的上位機(jī),該上位機(jī)計(jì)算機(jī)、服務(wù)器或者移動(dòng)終端。如圖2所示,該方法包括下列步驟:
s201:根據(jù)多個(gè)第一目標(biāo)控制器的地址,向多個(gè)第一目標(biāo)控制器分別發(fā)送升級(jí)程序。每個(gè)升級(jí)程序中包括第一目標(biāo)控制器所需升級(jí)為的軟件新版本(或者該第一目標(biāo)控制器已有軟件的補(bǔ)丁程序),并攜帶有其所對(duì)應(yīng)的第一目標(biāo)控制器的地址,升級(jí)程序被執(zhí)行時(shí)會(huì)使執(zhí)行其的控制器的軟件升級(jí)為新的版本,并將執(zhí)行其的控制器的地址修改為其所攜帶的第一目標(biāo)控制器的地址。
如圖3所示,上位機(jī)有升級(jí)程序a、b、c、d分別對(duì)應(yīng)控制器a(其地址為0001)、b(其地址為0002)、c(其地址為0003)、d(其地址為0004)。每個(gè)升級(jí)程序中包括第一目標(biāo)控制器所需升級(jí)為的軟件新版本(或者該第一目標(biāo)控制器已有軟件的補(bǔ)丁程序),并攜帶有該升級(jí)程序所對(duì)應(yīng)的該第一目標(biāo)控制器的地址,即:升級(jí)程序a中攜帶有控制器a的地址,升級(jí)程序b中攜帶有控制器b的地址,升級(jí)程序c中攜帶有控制器c的地址,升級(jí)程序d中攜帶有控制器d的地址。升級(jí)程序被執(zhí)行時(shí)會(huì)使執(zhí)行其的控制器的軟件升級(jí)為新的版本,并將執(zhí)行其的控制器的地址修改為其所攜帶的第一目標(biāo)控制器的地址。升級(jí)確認(rèn)信息包括發(fā)送升級(jí)確認(rèn)信息的控制器在執(zhí)行升級(jí)程序之后的地址。
上位機(jī)確定控制器a、b、c、d為第一目標(biāo)控制器后,將每個(gè)升級(jí)程序分別發(fā)送給對(duì)應(yīng)的控制器。
每個(gè)控制器接收到升級(jí)程序后,執(zhí)行該升級(jí)程序,以將自身的軟件升級(jí)為新的版本,同時(shí)會(huì)將自身的地址修改為其所執(zhí)行升級(jí)程序所攜帶的第一目標(biāo)控制器地址。沿用上例,控制器a接收到升級(jí)程序a之后,將其自身地址修改為升級(jí)程序a所攜帶的地址,即修改為0001。若控制器所執(zhí)行的升級(jí)程序出錯(cuò),如控制器d執(zhí)行了升級(jí)程序a,則控制器d會(huì)將自身地址修改為0001。
控制器執(zhí)行升級(jí)之后,會(huì)向上位機(jī)發(fā)送升級(jí)確認(rèn)信息,該升級(jí)確認(rèn)信息中包括控制器執(zhí)行升級(jí)程序之后的地址。沿用上例,如圖4所示,控制器a所發(fā)送的升級(jí)確認(rèn)信息包括地址0001,控制器b所發(fā)送的升級(jí)確認(rèn)信息包括地址0002,控制器c所發(fā)送的升級(jí)確認(rèn)信息包括地址0003,控制器d所發(fā)送的升級(jí)確認(rèn)信息包括地址0001。
需要補(bǔ)充說明的是,所發(fā)送的升級(jí)程序可以是不相同的,每個(gè)升級(jí)程序?qū)?yīng)一個(gè)第一目標(biāo)控制器,在向控制器發(fā)送升級(jí)程序前,預(yù)先建立各個(gè)控制器與升級(jí)程序之間的對(duì)應(yīng)關(guān)系;或者,也可以有升級(jí)程序?qū)?yīng)多個(gè)第一目標(biāo)控制器,沿用上例,升級(jí)程序a可以同時(shí)對(duì)應(yīng)控制器a和b,在向控制器a和b發(fā)送升級(jí)程序a之前,預(yù)先建立升級(jí)程序a與控制器a和控制器b的對(duì)應(yīng)關(guān)系,在發(fā)送前先獲取與控制器a所對(duì)應(yīng)的升級(jí)程序a的副本a1(攜帶有地址0001)、與控制器b所對(duì)應(yīng)的升級(jí)程序a的副本a2(攜帶有地址0002),然后將升級(jí)程序a的副本a1、a2分別發(fā)送給控制器a和控制器b。
s202:采用圖1所示的多控制器升級(jí)后的地址沖突檢測(cè)方法檢測(cè)升級(jí)后的多個(gè)第一目標(biāo)控制器是否存在地址沖突。
步驟s202請(qǐng)參照實(shí)施例一,在此不再贅述。
s203:當(dāng)升級(jí)后的多個(gè)第一目標(biāo)控制器存在地址沖突時(shí),向多個(gè)第一目標(biāo)控制器發(fā)送地址沖突處理命令和沖突控制器升級(jí)前的地址。
沖突控制器為所對(duì)應(yīng)的升級(jí)確認(rèn)信息未被接收到的第一目標(biāo)控制器。沿用上例,通過上述步驟s202,可以確定控制器d所對(duì)應(yīng)的升級(jí)確認(rèn)信息未被接收到,則控制器d為沖突控制器。
地址沖突處理命令用于控制每個(gè)第一目標(biāo)控制器將其自身升級(jí)前的地址與沖突控制器升級(jí)前的地址進(jìn)行比對(duì),并控制升級(jí)前的地址與沖突控制器升級(jí)前的地址一致的第一目標(biāo)控制將自身的地址修改為沖突控制器升級(jí)前的地址。沿用上例,通過上述確定沖突控制器的地址為0004,當(dāng)控制器a接收到該地址時(shí),將其與自身執(zhí)行升級(jí)程序之前的地址0001進(jìn)行比對(duì),二者不一致,則不進(jìn)行任何處理;當(dāng)控制器d接收到該地址時(shí),將其與自身執(zhí)行升級(jí)程序之前的地址0004進(jìn)行比對(duì),二者一致,則將自身的地址修改為該地址,即控制器d(執(zhí)行升級(jí)程序后的地址為0001)將其地址修改為0004。
s204:根據(jù)沖突控制器升級(jí)前的地址,向其對(duì)應(yīng)的第一目標(biāo)控制器重新發(fā)送對(duì)應(yīng)的升級(jí)程序。
通過步驟s203可以記錄下升級(jí)錯(cuò)誤的控制器的地址,并將升級(jí)錯(cuò)誤的控制器的地址恢復(fù)為其執(zhí)行錯(cuò)誤升級(jí)程序之前的地址,從而根據(jù)記錄下的升級(jí)錯(cuò)誤的控制器的地址,使升級(jí)錯(cuò)誤的控制器重新升級(jí)。
沿用上例,根據(jù)沖突控制器的地址0004,向地址為0004的控制器(即控制器d)發(fā)送對(duì)應(yīng)的升級(jí)程序。
上述多控制器的軟件升級(jí)方法,先向多個(gè)第一目標(biāo)控制器分別發(fā)送升級(jí)程序,每個(gè)升級(jí)程序中攜帶有其所對(duì)應(yīng)的第一目標(biāo)控制器的地址,升級(jí)程序被執(zhí)行時(shí)會(huì)使執(zhí)行其的控制器的軟件升級(jí)為新的版本,并將執(zhí)行其的控制器的地址修改為其所攜帶的第一目標(biāo)控制器的地址;然后通過實(shí)施例一所述的地址沖突檢測(cè)方法檢測(cè)升級(jí)后的多個(gè)第一目標(biāo)控制器是否存在地址沖突;當(dāng)存在地址沖突時(shí),向多個(gè)第一目標(biāo)控制器發(fā)送地址沖突處理命令和沖突控制器升級(jí)前的地址;再根據(jù)沖突控制器升級(jí)前的地址,向其對(duì)應(yīng)的第一目標(biāo)控制器重新發(fā)送對(duì)應(yīng)的升級(jí)程序。通過本實(shí)施例,可以控制多控制器進(jìn)行升級(jí),檢測(cè)并記錄升級(jí)錯(cuò)誤的控制器的地址,再對(duì)升級(jí)錯(cuò)誤的控制器重新升級(jí)。
作為本實(shí)施例的一種可選實(shí)施方式,在步驟s201之前,還包括下列步驟s205和s206。
s205:根據(jù)多個(gè)第二目標(biāo)控制器的地址,向多個(gè)第二目標(biāo)控制器發(fā)送升級(jí)通知。升級(jí)通知中攜帶有需要進(jìn)行軟件升級(jí)的控制器的地址。
在發(fā)送升級(jí)程序之前,選擇好需要進(jìn)行軟件升級(jí)的控制器,如控制器a、b、c、d、e(其地址為0005)、f(其地址為0006)等六個(gè)控制器,向這些需要進(jìn)行軟件升級(jí)的控制器發(fā)送升級(jí)通知,即第二目標(biāo)控制器即為所選擇的需要進(jìn)行軟件升級(jí)的控制器。這六個(gè)控制器收到升級(jí)通知后,會(huì)返回應(yīng)答信息。
s206:接收第二目標(biāo)控制器返回的應(yīng)答信息,并將返回應(yīng)答信息的第二目標(biāo)控制器確定為第一目標(biāo)控制器。應(yīng)答信息用于告知上位機(jī)發(fā)送應(yīng)答信息的控制器可以開始升級(jí),其中攜帶有發(fā)送應(yīng)答信息的控制器的地址。
沿用上例,控制器所返回的應(yīng)答信息中包括各自的地址。例如,接收到的控制器a、b、c、d所發(fā)送的應(yīng)答信息所包括的地址分別為0001、0002、0003、0004,則將這四個(gè)地址所對(duì)應(yīng)的控制器確定為第一目標(biāo)控制器。由此可以看出第一目標(biāo)控制器的數(shù)量小于或等于第二目標(biāo)控制器的數(shù)量。
上述步驟s205和s206,在向控制器發(fā)送升級(jí)程序前,首先選擇需要升級(jí)的控制器并向其發(fā)送升級(jí)通知,然后將返回應(yīng)答信息的控制器確定為第一目標(biāo)控制器,才會(huì)向第一目標(biāo)控制器發(fā)送升級(jí)程序,由此可以防止需要進(jìn)行軟件升級(jí)的控制器無法升級(jí)(如控制器斷電,或者電動(dòng)汽車上的控制器正在控制電動(dòng)汽車運(yùn)行、電動(dòng)汽車上的控制器正在控制電池充電或放電等)時(shí)而導(dǎo)致后續(xù)接收不到其所發(fā)送的升級(jí)確認(rèn)信息,進(jìn)而導(dǎo)致沖突控制器的判斷出錯(cuò)。
實(shí)施例三
本實(shí)施例提供了一種多控制器的軟件升級(jí)方法,適用于與上位機(jī)通信連接的控制器,該控制器包括嵌入式處理器,或者計(jì)算機(jī)、服務(wù)器、移動(dòng)終端等電子設(shè)備內(nèi)的處理器或控制器。如圖5所示,該方法包括下列步驟:
s301:接收上位機(jī)所發(fā)送的升級(jí)程序。升級(jí)程序中攜帶有其所對(duì)應(yīng)的第一目標(biāo)控制器的地址,升級(jí)程序被執(zhí)行時(shí)會(huì)使執(zhí)行其的控制器的軟件升級(jí)為新的版本,并將執(zhí)行其的控制器的地址修改為其所攜帶的第一目標(biāo)控制器的地址。
如圖3所示,上位機(jī)有升級(jí)程序a、b、c、d分別對(duì)應(yīng)控制器a(其地址為0001)、b(其地址為0002)、c(其地址為0003)、d(其地址為0004)。每個(gè)升級(jí)程序中包括第一目標(biāo)控制器所需升級(jí)為的軟件新版本(或者該第一目標(biāo)控制器已有軟件的補(bǔ)丁程序),并攜帶有該升級(jí)程序所對(duì)應(yīng)的該第一目標(biāo)控制器的地址,即:升級(jí)程序a中攜帶有控制器a的地址,升級(jí)程序b中攜帶有控制器b的地址,升級(jí)程序c中攜帶有控制器c的地址,升級(jí)程序d中攜帶有控制器d的地址。升級(jí)程序被執(zhí)行時(shí)會(huì)使執(zhí)行其的控制器的軟件升級(jí)為新的版本,并將執(zhí)行其的控制器的地址修改為其所攜帶的第一目標(biāo)控制器的地址。
s302:執(zhí)行升級(jí)程序,將自身的軟件升級(jí)為新的版本,并將自身的地址修改為升級(jí)程序中所攜帶的第一目標(biāo)控制器的地址。
沿用上例,控制器a接收到升級(jí)程序a之后,將其自身地址修改為升級(jí)程序a所攜帶的地址,即修改為0001。若控制器所執(zhí)行的升級(jí)程序出錯(cuò),如控制器d執(zhí)行了升級(jí)程序a,則控制器d會(huì)將自身地址修改為0001。
s303:向上位機(jī)發(fā)送升級(jí)確認(rèn)信息。
升級(jí)確認(rèn)信息用于上位機(jī)通過圖1所示的多控制器升級(jí)后的地址沖突檢測(cè)方法檢測(cè)升級(jí)后的多個(gè)第一目標(biāo)控制器是否存在地址沖突。
沿用上例,如圖4所示,控制器a所發(fā)送的升級(jí)確認(rèn)信息包括地址0001,控制器b所發(fā)送的升級(jí)確認(rèn)信息包括地址0002,控制器c所發(fā)送的升級(jí)確認(rèn)信息包括地址0003,控制器d所發(fā)送的升級(jí)確認(rèn)信息包括地址0001。
s304:接收上位機(jī)在檢測(cè)到升級(jí)后的多個(gè)第一目標(biāo)控制器存在地址沖突后所發(fā)送的地址沖突處理命令和沖突控制器升級(jí)前的地址。沖突控制器為所對(duì)應(yīng)的升級(jí)確認(rèn)信息未被上位機(jī)接收到的第一目標(biāo)控制器。
沿用上例,上位機(jī)可以根據(jù)實(shí)施例一所述的方法確定控制器d所對(duì)應(yīng)的升級(jí)確認(rèn)信息未被接收到,則控制器d為沖突控制器。上位機(jī)會(huì)將發(fā)送地址沖突處理命令和沖突控制器(即控制器d)升級(jí)前的地址(即0004)。
s305:判斷自身升級(jí)前的地址與沖突控制器升級(jí)前的地址是否一致。當(dāng)自身升級(jí)前的地址與沖突控制器升級(jí)前的地址一致時(shí),執(zhí)行步驟s306;否則無操作。
s306:將自身的地址修改為沖突控制器升級(jí)前的地址。
若為控制器a,則接收到地址0004時(shí)會(huì)判斷其與自身執(zhí)行升級(jí)程序之前的地址0001是否一致,二者不一致,則不進(jìn)行任何處理;若為控制器d,則接收到地址0004時(shí)會(huì)判斷其與自身執(zhí)行升級(jí)程序之前的地址0004是否一致,二者一致,則控制器d(執(zhí)行升級(jí)程序后的地址為0001)將其地址修改為0004。
上述多控制器的軟件升級(jí)方法,首先接收上位機(jī)所發(fā)送的升級(jí)程序;然后執(zhí)行升級(jí)程序,將自身的軟件升級(jí)為新的版本,并將自身的地址修改為升級(jí)程序中所攜帶的第一目標(biāo)控制器的地址;然后向上位機(jī)發(fā)送升級(jí)確認(rèn)信息,該升級(jí)確認(rèn)信息中攜帶有升級(jí)后的地址;再接收上位機(jī)檢測(cè)到升級(jí)后的多個(gè)第一目標(biāo)控制器存在地址沖突后所發(fā)送的地址沖突處理命令和沖突控制器升級(jí)前的地址,判斷自身升級(jí)前的地址與沖突控制器升級(jí)前的地址是否一致,當(dāng)一致時(shí)將自身的地址修改為沖突控制器升級(jí)前的地址。通過本實(shí)施例,上位機(jī)可以控制多控制器進(jìn)行升級(jí),檢測(cè)并記錄升級(jí)錯(cuò)誤的控制器的地址,再對(duì)升級(jí)錯(cuò)誤的控制器重新升級(jí)。
作為本實(shí)施的一種可選實(shí)施方式,在步驟s301之前,還包括下列步驟s307、s308和s309。
s307:接收上位機(jī)所發(fā)送的升級(jí)通知。升級(jí)通知中攜帶有需要進(jìn)行軟件升級(jí)的控制器的地址。
上位機(jī)在發(fā)送升級(jí)程序之前,先選擇需要進(jìn)行軟件升級(jí)的控制器,如控制器a、b、c、d、e(其地址為0005)、f(其地址為0006)等六個(gè)控制器,上位機(jī)向這些需要進(jìn)行軟件升級(jí)的控制器發(fā)送升級(jí)通知,即第二目標(biāo)控制器即為所選擇的需要進(jìn)行軟件升級(jí)的控制器。這六個(gè)控制器會(huì)接收升級(jí)通知。
s308:判斷需要進(jìn)行升級(jí)的控制器的地址是否包括自身的地址。當(dāng)需要進(jìn)行升級(jí)的控制器的地址包括自身的地址時(shí),執(zhí)行步驟s309;否則無操作。
s309:向上位機(jī)發(fā)送應(yīng)答信息。該應(yīng)答信息用于告知上位機(jī)自身可以開始升級(jí),其中攜帶有自身的地址。
沿用上例,控制器所返回的應(yīng)答信息中包括各自的地址。例如,控制器a、b、c、d向上位機(jī)所發(fā)送的應(yīng)答信息所包括的地址分別為0001、0002、0003、0004,則將這四個(gè)地址所對(duì)應(yīng)的控制器確定為第一目標(biāo)控制器。由此可以看出第一目標(biāo)控制器的數(shù)量小于或等于第二目標(biāo)控制器的數(shù)量。
上述步驟s307、s308和s309,在接收上位機(jī)所發(fā)送的升級(jí)程序前,首先接收上位機(jī)所發(fā)送的升級(jí)通知,判斷需要進(jìn)行升級(jí)的控制器的地址是否包括自身的地址,當(dāng)需要進(jìn)行升級(jí)的控制器的地址包括自身的地址時(shí),向上位機(jī)發(fā)送應(yīng)答信息,以便上位機(jī)可以根據(jù)應(yīng)答信息可以確定第一目標(biāo)控制器,并向第一目標(biāo)控制器發(fā)送升級(jí)程序,由此可以防止需要進(jìn)行軟件升級(jí)的控制器無法升級(jí)(如控制器斷電,或者電動(dòng)汽車上的控制器正在控制電動(dòng)汽車運(yùn)行、電動(dòng)汽車上的控制器正在控制電池充電或放電等)時(shí)而導(dǎo)致后續(xù)上位機(jī)接收不到其所發(fā)送的升級(jí)確認(rèn)信息,進(jìn)而導(dǎo)致上位機(jī)對(duì)于沖突控制器的判斷出錯(cuò)。
實(shí)施例四
本實(shí)施例提供了一種多控制器的軟件升級(jí)方法,如圖6所示。具體地,該方法包括如下步驟:
s401:根據(jù)多個(gè)第二目標(biāo)控制器的地址,向多個(gè)第二目標(biāo)控制器發(fā)送升級(jí)通知。升級(jí)通知中攜帶有需要進(jìn)行軟件升級(jí)的控制器的地址。該步驟請(qǐng)參照步驟s205,在此不再贅述。
s402:接收上位機(jī)所發(fā)送的升級(jí)通知。該步驟請(qǐng)參照步驟s307,在此不再贅述。
s403:判斷需要進(jìn)行升級(jí)的控制器的地址是否包括自身的地址。當(dāng)需要進(jìn)行升級(jí)的控制器的地址包括自身的地址時(shí),執(zhí)行步驟s404;否則無操作。該步驟請(qǐng)參照步驟s308,在此不再贅述。
s404:向上位機(jī)發(fā)送應(yīng)答信息。該應(yīng)答信息用于告知上位機(jī)自身可以開始升級(jí),其中攜帶有自身的地址。該步驟請(qǐng)參照步驟s309,在此不再贅述。
s405:接收第二目標(biāo)控制器返回的應(yīng)答信息,并將返回應(yīng)答信息的第二目標(biāo)控制器確定為第一目標(biāo)控制器。該步驟請(qǐng)參照步驟s206,在此不再贅述。
s406:根據(jù)多個(gè)第一目標(biāo)控制器的地址,向多個(gè)第一目標(biāo)控制器分別發(fā)送升級(jí)程序。每個(gè)升級(jí)程序中包括第一目標(biāo)控制器所需升級(jí)為的軟件新版本(或者該第一目標(biāo)控制器已有軟件的補(bǔ)丁程序),并攜帶有其所對(duì)應(yīng)的第一目標(biāo)控制器的地址,升級(jí)程序被執(zhí)行時(shí)會(huì)使執(zhí)行其的控制器的軟件升級(jí)為新的版本,并將執(zhí)行其的控制器的地址修改為其所攜帶的第一目標(biāo)控制器的地址。該步驟請(qǐng)參照步驟s201,在此不再贅述。
s407:接收上位機(jī)所發(fā)送的升級(jí)程序。該步驟請(qǐng)參照步驟s301,在此不再贅述。
s408:執(zhí)行升級(jí)程序,將自身的軟件升級(jí)為新的版本,并將自身的地址修改為升級(jí)程序中所攜帶的第一目標(biāo)控制器的地址。該步驟請(qǐng)參照步驟s302,在此不再贅述。
s409:向上位機(jī)發(fā)送升級(jí)確認(rèn)信息。升級(jí)確認(rèn)信息包括發(fā)送升級(jí)確認(rèn)信息的控制器在執(zhí)行升級(jí)程序之后的地址,用于上位機(jī)通過圖1所示的多控制器升級(jí)后的地址沖突檢測(cè)方法檢測(cè)升級(jí)后的多個(gè)第一目標(biāo)控制器是否存在地址沖突。該步驟請(qǐng)參照步驟s303,在此不再贅述。
s410:接收第一目標(biāo)控制器執(zhí)行升級(jí)程序之后所發(fā)送的升級(jí)確認(rèn)信息。該步驟請(qǐng)參照步驟s101,在此不再贅述。
s411:根據(jù)預(yù)先存儲(chǔ)的多個(gè)第一目標(biāo)控制器升級(jí)前的地址,判斷是否存在所對(duì)應(yīng)的升級(jí)確認(rèn)信息未被接收到的第一目標(biāo)控制器。當(dāng)存在所對(duì)應(yīng)的升級(jí)確認(rèn)信息未被接收到的第一目標(biāo)控制器時(shí),執(zhí)行步驟s412;否則無操作。該步驟請(qǐng)參照步驟s102,在此不再贅述。
s412:確定多個(gè)第一目標(biāo)控制器執(zhí)行升級(jí)程序之后存在地址沖突。該步驟請(qǐng)參照步驟s103,在此不再贅述。
s413:當(dāng)升級(jí)后的多個(gè)第一目標(biāo)控制器存在地址沖突時(shí),向多個(gè)第一目標(biāo)控制器發(fā)送地址沖突處理命令和沖突控制器升級(jí)前的地址。沖突控制器為所對(duì)應(yīng)的升級(jí)確認(rèn)信息未被接收到的第一目標(biāo)控制器。地址沖突處理命令用于控制每個(gè)第一目標(biāo)控制器將其自身升級(jí)前的地址與沖突控制器升級(jí)前的地址進(jìn)行比對(duì),并控制升級(jí)前的地址與沖突控制器升級(jí)前的地址一致的第一目標(biāo)控制將自身的地址修改為沖突控制器升級(jí)前的地址。該步驟請(qǐng)參照步驟s203,在此不再贅述。
s414:接收上位機(jī)在檢測(cè)到升級(jí)后的多個(gè)第一目標(biāo)控制器存在地址沖突后所發(fā)送的地址沖突處理命令和沖突控制器升級(jí)前的地址。該步驟請(qǐng)參照步驟s304,在此不再贅述。
s415:判斷自身升級(jí)前的地址與沖突控制器升級(jí)前的地址是否一致。當(dāng)自身升級(jí)前的地址與沖突控制器升級(jí)前的地址一致時(shí),執(zhí)行步驟s416;否則無操作。該步驟請(qǐng)參照步驟s305,在此不再贅述。
s416:將自身的地址修改為沖突控制器升級(jí)前的地址。該步驟請(qǐng)參照步驟s306,在此不再贅述。
s417:根據(jù)沖突控制器升級(jí)前的地址,向其對(duì)應(yīng)的第一目標(biāo)控制器重新發(fā)送對(duì)應(yīng)的升級(jí)程序。該步驟請(qǐng)參照步驟s204,在此不再贅述。
需要補(bǔ)充說明的是,上述步驟s401、s405、s406、s410、s411、s412、s413和s417由上位機(jī)執(zhí)行;步驟s402、s403、s404、s407、s408、s409、s414、s415、s416由控制器執(zhí)行。
實(shí)施例五
本實(shí)施例提供了一種多控制器升級(jí)后的地址沖突檢測(cè)裝置,適用于與多個(gè)控制器通信連接的上位機(jī),該上位機(jī)包括計(jì)算機(jī)、服務(wù)器或者移動(dòng)終端。如圖7所示,該裝置包括第一接收單元10、第一判斷單元20和確定單元30。
第一接收單元10,用于接收第一目標(biāo)控制器執(zhí)行升級(jí)程序之后所發(fā)送的升級(jí)確認(rèn)信息。升級(jí)程序?yàn)轭A(yù)先發(fā)送給多個(gè)第一目標(biāo)控制器的,每個(gè)升級(jí)程序中攜帶有其所對(duì)應(yīng)的第一目標(biāo)控制器的地址,升級(jí)程序被執(zhí)行時(shí)會(huì)使執(zhí)行其的控制器的軟件升級(jí)為新的版本,并將執(zhí)行其的控制器的地址修改為其所攜帶的第一目標(biāo)控制器的地址。升級(jí)確認(rèn)信息包括發(fā)送升級(jí)確認(rèn)信息的控制器在執(zhí)行升級(jí)程序之后的地址。
第一判斷單元20,用于根據(jù)預(yù)先存儲(chǔ)的多個(gè)第一目標(biāo)控制器升級(jí)前的地址,判斷是否存在所對(duì)應(yīng)的升級(jí)確認(rèn)信息未被接收到的第一目標(biāo)控制器。
確定單元30,用于當(dāng)存在所對(duì)應(yīng)的升級(jí)確認(rèn)信息未被接收到的第一目標(biāo)控制器時(shí),確定多個(gè)第一目標(biāo)控制器執(zhí)行升級(jí)程序之后存在地址沖突。
上述多控制器升級(jí)后的地址沖突檢測(cè)裝置,預(yù)先給控制器發(fā)送的每個(gè)升級(jí)程序中攜帶有其所對(duì)應(yīng)的第一目標(biāo)控制器的地址,升級(jí)程序被執(zhí)行時(shí)會(huì)使執(zhí)行其的控制器的軟件升級(jí)為新的版本,并將執(zhí)行其的控制器的地址修改為升級(jí)程序所攜帶的第一目標(biāo)控制器的地址;控制器執(zhí)行升級(jí)程序后,會(huì)向上位機(jī)發(fā)送升級(jí)確認(rèn)信息,該升級(jí)確認(rèn)信息包括發(fā)送該升級(jí)確認(rèn)信息的控制器在執(zhí)行升級(jí)程序之前的地址;上位機(jī)接收該升級(jí)確認(rèn)信息后,根據(jù)預(yù)先存儲(chǔ)的多個(gè)第一目標(biāo)控制器升級(jí)前的地址,判斷是否存在所對(duì)應(yīng)的升級(jí)確認(rèn)信息未被接收到的第一目標(biāo)控制器,當(dāng)存在時(shí),便可以確定多個(gè)第一目標(biāo)控制器執(zhí)行升級(jí)程序之后存在地址沖突。通過本實(shí)施例,在向多個(gè)控制器發(fā)送升級(jí)程序使其軟件升級(jí)為新版本后,能夠自動(dòng)檢測(cè)這多個(gè)控制器升級(jí)之后是否存在地址沖突。
實(shí)施例六
本實(shí)施例提供了一種多控制器的軟件升級(jí)裝置,適用于與多個(gè)控制器通信連接的上位機(jī),該上位機(jī)計(jì)算機(jī)、服務(wù)器或者移動(dòng)終端。如圖8所示,該裝置包括第一發(fā)送單元40、第二發(fā)送單元50、第三發(fā)送單元60,以及實(shí)施例五所述的多控制器升級(jí)后的地址沖突檢測(cè)裝置中的第一接收單元10、第一判斷單元20、確定單元30。
第一發(fā)送單元40,用于根據(jù)多個(gè)第一目標(biāo)控制器的地址,向多個(gè)第一目標(biāo)控制器分別發(fā)送升級(jí)程序。每個(gè)升級(jí)程序中攜帶有其所對(duì)應(yīng)的第一目標(biāo)控制器的地址,升級(jí)程序被執(zhí)行時(shí)會(huì)使執(zhí)行其的控制器的軟件升級(jí)為新的版本,并將執(zhí)行其的控制器的地址修改為其所攜帶的第一目標(biāo)控制器的地址。
第二發(fā)送單元50,用于當(dāng)升級(jí)后的多個(gè)第一目標(biāo)控制器存在地址沖突時(shí),向多個(gè)第一目標(biāo)控制器發(fā)送地址沖突處理命令和沖突控制器升級(jí)前的地址。沖突控制器為所對(duì)應(yīng)的升級(jí)確認(rèn)信息未被接收到的第一目標(biāo)控制器。地址沖突處理命令用于控制每個(gè)第一目標(biāo)控制器將其自身升級(jí)前的地址與沖突控制器升級(jí)前的地址進(jìn)行比對(duì),并控制升級(jí)前的地址與沖突控制器升級(jí)前的地址一致的第一目標(biāo)控制將自身的地址修改為沖突控制器升級(jí)前的地址。
第三發(fā)送單元60,用于根據(jù)沖突控制器升級(jí)前的地址,向其對(duì)應(yīng)的第一目標(biāo)控制器重新發(fā)送對(duì)應(yīng)的升級(jí)程序。
上述多控制器的軟件升級(jí)裝置,先向多個(gè)第一目標(biāo)控制器分別發(fā)送升級(jí)程序,每個(gè)升級(jí)程序中攜帶有其所對(duì)應(yīng)的第一目標(biāo)控制器的地址,升級(jí)程序被執(zhí)行時(shí)會(huì)使執(zhí)行其的控制器的軟件升級(jí)為新的版本,并將執(zhí)行其的控制器的地址修改為其所攜帶的第一目標(biāo)控制器的地址;然后通過實(shí)施例一所述的地址沖突檢測(cè)方法檢測(cè)升級(jí)后的多個(gè)第一目標(biāo)控制器是否存在地址沖突;當(dāng)存在地址沖突時(shí),向多個(gè)第一目標(biāo)控制器發(fā)送地址沖突處理命令和沖突控制器升級(jí)前的地址;再根據(jù)沖突控制器升級(jí)前的地址,向其對(duì)應(yīng)的第一目標(biāo)控制器重新發(fā)送對(duì)應(yīng)的升級(jí)程序。通過本實(shí)施例,可以控制多控制器進(jìn)行升級(jí),檢測(cè)并記錄升級(jí)錯(cuò)誤的控制器的地址,再對(duì)升級(jí)錯(cuò)誤的控制器重新升級(jí)。
作為本實(shí)施例的一種可選實(shí)施方式,該裝置還包括第四發(fā)送單元70、第二接收單元80。
第四發(fā)送單元70,用于根據(jù)多個(gè)第二目標(biāo)控制器的地址,向多個(gè)第二目標(biāo)控制器發(fā)送升級(jí)通知。升級(jí)通知中攜帶有需要進(jìn)行軟件升級(jí)的控制器的地址。
第二接收單元80,用于接收第二目標(biāo)控制器返回的應(yīng)答信息,并將返回應(yīng)答信息的第二目標(biāo)控制器確定為第一目標(biāo)控制器。應(yīng)答信息用于告知上位機(jī)發(fā)送應(yīng)答信息的控制器可以開始升級(jí),其中攜帶有發(fā)送應(yīng)答信息的控制器的地址。
實(shí)施例七
本實(shí)施例提供了一種多控制器的軟件升級(jí)裝置,適用于與上位機(jī)通信連接的控制器,該控制器包括嵌入式處理器,或者計(jì)算機(jī)、服務(wù)器、移動(dòng)終端等電子設(shè)備內(nèi)的處理器或控制器。如圖9所示,該裝置包括:
第三接收單元90,用于接收上位機(jī)所發(fā)送的升級(jí)程序。升級(jí)程序中攜帶有其所對(duì)應(yīng)的第一目標(biāo)控制器的地址,升級(jí)程序被執(zhí)行時(shí)會(huì)使執(zhí)行其的控制器的軟件升級(jí)為新的版本,并將執(zhí)行其的控制器的地址修改為其所攜帶的第一目標(biāo)控制器的地址。
執(zhí)行單元100,用于執(zhí)行升級(jí)程序,將自身的軟件升級(jí)為新的版本,并將自身的地址修改為升級(jí)程序中所攜帶的第一目標(biāo)控制器的地址。
第五發(fā)送單元110,用于向上位機(jī)發(fā)送升級(jí)確認(rèn)信息,升級(jí)確認(rèn)信息用于上位機(jī)通過權(quán)利要求6的多控制器升級(jí)后的地址沖突檢測(cè)裝置檢測(cè)升級(jí)后的多個(gè)第一目標(biāo)控制器是否存在地址沖突。
第四接收單元120,用于接收上位機(jī)在檢測(cè)到升級(jí)后的多個(gè)第一目標(biāo)控制器存在地址沖突時(shí)所發(fā)送的地址沖突處理命令和沖突控制器升級(jí)前的地址。沖突控制器為所對(duì)應(yīng)的升級(jí)確認(rèn)信息未被上位機(jī)接收到的第一目標(biāo)控制器。
第二判斷單元130,用于判斷自身升級(jí)前的地址與沖突控制器升級(jí)前的地址是否一致。
修改單元140,用于當(dāng)自身升級(jí)前的地址與沖突控制器升級(jí)前的地址一致時(shí),將自身的地址修改為沖突控制器升級(jí)前的地址。
上述多控制器的軟件升級(jí)裝置,首先接收上位機(jī)所發(fā)送的升級(jí)程序;然后執(zhí)行升級(jí)程序,將自身的軟件升級(jí)為新的版本,并將自身的地址修改為升級(jí)程序中所攜帶的第一目標(biāo)控制器的地址;然后向上位機(jī)發(fā)送升級(jí)確認(rèn)信息,該升級(jí)確認(rèn)信息中攜帶有升級(jí)后的地址;再接收上位機(jī)檢測(cè)到升級(jí)后的多個(gè)第一目標(biāo)控制器存在地址沖突后所發(fā)送的地址沖突處理命令和沖突控制器升級(jí)前的地址,判斷自身升級(jí)前的地址與沖突控制器升級(jí)前的地址是否一致,當(dāng)一致時(shí)將自身的地址修改為沖突控制器升級(jí)前的地址。通過本實(shí)施例,上位機(jī)可以控制多控制器進(jìn)行升級(jí),檢測(cè)并記錄升級(jí)錯(cuò)誤的控制器的地址,再對(duì)升級(jí)錯(cuò)誤的控制器重新升級(jí)。
作為本實(shí)施例的一種可選實(shí)施方式,該裝置還包括第五接收單元150和第三判斷單元160。
第五接收單元150,用于接收上位機(jī)所發(fā)送的升級(jí)通知。升級(jí)通知中攜帶有需要進(jìn)行軟件升級(jí)的控制器的地址。
第三判斷單元160,用于判斷需要進(jìn)行升級(jí)的控制器的地址是否包括自身的地址。
當(dāng)需要進(jìn)行升級(jí)的控制器的地址包括自身的地址時(shí),執(zhí)行接收上位機(jī)所發(fā)送的升級(jí)程序的步驟。
雖然結(jié)合附圖描述了本發(fā)明的實(shí)施例,但是本領(lǐng)域技術(shù)人員可以在不脫離本發(fā)明的精神和范圍的情況下作出各種修改和變型,這樣的修改和變型均落入由所附權(quán)利要求所限定的范圍之內(nèi)。