專利名稱:更改控制器中軟件的方法和裝置以及相應(yīng)的控制器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及對在一個控制器中第一存儲區(qū)內(nèi)的軟件進(jìn)行更改的方法和裝置以及相應(yīng)的控制器并且涉及按照獨(dú)立權(quán)利要求實(shí)現(xiàn)該方法的計算機(jī)程序。
特別是在汽車工業(yè)中,借助軟件將越來越復(fù)雜的功能轉(zhuǎn)換到單個的控制器中。越來越頻繁需要在交給最終用戶稍前或還有稍后將軟件的更改注入控制器。一般可通過以下方式消除控制器的軟件的更改,即將更改注入新的軟件集成等級,并且將這個新建立的軟件完整地裝入控制器、特別是通過在所謂的快速EPROM存儲器中存儲、也即通過快速存儲裝入。由于現(xiàn)有的軟件規(guī)模,控制器的快速存儲譬如現(xiàn)在已經(jīng)持續(xù)直到30分鐘。由于不斷提升功能和功能性,并且由于由此更大的軟件規(guī)模和更多的軟件包這個時間在將來提升更大。
因此,本發(fā)明的任務(wù)是減少用于控制器的快速存儲的這種時間耗費(fèi),由此也可得到其它優(yōu)點(diǎn)。
本發(fā)明的出發(fā)點(diǎn)是更改在一個控制器的第一存儲區(qū)中軟件的方法和裝置,以控制操作過程、特別是在車輛以及相應(yīng)控制器中,其中通過執(zhí)行新的軟件部分來代替執(zhí)行舊的軟件部分,并且在第一存儲區(qū)中寫入舊的軟件部分。在大多數(shù)情況下,軟件更改、特別是程序代碼的更改與不需更改的軟件部分相比很小?,F(xiàn)在優(yōu)選有目的地將待更改的部分或通常只是一個軟件部分裝入控制器,其中這些軟件部分在說明書中也稱為補(bǔ)丁容器或包含在這樣一種補(bǔ)丁容器中。
因此,優(yōu)選地只將新的軟件部分寫入第二存儲區(qū),其中通過在第一存儲區(qū)的第一轉(zhuǎn)移代替第一存儲區(qū)的舊的軟件部分而執(zhí)行在第二存儲區(qū)的新的軟件部分,并且在執(zhí)行新的軟件部分后通過第二存儲區(qū)的第二轉(zhuǎn)移重新跳轉(zhuǎn)回到第一存儲區(qū),其中繼續(xù)執(zhí)行在第一存儲區(qū)的與舊軟件部分不同的其它的軟件,并且舊的軟件部分仍存儲在第一存儲區(qū)內(nèi)。
這就是說,為實(shí)現(xiàn)更改現(xiàn)有的軟件、也即實(shí)現(xiàn)更改舊的軟件部分,安裝一個特殊的中央補(bǔ)丁管理,用該中央補(bǔ)丁管理有目的地通過跳入和跳出來更改軟件的需更改的部分。由此一方面可優(yōu)選在快速存儲大的軟件段或軟件部分時明顯地減少高的時間耗費(fèi),因?yàn)槠湟?,不如上所述地重新寫入整個軟件,并且其二也可節(jié)省所需的用于更改軟件、也即特別清除這些軟件和寫入新的軟件的時間耗費(fèi)。
此外,由此在更改軟件和軟件部分時得到一個較高的靈活性,并且另一方面通過盡可能地小的改寫也就是清除和寫入軟件部分來得到一個較小的錯誤率。
優(yōu)選地這特別通過以下方式得以實(shí)現(xiàn),即使用第二存儲區(qū)、也即補(bǔ)丁容器區(qū),只用于記錄新的軟件部分并且在程序運(yùn)行或軟件運(yùn)行時連入新的軟件部分。
在此,優(yōu)選地通過至少一個鏈表實(shí)現(xiàn)第一轉(zhuǎn)移和第二轉(zhuǎn)移。在此,鏈表提供節(jié)省儲存數(shù)據(jù)的位置的可能性、特別是儲存軟件部分,這些軟件部分同時具有時間上的而且也有邏輯的順序。由于按照這種可比較的或相同的軟件部分的方式方法具有多種版本,所以鏈表是一個適當(dāng)?shù)母郊詢Υ媸孪炔豢纱_定數(shù)量的不同軟件部分的版本。在鏈表中,對軟件部分的每個版本或?qū)γ總€軟件部分都導(dǎo)入一個指向這個軟件部分的下一個版本的指針??墒褂靡粋€特殊的指針狀態(tài)以對下面情況進(jìn)行編碼,即所屬的版本是各軟件部分的當(dāng)前版本。同樣,這種特殊的指針狀態(tài)用作為相應(yīng)的軟件部分的識別符或標(biāo)識符。在此,作為指針使用相對的或絕對的地址。在一個鏈表中,由此與分別存儲的軟件部分一起或與如包括軟件部分的一個數(shù)據(jù)記錄的一個信息單元一起,存儲一個指向各下一個邏輯相連的信息單元的存儲位置的指針、特別是在這里指向下一個新軟件部分的存儲位置,或是指向具有新軟件部分的數(shù)據(jù)記錄的存儲位置,或也指向其它的跟隨在舊軟件部分的后邊的軟件的存儲位置。這樣,首先在該時刻能夠占據(jù)這些儲存位置,在這個時刻提供待存儲的或待執(zhí)行的信息。此外,給這個信息分配各下一個空閑的儲存位置是可能的,由此這個過程此外也導(dǎo)致無縫隙地使用存儲器。
現(xiàn)在,優(yōu)選地將一個新軟件部分的起始地址用作第一轉(zhuǎn)移,擬用于從第一存儲區(qū)跳出,其中能夠用這個地址至少部分地改寫舊的軟件部分、也即需更改的軟件部分。作為替代方案也可在第一存儲區(qū)中設(shè)置存儲單元以嵌入跳出地址。由此,在第一存儲區(qū)內(nèi)設(shè)置一個到補(bǔ)丁容器內(nèi)的跳轉(zhuǎn)。然后優(yōu)選將其它與舊軟件部分不同的軟件的起始地址用作第二轉(zhuǎn)移,擬用于跳回,以使無縫隙地在轉(zhuǎn)換舊的軟件部分以后使用或處理在第一存儲區(qū)的其它的跟隨的軟件。
優(yōu)選在新的軟件部分包含這樣的信息,該信息給出應(yīng)代替哪些舊的軟件部分和/或這種信息說明了在通過哪些新的軟件部分代替舊的軟件部分。對此,第二存儲區(qū)、也即特別是在包括新的軟件部分以及也許包括附加信息的補(bǔ)丁表內(nèi)的每個讀入的補(bǔ)丁容器,除至少一個新的軟件部分外,還包括一個用于第一轉(zhuǎn)移的地址、用于第二轉(zhuǎn)移的地址、和用于可通過至少一個新的軟件部分代替的舊的軟件部分的開始的地址。作為附加的信息,優(yōu)選可在補(bǔ)丁容器中包括至少一個新的軟件部分的長度和/或也包括至少一個舊的軟件部分的長度。這些元素、也即用于第一轉(zhuǎn)移的地址、用于第二轉(zhuǎn)移的地址、用于舊的軟件部分的開始的地址、以及也許還有新的軟件部分的長度和/或舊的軟件部分的長度都可綜合成在補(bǔ)丁容器中的一個數(shù)據(jù)記錄、也即在第二存儲區(qū)的、特別是在補(bǔ)丁表中的一個數(shù)據(jù)記錄。這樣,為代替舊的軟件部分所需的信息,優(yōu)選地針對每個舊的軟件部分分別綜合在一個這樣的數(shù)據(jù)記錄內(nèi)。
在此,優(yōu)選第一存儲區(qū)作為第一表格和優(yōu)選第二存儲區(qū)作為第二表格(補(bǔ)丁表格)在同一存儲器中得以實(shí)現(xiàn)。
在此,此外第一存儲區(qū)和第二存儲區(qū)都可優(yōu)選地劃分成相同大小的軟件段,其中在第二存儲區(qū)中的每個軟件段中可寫入一個新的軟件部分。
然后,優(yōu)選地也可給每個數(shù)據(jù)記錄或每個軟件段根據(jù)實(shí)施方案配備一種識別符,該識別符允許列入一個舊的軟件部分和一個代替此的新的軟件部分。
其它的優(yōu)點(diǎn)和優(yōu)選的方案可從說明書中以及權(quán)利要求的特征中得到。
根據(jù)在附圖中所示的進(jìn)一步詳細(xì)說明本發(fā)明。圖中
圖1示出了一個具有相應(yīng)的軟件的控制器,其中舊的軟件部分用新的軟件部分代替,并且圖2示出了具有控制器軟件的第一存儲區(qū)以及按照本發(fā)明所述的補(bǔ)丁容器,并且圖3舉例示出了在補(bǔ)丁容器中的一個可能的數(shù)據(jù)記錄。
圖1示出了具有處理單元101、特別是具有微控制器以及存儲裝置102、特別是被劃分成兩個存儲區(qū)103和104的控制器100。這些存儲區(qū)103和104可位于控制器100的同一存儲器或不同的存儲器內(nèi)。通過除了線路連接的通信連接以外還可表現(xiàn)為無線的通信連接的接口105,相應(yīng)的新的軟件部分由一個帶有第二存儲裝置107的信源106、譬如另一個計算機(jī)導(dǎo)入控制器100。通過只傳送需更改的數(shù)據(jù)、也即只傳送新的軟件部分和不傳送整個軟件,這導(dǎo)致明顯小的傳輸速率,特別是也能夠使用空中接口、也即無線電、超聲、紅外等等。除此之外,在這個位置還可同樣使用線路連接的傳輸。
現(xiàn)在,圖2示出了第一存儲區(qū)200和第二存儲區(qū)201、特別是以表格形式所示的。在此,第一存儲區(qū)包括單元格或軟件段205-216。單元格205-216的相應(yīng)的地址分別存儲在塊203中。同樣,第二存儲區(qū)201、也即補(bǔ)丁表包括多個單元格217-223,也是軟件段,其中能夠存入所謂的補(bǔ)丁容器。還有在這里在塊204中,對各單元格、也即對各補(bǔ)丁容器存儲相應(yīng)的地址。
如在圖2中所看到的,在從第一存儲區(qū)200中的舊的軟件部分內(nèi),在軟件段207后在軟件段208中產(chǎn)生一個跳出到補(bǔ)丁表201中。在此,用跳轉(zhuǎn)地址亦即到軟件段218的轉(zhuǎn)移將舊的軟件部分208至少部分地改寫。這就是說,第一更改A1以從第一存儲區(qū)200到第二存儲區(qū)201的轉(zhuǎn)移V1A1開始。在軟件段218、219運(yùn)行完之后,從帶有第二轉(zhuǎn)移V2A1的軟件段220重新轉(zhuǎn)回或跳回第一存儲區(qū)軟件段210。如此則通過在段218和219中的新的軟件部分代替軟件段208和209內(nèi)的舊的軟件部分、也即來回跳轉(zhuǎn)。在此,舊的軟件部分仍包含在第一存儲區(qū)中的段208和209內(nèi)。
第二更改A2舉例示出了在段212后的一個跳出,跳轉(zhuǎn)到在第二存儲區(qū)201中的段223的起點(diǎn),并且示出了一個跳回,跳回到存儲段214的起點(diǎn)。這就是說,通過第一轉(zhuǎn)移V1A2和跳回或第二轉(zhuǎn)移V2A2,用軟件段223在軟件運(yùn)行方面代替軟件段213,其中至少部分地仍然保持在軟件段213中的舊的軟件部分。只代替包括補(bǔ)丁表的跳轉(zhuǎn)地址的部分。
為產(chǎn)生如圖2所示的這種狀態(tài),需要這樣的信息,即哪種軟件部分、也即從存儲區(qū)200的哪些舊的軟件部分應(yīng)如何更改。該信息被裝入補(bǔ)丁表201中。
在控制器重新啟動時,用補(bǔ)丁管理建立存儲區(qū)200和存儲區(qū)201之間的地址關(guān)系。補(bǔ)丁管理譬如放置在引導(dǎo)裝入器中、也即在啟動控制器時被處理的啟動程序中。在此,按照本發(fā)明根據(jù)花費(fèi)在補(bǔ)丁表中可包括許多在補(bǔ)丁管理范圍內(nèi)的許多信息。這些信息、這些元素可綜合在單個的數(shù)據(jù)記錄內(nèi),如這在圖3所示的那樣。該管理也可由控制器的管理單元101以自身方式實(shí)現(xiàn),方式是通過將相應(yīng)的信息存放在補(bǔ)丁容器內(nèi)。
為產(chǎn)生補(bǔ)丁表的數(shù)據(jù)記錄,在此提供一個輔助裝置、特別是在計算機(jī)106內(nèi)的輔助裝置,該輔助裝置上分析源代碼的更改,并且據(jù)此產(chǎn)生補(bǔ)丁表的數(shù)據(jù)記錄或軟件部分。這些數(shù)據(jù)記錄譬如由一個跳出地址、由原始軟件、也即舊的軟件部分,補(bǔ)丁表的目的地址、也即指向一個補(bǔ)丁容器的指針、由新的軟件部分、也即譬如更改的或新的十六進(jìn)制代碼組成,譬如也可由已更改的程序代碼的長度、也即舊的軟件部分長度或新的程序代碼也即新的軟件部分的長度組成,以及由到第一存儲區(qū)的跳回地址、也即跳回到與舊的軟件部分不同的其它軟件、也即特別到原始程序的跳回地址組成。此外,可給補(bǔ)丁容器分配一個標(biāo)始符和識別符,并且它們由此被包含在數(shù)據(jù)記錄中。
在此,實(shí)現(xiàn)本發(fā)明所述方法的信息不是都需要的,這樣,譬如從起始地址和軟件部分的長度可確定最終地址。盡管如此,信息的使用或者意味著時間優(yōu)勢,因?yàn)橐粋€地址不須計算,而是給出了,或者在這點(diǎn)上的冗余信息使得檢驗(yàn)軟件的更改成為可能,和由此可能提高安全性。
同樣地,用一個如此建立起來的補(bǔ)丁管理重新取消在軟件中的更改。然后,在這樣一種取消中,在第一存儲區(qū)中可設(shè)置針對跳出地址的存儲空間,以致于在重新使用舊的軟件部分時該部分不被部分地改寫。
作為這樣一個補(bǔ)丁容器或數(shù)據(jù)記錄的例子,在圖3中示出了存儲塊300。在此,用301譬如給出了一個程序地址、也即舊的需代替的軟件部分的地址,用塊302給出了在補(bǔ)丁表中的地址。程序塊303給出了新的特殊的程序代碼,也即應(yīng)代替舊的軟件部分的新的軟件部分。用塊304給出了譬如新的軟件部分的長度、也即以比特、字節(jié)或任意其它量為單位的代碼長度,并且最后塊305給出了到其它軟件部分的返回地址、也即特別到第一存儲區(qū)200中源程序的返回地址。
除此以外,如上所述,同樣也包括識別符、也即標(biāo)識符,譬如代替給出的代碼長度或者附加的。這樣一個如程序塊300的補(bǔ)丁容器或整個的補(bǔ)丁表可很簡單地通過總線系統(tǒng)裝入控制器,譬如通過具有CAN消息的CAN總線系統(tǒng)。如果象所談到的那樣使用識別符或標(biāo)識符、也即將其分配給一個補(bǔ)丁容器,則可有目的地完全實(shí)現(xiàn)和跟蹤譬如給用戶的誤差報告的更改,并且也可建立并存儲更改的歷史,無須損失穩(wěn)定測試過的程序代碼、也即無錯誤的軟件的透明度。如果糾錯并無所期望的反應(yīng),則很容易恢復(fù)舊的狀態(tài)、也即簡單地從補(bǔ)丁容器中取出。通過服務(wù)于本發(fā)明方法的小的數(shù)據(jù)率,一種簡單的通過空中接口的軟件改正或改進(jìn),如所提到的,是可能的。
此外,有利的是,將數(shù)據(jù)的存儲區(qū)、也即軟件分段成同樣大小的數(shù)據(jù)文件、也即同樣大小的軟件段,這些軟件段然后同樣如上述的方法那樣彼此鏈接并且針對更改存儲在補(bǔ)丁表中。也就是說,在第一存儲區(qū)200和第二存儲區(qū)201中的單元格或數(shù)據(jù)包或在其中所保存的軟件無須大小一定相同,而是通過地址和補(bǔ)丁管理進(jìn)行管理。但是,使用在第一和第二存儲區(qū)的大小相同的軟件段是有利的,并且作為數(shù)據(jù)記錄總是交換這樣完整的軟件段或通過新的軟件段代替舊的軟件段。
由此,通過詳盡描述的本發(fā)明,得到具有全部優(yōu)點(diǎn)的控制器的一個遞增的快速存儲。
權(quán)利要求
1.用于更改在一個控制器的第一存儲區(qū)中的軟件來控制操作過程的方法,其中通過執(zhí)行新的軟件部分來代替執(zhí)行舊的軟件部分,并且在第一存儲區(qū)中寫入所述舊的軟件部分,其特征在于,在第二存儲區(qū)寫入所述新的軟件部分,和通過第一存儲區(qū)的第一轉(zhuǎn)移,代替在第一存儲區(qū)中的舊的軟件部分來執(zhí)行在第二存儲區(qū)中的新的軟件部分,其中通過第二存儲區(qū)的第二轉(zhuǎn)移在執(zhí)行所述新的軟件部分后,重新返回到第一存儲區(qū)中,并且繼續(xù)執(zhí)行在第一存儲區(qū)中的其它的與舊的軟件部分不同的軟件,其中所述舊的軟件部分仍保存在第一存儲區(qū)。
2.按照權(quán)利要求1所述的方法,其特征在于,第二存儲區(qū)只用于記錄新的軟件部分。
3.按照權(quán)利要求1所述的方法,其特征在于,通過至少一個鏈表實(shí)現(xiàn)所述第一轉(zhuǎn)移和所述第二轉(zhuǎn)移。
4.按照權(quán)利要求1所述的方法,其特征在于,將所述新的軟件部分的起始地址用作第一轉(zhuǎn)移,其中用這個起始地址至少部分地改寫所述舊的軟件部分。
5.按照權(quán)利要求1所述的方法,其特征在于,將其他與所述舊的軟件部分不同的軟件的起始地址用作第二轉(zhuǎn)移。
6.按照權(quán)利要求1所述的方法,其特征在于,在新的軟件部分中包含這樣的信息,該信息說明了應(yīng)代替哪些舊的軟件部分。
7.按照權(quán)利要求1所述的方法,其特征在于,在新的軟件部分中包含這樣的信息,該信息說明了應(yīng)通過哪些新的軟件部分來代替所述舊的軟件部分。
8.按照權(quán)利要求1所述的方法,其特征在于,第二存儲區(qū)除至少一個新的軟件部分外,還包括針對第一轉(zhuǎn)移的一個地址,針對第二轉(zhuǎn)移的一個地址,和將要被至少一個新的軟件部分代替的所述舊的軟件部分的開始的地址。
9.按照權(quán)利要求8所述的方法,其特征在于,第二存儲區(qū)此外還包括至少一個新的軟件部分的長度和/或至少一個舊的軟件部分的長度。
10.按照權(quán)利要求8和9所述的方法,其特征在于,將權(quán)利要求8的元素和/或權(quán)利要求9的元素綜合到在第二存儲區(qū)內(nèi)的一個數(shù)據(jù)記錄。
11.按照權(quán)利要求10所述的方法,其特征在于,設(shè)置至少兩個舊的軟件部分和至少兩個代替這兩個舊的軟件部分的新的軟件部分,其中將權(quán)利要求8和/或9所述的相應(yīng)的元素綜合到各一個數(shù)據(jù)記錄,并且在第二存儲區(qū)中被寫入。
12.按照權(quán)利要求1所述的方法,其特征在于,在同一存儲器中,設(shè)置第一表格作為第一存儲區(qū),并設(shè)置第二表格作為第二存儲區(qū)。
13.按照權(quán)利要求1或12所述的方法,其特征在于,將第一存儲區(qū)和第二存儲區(qū)劃分成同樣大小的軟件段,其中在第二存儲區(qū)的每個軟件段中都能夠?qū)懭胍粋€新的軟件部分。
14.按照權(quán)利要求10或13所述的方法,其特征在于,每個數(shù)據(jù)記錄或每個軟件段都配有一個識別符。
15.按照權(quán)利要求14所述的方法,其特征在于,針對在第一存儲區(qū)內(nèi)的包含一個舊的軟件部分的軟件段的識別符和具有代替所述舊的軟件部分的新的軟件部分的相應(yīng)的軟件段的識別符是相同的。
16.用于更改在一個控制器的第一存儲區(qū)中軟件以控制操作過程的裝置,其中通過執(zhí)行新的軟件部分代替執(zhí)行舊的軟件部分,并且在第一存儲區(qū)中寫入所述舊的軟件部分,其特征在于,包含這樣的裝置,該裝置將所述新的軟件部分寫入第二存儲區(qū),和將第一轉(zhuǎn)移寫入第一存儲區(qū),由此代替第一存儲區(qū)中所述舊的軟件部分而執(zhí)行第二存儲區(qū)中所述新的軟件部分,其中該裝置也將第二轉(zhuǎn)移寫入第二存儲區(qū),由此在執(zhí)行所述新的軟件部分后,重新返回到第一存儲區(qū),并且繼續(xù)執(zhí)行在第一存儲區(qū)中的其它與所述舊的軟件部分不同的軟件,其中所述舊的軟件仍保存在第一存儲區(qū)內(nèi)。
17.帶有第一存儲區(qū)的控制器,使在該存儲區(qū)中存有舊的軟件部分和其它的與所述舊的軟件部分不同的軟件部分,其特征在于,該控制器包括第二存儲區(qū),該存儲區(qū)包括代替所述舊的軟件部分的新的軟件部分,其特征在于,包括這樣的裝置,該裝置將所述新的軟件部分寫入第二存儲區(qū),和將第一轉(zhuǎn)移寫入第一存儲區(qū),由此代替第一存儲區(qū)中所述舊的軟件部分而執(zhí)行第二存儲區(qū)中所述新的軟件部分,其中該裝置也將第二轉(zhuǎn)移寫入第二存儲區(qū),由此在執(zhí)行所述新的軟件部分后,重新返回到第一存儲區(qū),并且繼續(xù)執(zhí)行在第一存儲區(qū)中的其它與所述舊的軟件部分不同的軟件,其中所述舊的軟件部分仍保存在第一存儲區(qū)內(nèi)。
18.帶有程序代碼的計算機(jī)程序,用于當(dāng)該程序在一個計算機(jī)上、特別是在一個控制器內(nèi)被執(zhí)行時,按照權(quán)利要求1至15之一執(zhí)行所有步驟。
全文摘要
更改在一個控制器的第一存儲區(qū)中的軟件來控制操作過程的方法和裝置,其中通過執(zhí)行新的軟件部分代替執(zhí)行舊的軟件部分,并且在第一存儲區(qū)中寫入舊的軟件部分,其中在第二存儲區(qū)寫入新的軟件部分,和通過第一存儲區(qū)內(nèi)的第一轉(zhuǎn)移,來代替第一存儲區(qū)內(nèi)的舊的軟件部分而執(zhí)行第二存儲區(qū)內(nèi)的新的軟件部分,其中在執(zhí)行新的軟件部分后,通過第二存儲區(qū)的第二轉(zhuǎn)移,重新跳轉(zhuǎn)回到第一存儲區(qū),并且繼續(xù)執(zhí)行在第一存儲區(qū)中的其它的與舊的軟件部分不同的軟件,其中舊的軟件仍保存在第一存儲區(qū)。
文檔編號G06F9/445GK1729449SQ200380106632
公開日2006年2月1日 申請日期2003年12月17日 優(yōu)先權(quán)日2002年12月19日
發(fā)明者P·約斯特 申請人:羅伯特·博世有限公司