用于影響控制器的控制程序的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種按照權(quán)利要求1的前序部分的用于影響控制器的控制程序的方法。
【背景技術(shù)】
[0002]控制器在多個(gè)技術(shù)領(lǐng)域中大量使用。其中一個(gè)特別重要的應(yīng)用領(lǐng)域是在汽車中的發(fā)動(dòng)機(jī)、變速器和底盤的控制和在飛機(jī)中的推進(jìn)裝置的控制。在這樣的控制器中,程序代碼通常以二進(jìn)制形式存儲(chǔ)。相應(yīng)的優(yōu)選存儲(chǔ)在只讀存儲(chǔ)器中的控制程序不可能輕易地改變。
[0003]一種用于影響控制器的方法由文獻(xiàn)DE 10 2004 027 033 Al已知。
【發(fā)明內(nèi)容】
[0004]在這種背景下本發(fā)明的任務(wù)在于,給出一種用于影響控制器的控制程序的方法,所述方法對(duì)現(xiàn)有技術(shù)進(jìn)行改進(jìn)。
[0005]該任務(wù)通過(guò)具有權(quán)利要求1的特征的用于影響控制器的控制程序的方法解決。本發(fā)明有利的設(shè)計(jì)是從屬權(quán)利要求的主題。
[0006]按照本發(fā)明的第一主題,提供一種用于影響控制器的控制程序的方法,其中所述控制程序具有多個(gè)第一函數(shù)/功能(Funkt1n)并且至少一個(gè)所述第一函數(shù)構(gòu)成用于控制促動(dòng)器,并且設(shè)有存儲(chǔ)器并且所述存儲(chǔ)器具有以配置給第一函數(shù)的子程序占用的存儲(chǔ)區(qū),并且控制程序作為二進(jìn)制的程序代碼存在,其中在控制程序的程序代碼中在調(diào)用一個(gè)所述第一函數(shù)的情況下存在轉(zhuǎn)移地址并且所述轉(zhuǎn)移地址指向與所述函數(shù)調(diào)用關(guān)聯(lián)的子程序的存儲(chǔ)器地址,并且其中所述子程序作為二進(jìn)制的程序代碼的序列存在并且在子程序的程序代碼的所述序列的結(jié)尾存在返回指令,并且其中檢查控制程序的程序代碼中函數(shù)/功能調(diào)用的出現(xiàn)并且確定與函數(shù)調(diào)用關(guān)聯(lián)的轉(zhuǎn)移地址和返回指令的地址,由所述確定結(jié)果來(lái)確定以相應(yīng)的子程序占用的存儲(chǔ)區(qū)的大小,并且配置給第一函數(shù)的標(biāo)志符連同存儲(chǔ)區(qū)的相應(yīng)配置給第一函數(shù)的大小和地址在顯示單元中示出,其中所述顯示單元構(gòu)成為計(jì)算機(jī)系統(tǒng)的一部分并且借助所述計(jì)算機(jī)系統(tǒng)將至少一個(gè)所述第一函數(shù)選擇為要清除的并將所選擇的第一函數(shù)的大小和地址存儲(chǔ)在一個(gè)信息結(jié)構(gòu)中,并且解除所選擇的第一函數(shù)的至少一個(gè)函數(shù)調(diào)用和/或通過(guò)第二函數(shù)代替第一函數(shù),其中借助第二函數(shù)的程序代碼覆蓋所選擇的第一函數(shù)的程序代碼。
[0007]要指出的是,本文中,概念“信息結(jié)構(gòu)”不僅是指文件,而且還是指文件結(jié)構(gòu)以及工作程序內(nèi)的數(shù)據(jù)結(jié)構(gòu)。此外要指出的是,概念“子系統(tǒng)”是指所選擇的、即要清除的函數(shù)或存儲(chǔ)器的未被占用的區(qū)域優(yōu)選圖形顯示的模型。在這里有利的是,為每個(gè)選擇的第一函數(shù)和未被占用的自由的存儲(chǔ)區(qū)分別配置一個(gè)子系統(tǒng)。此外指出,概念“標(biāo)志符”主要是指子程序的所謂的暫時(shí)的第一名稱。原則上設(shè)定,在確定真正的即“正確的”函數(shù)名之后,用“正確的”函數(shù)名代替暫時(shí)的第一名稱。
[0008]用于影響控制器的控制程序的所述方法的一個(gè)優(yōu)點(diǎn)是,即使對(duì)于已經(jīng)用于控制發(fā)動(dòng)機(jī)的較舊的控制器中,也能夠?qū)嵤?duì)控制程序的改變,即所謂的更新,不必獲知具有子程序的清單或其名稱和轉(zhuǎn)移地址的控制程序的源代碼或控制程序的說(shuō)明。利用本方法使用者很大程度上不受缺乏控制程序制造者所提供的信息的影響。在發(fā)動(dòng)機(jī)的調(diào)校的領(lǐng)域中,所述方法也能夠?qū)崿F(xiàn)簡(jiǎn)單的和低成本的非常很大程度上對(duì)控制程序的干預(yù)。
[0009]在所述方法的一個(gè)改進(jìn)方案中,選擇多個(gè)要清除的第一函數(shù)并且由多個(gè)第二函數(shù)代替之。為此在顯示單元中圖形示出借助標(biāo)志符命名的函數(shù)連同其大小和地址。隨后選擇要改變的或要清除的函數(shù)并且借助第二函數(shù)代替。此外優(yōu)選的是,存儲(chǔ)器除了以子程序占用的存儲(chǔ)區(qū)以外還包含空閑的存儲(chǔ)區(qū)。研究表明,有利的是,由選擇為要清除而的第一函數(shù)占用的各個(gè)存儲(chǔ)區(qū)并且還有空閑的存儲(chǔ)區(qū)分別配置有唯一的段名并且所述段名存儲(chǔ)在信息結(jié)構(gòu)中。優(yōu)選標(biāo)志符對(duì)應(yīng)于段名或標(biāo)志符和段名相同。此后在用于每個(gè)自由的存儲(chǔ)區(qū)的信息結(jié)構(gòu)中存儲(chǔ)標(biāo)志符、子程序調(diào)用的轉(zhuǎn)移地址、子程序長(zhǎng)度、即大小和段名。配置段名的一個(gè)優(yōu)點(diǎn)是,在存在多個(gè)存儲(chǔ)區(qū)的情況下提供了另一個(gè)排序標(biāo)準(zhǔn),并且能夠?qū)嵤┓诸?、即按照段名的排序?br>[0010]在一個(gè)改進(jìn)方案中有利的是,通過(guò)對(duì)要清除的第一函數(shù)的存儲(chǔ)區(qū)的地址和大小的分析,確定連續(xù)的各個(gè)存儲(chǔ)區(qū)和所述各個(gè)存儲(chǔ)區(qū)的大小和地址并將其存儲(chǔ)在信息結(jié)構(gòu)中。
[0011]在另一種實(shí)施形式中,借助計(jì)算機(jī)系統(tǒng)對(duì)于要清除的第一函數(shù)的每個(gè)存儲(chǔ)區(qū)和/或?qū)τ诿總€(gè)自由的存儲(chǔ)區(qū)在產(chǎn)生第二函數(shù)的程序代碼之前產(chǎn)生空的子系統(tǒng)并且將其配置給所述存儲(chǔ)區(qū)并且將子系統(tǒng)與所述存儲(chǔ)區(qū)的配置關(guān)系存儲(chǔ)在信息結(jié)構(gòu)中和/或子系統(tǒng)中。特別優(yōu)選的是,第二函數(shù)也配置給空的子系統(tǒng)。此外按照一種實(shí)施形式,給所述空的子系統(tǒng)配置元信息并將所述元信息存儲(chǔ)在信息結(jié)構(gòu)中和/或子系統(tǒng)中。
[0012]在另一種改進(jìn)方案中,多個(gè)子系統(tǒng)通過(guò)程序調(diào)用相互關(guān)聯(lián)并且將各子系統(tǒng)相關(guān)聯(lián)的所述關(guān)聯(lián)關(guān)系存儲(chǔ)在信息結(jié)構(gòu)和/或子系統(tǒng)中。研究表明,有利的是,對(duì)于每個(gè)子系統(tǒng)產(chǎn)生優(yōu)選C文件形式的單獨(dú)的程序代碼。當(dāng)然,也能夠使用其他編程語(yǔ)言。
[0013]在一種優(yōu)選的實(shí)施形式中,對(duì)于第二函數(shù)借助編譯器產(chǎn)生二進(jìn)制的程序代碼,并且只要存在元信息則將所述元信息加入到所述二進(jìn)制的程序代碼中。
[0014]研究表明,有利的是,僅當(dāng)所述配置的存儲(chǔ)區(qū)超過(guò)預(yù)定的最小大小時(shí),才在計(jì)算機(jī)系統(tǒng)中示出配置給第一函數(shù)的存儲(chǔ)區(qū)。在另一種改進(jìn)方案中有利的是,借助測(cè)試程序檢查,所述選擇的唯一的或多個(gè)第一函數(shù)的存儲(chǔ)區(qū)對(duì)于第二函數(shù)的大小是否足夠。
[0015]在另一種實(shí)施形式中,借助試探式的方法實(shí)施存儲(chǔ)區(qū)的檢查并且通過(guò)使用的程序段的數(shù)量和/或類型確定第二函數(shù)的存儲(chǔ)器需求。在一種特別優(yōu)選的實(shí)施形式中,在產(chǎn)生第二函數(shù)的二進(jìn)制程序代碼時(shí),在將第二函數(shù)的二進(jìn)制程序代碼分配到多個(gè)存儲(chǔ)區(qū)上時(shí),根據(jù)所述分配情況將適當(dāng)?shù)霓D(zhuǎn)移指令嵌入到所產(chǎn)生的程序代碼中。在這里適當(dāng)?shù)霓D(zhuǎn)移指令的命名尤其是理解為,在存儲(chǔ)區(qū)的地址終點(diǎn)上調(diào)用轉(zhuǎn)移指令,所述轉(zhuǎn)移指令指向另一個(gè)存儲(chǔ)區(qū)的地址起點(diǎn)。當(dāng)然,程序代碼的產(chǎn)生是指編譯步驟,在所述編譯步驟中由編程語(yǔ)言尤其是C程序步驟產(chǎn)生二進(jìn)制的程序代碼。尤其優(yōu)選的是,將第二函數(shù)的二進(jìn)制的程序代碼寫入所述一個(gè)或多個(gè)配置的存儲(chǔ)區(qū)中。
[0016]在一種優(yōu)選的改進(jìn)方案中,在計(jì)算機(jī)系統(tǒng)中,在配置第二函數(shù)之后顯示剩余的存儲(chǔ)區(qū)。一個(gè)優(yōu)點(diǎn)是,在存在多個(gè)第二函數(shù)的情況下能夠連續(xù)地檢查,對(duì)于另一個(gè)第二函數(shù)是否有足夠的存儲(chǔ)空間可供使用。
[0017]在一種改進(jìn)方案中,在存儲(chǔ)器中在所選擇的第一函數(shù)的轉(zhuǎn)移地址的目標(biāo)地址上存儲(chǔ)返回指令。當(dāng)然,寫入返回指令的地址對(duì)于第二函數(shù)的程序代碼是隱藏的(ausblenden),并且不以第二函數(shù)的程序代碼寫入。如果沒發(fā)現(xiàn)并且沒解除選擇的第一函數(shù)的函數(shù)調(diào)用并且因此還調(diào)用第一函數(shù),則在執(zhí)行程序代碼時(shí)簡(jiǎn)單地返回并且繼續(xù)執(zhí)行程序。在調(diào)用第二函數(shù)時(shí),調(diào)用被置于接著返回指令的存儲(chǔ)器地址,或換句話說(shuō)第二函數(shù)在跟隨返回指令的存儲(chǔ)器地址處才開始。由此在存儲(chǔ)內(nèi)容改變時(shí)提高安全性。
[0018]另一種實(shí)施形式是,在要清除的第一函數(shù)的存儲(chǔ)區(qū)的前面已經(jīng)存在空閑的存儲(chǔ)區(qū)。兩個(gè)區(qū)域組合成一個(gè)大的存儲(chǔ)區(qū)并且為此產(chǎn)生唯一的子系統(tǒng)并將其配置給一個(gè)所述第二函數(shù)。為了現(xiàn)在保證,第一函數(shù)的調(diào)用不會(huì)在中間跳轉(zhuǎn)到第二函數(shù)中,將返回指令置于第一函數(shù)的轉(zhuǎn)移地址的最初的地址位置上。第二函數(shù)的程序代碼占用存儲(chǔ)區(qū)的其余的區(qū)域,然而不占用返回指令的地址。當(dāng)然,所有對(duì)第二函數(shù)的調(diào)用指向第二函數(shù)的起始地址。
【附圖說(shuō)明】
[0019]接著參考附圖進(jìn)一步解釋本發(fā)明。在這里同類的部分以相同的附圖標(biāo)記來(lái)標(biāo)記。所示出的實(shí)施形式非常示意性地表示,即,距離和橫向的和垂直的尺寸不是按比例的并且只要沒有另外說(shuō)明彼此也不具有可導(dǎo)出的幾何關(guān)系。其中:
[0020]圖1示出控制器結(jié)合顯示單元的簡(jiǎn)化構(gòu)造;
[0021]圖2示出圖1的描述中的存儲(chǔ)器在存儲(chǔ)內(nèi)容改變之前和之后的較詳細(xì)的劃分;
[0022]圖3示出按照本發(fā)明的方法的一種實(shí)施形式的簡(jiǎn)化圖。
【具體實(shí)施方式】
[0023]圖1的視圖示出控制器E⑶,其具有存儲(chǔ)器SPl和接口單元SI和處理器PC??刂破鱁CU借助接口單元SI與計(jì)算機(jī)系統(tǒng)GUI處于數(shù)據(jù)連接。計(jì)算機(jī)系統(tǒng)GUI具有未示出的顯示單元。通常所述顯示單元也稱為圖形界面單元。在控制單元E⑶中借助處理器PC執(zhí)行控制程序。所述控制程序作為二進(jìn)制的程序代碼存在并且也可以稱為主程序。所述控制程序具有多個(gè)在圖2的圖示中示出的第一函數(shù)F1A、F1B、F1C、...F1N。第一函數(shù)F1A、F1B、F1C、...FlN中的至少一部分的優(yōu)選的任務(wù)是控制一個(gè)或多個(gè)未示出的促動(dòng)器。此外第一函數(shù)F1A、FIB、F1C、...FlN配置有子程序。
[0024]控制程序由處理器PC執(zhí)行,其中在控制程序的程序代碼為了調(diào)用第一函數(shù)(F1A、
F1B、F1C、...F1N)存在轉(zhuǎn)移地址。在這里轉(zhuǎn)移地址指向與函數(shù)調(diào)用關(guān)聯(lián)的子程序的存儲(chǔ)器地址。相應(yīng)的子程序和所述控制程序一樣作為二進(jìn)制的程序代碼的序列存在。在所述子程序的程序代碼的所述序列的結(jié)尾借助返回指令返回到主程序的預(yù)定的位置并且進(jìn)一步執(zhí)行控制程序的程序代碼。
[0025]借助所述計(jì)算機(jī)系統(tǒng)CTI檢查控制程序的程序代碼中函數(shù)調(diào)用的出現(xiàn)并且確與所述函數(shù)調(diào)用關(guān)聯(lián)的轉(zhuǎn)移地址和返回指令的地址定,并且由所述確定結(jié)果導(dǎo)出存儲(chǔ)器SPl用相應(yīng)的子程序占用的存儲(chǔ)區(qū)的大小。此外給所確定的子程序設(shè)置標(biāo)志符。在這里概念“標(biāo)志符”包括配置給子程序的名稱。所確定的數(shù)據(jù)、即所確定的第一函數(shù)F1A、F1B、F1C、...FlN的大小和地址以及相應(yīng)的標(biāo)志符存儲(chǔ)在圖3的圖示中示出的信息結(jié)構(gòu)中。此外配置給第一函數(shù)F1A、FIB、F1C、...FlN的標(biāo)志符連同存儲(chǔ)區(qū)的配置給相應(yīng)的第一函數(shù)F1A、F1B、F1C、...FlN的大小和地址在顯示單元中示出。
[0026]圖2的視圖針對(duì)在圖1的圖示中示出的存儲(chǔ)器SPl示出存儲(chǔ)空間的示意性的占用情況。下面只解釋與圖1的圖示的區(qū)別。在存儲(chǔ)器SPl中存儲(chǔ)有多個(gè)第一函數(shù)F1A、F1B、
FlC,...FIN。在一部分第一函數(shù)F1A、F1B、F1C、...FlN之間構(gòu)成空閑的存儲(chǔ)區(qū)FRl和FR2。借助計(jì)算機(jī)系統(tǒng)⑶I,從多個(gè)確定的第一函數(shù)F1A、FIB、F1C、...FlN中將第一個(gè)第一函數(shù)FlA和第二個(gè)第一函數(shù)FlB選擇為要清除的。最后借助第一個(gè)第二函數(shù)F2A的程序代碼和借助第二個(gè)第二函數(shù)F2B覆蓋所選擇的第一函數(shù)FlA和FlB的程序代碼。
[0027]借助顯示單元,在檢查程序代碼之后,第一個(gè)第二函數(shù)F2A和第二個(gè)第二函數(shù)F2B在此前的第一函數(shù)FlA和FlB的位置上存儲(chǔ),換句話說(shuō)代替所選擇的第一函數(shù)FlA和F1B。