用于影響控制程序的方法和建模系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種根據(jù)權(quán)利要求1的前序部分所述的用于影響控制程序的方法以及一種用于執(zhí)行所述方法的建模系統(tǒng)。
【背景技術(shù)】
[0002]由DE 10 2004 027 033 Al已知一種用于影響控制程序的方法。
[0003]電子控制器在大量復(fù)雜的技術(shù)系統(tǒng)中、特別是機動車輛中用于完成調(diào)節(jié)任務(wù)。當(dāng)然,控制器程序、下面稱為控制程序多數(shù)具有多個子程序,其中常見的控制程序使用10000個或更多個控制變量.利用在控制器中執(zhí)行的控制程序主要對執(zhí)行器,例如噴油嘴或電動轉(zhuǎn)向機進行操控,讀取傳感器的值、例如轉(zhuǎn)速傳感器或加速度傳感器、空氣量傳感器或廢氣探測器的值,并對這些值進行分析評估和處理。由于可能對于安全性重要的應(yīng)用,在很多控制器中對于控制程序的可靠性和無故障性上提出了很高的要求。相應(yīng)地,開發(fā)也是復(fù)雜的并且在要進行大量的系列測試。這里希望的是,在開發(fā)和再開發(fā)或繼續(xù)開發(fā)或者測試控制器時,就已經(jīng)對控制程序的函數(shù)或至少對控制程序的函數(shù)的變量進行改變。為此目的由現(xiàn)有技術(shù)已知專門的服務(wù)函數(shù),所述函數(shù)設(shè)計成,使控制程序的第一功能失效并通過事后植入的第二功能替代第一功能,其方式例如是,由第一函數(shù)描述的變量事后用第二函數(shù)的輸出來描述。服務(wù)函數(shù)的調(diào)用或者可以在控制程序的開發(fā)期間在所謂的源代碼層面嵌入程序代碼中,或者所述服務(wù)函數(shù)在完成控制程序之后事后嵌入。
[0004]希望根據(jù)上面的說明對控制程序進行改變并為此目的例如希望事后將服務(wù)函數(shù)嵌入控制程序代碼中的函數(shù)開發(fā)人員或測試工程師通常不能獲得控制程序的源代碼。但通常能夠獲得例如十六進制或srec文件形式的二進制碼連同所屬的例如ASAP2文件形式的控制器說明文件,用于對控制器進行校正、測量或閃存編程。如上一段所述,對控制程序的函數(shù)的改變此時必須基于控制程序的二進制碼進行。但此時對于負責(zé)這項任務(wù)的開發(fā)人員面臨這樣的問題,即,要識別二進制碼的要改變的函數(shù)。對二進制碼的也稱為句法剖析(parsing)的分析盡管允許識別函數(shù)調(diào)用和這種函數(shù)調(diào)用所屬的存儲器地址,但這種調(diào)用不能簡單地與與確定的函數(shù)對應(yīng)。換而言之,盡管可以確認,一個函數(shù)存儲在確定的存儲器地址,但不能確認該函數(shù)是控制程序的哪個函數(shù)。
【發(fā)明內(nèi)容】
[0005]在這個背景下,本發(fā)明的目的在于,給出一種方法和一種建模系統(tǒng)來改進現(xiàn)有技術(shù)。
[0006]所述目的通過具有權(quán)利要求1的特征的用于影響控制程序的方法來實現(xiàn)。本發(fā)明有利的實施形式是從屬權(quán)利要求的主題。
[0007]根據(jù)本發(fā)明的主題,提供一種用于影響控制器的控制程序的方法,所述控制程序具有多個第一函數(shù)和分配給第一函數(shù)的子程序,所述第一函數(shù)中的至少一個第一函數(shù)構(gòu)造成用于控制執(zhí)行器,所述控制器具有第一存儲器用于存放控制程序,在控制程序的程序代碼中在調(diào)用其中一個第一函數(shù)時存在轉(zhuǎn)移地址并且所述轉(zhuǎn)移地址指向與該函數(shù)調(diào)用相關(guān)聯(lián)的第一函數(shù)的存儲器地址,并且所調(diào)用第一函數(shù)或其相配的子程序作為二進制的程序代碼序列存在,在程序代碼的序列的末尾處存在返回指令,所述返回指令帶有分配給該返回指令的返回地址,并且所調(diào)用的第一函數(shù)的程序代碼的序列包含第一數(shù)量的變量訪問,即寫訪問和/或讀訪問,并給每個變量訪問分配一個存儲器地址,并且給至少一個變量分配第一值,其中,檢查控制程序中函數(shù)調(diào)用的出現(xiàn),并確定函數(shù)調(diào)用的地址,并檢查第一函數(shù)的程序代碼中的變量訪問以及確定與相應(yīng)的第一函數(shù)相關(guān)聯(lián)的讀和寫的變量的地址,并且將所確定的第一函數(shù)和分配給相應(yīng)的第一函數(shù)的變量地址連同與第一函數(shù)調(diào)用相關(guān)聯(lián)的轉(zhuǎn)移地址存儲在第一分配表中,并通過第一分配表與預(yù)先規(guī)定的第二分配表的比較,給第一函數(shù)的至少一部分分配函數(shù)名,并用第二值替代其中一個變量的至少一個第一值。根據(jù)本發(fā)明,預(yù)先規(guī)定的第二分配表至少包含控制程序的變量與其存儲器地址的對應(yīng)關(guān)系以及控制程序的函數(shù)與由相應(yīng)函數(shù)出發(fā)訪問的變量的對應(yīng)關(guān)系。
[0008]這里要指出,與第一函數(shù)相關(guān)聯(lián)的轉(zhuǎn)移地址附加地存儲在第一分配表中。此外,還要指出,用語“影響”與用語“改變”等效地使用。此外,這里對程序的改變也是指對至少一個變量的改變,特別是對影響執(zhí)行器功能的變量的改變。變量的改變根據(jù)本發(fā)明也可以直接訪問分配給變量的存儲器地址實現(xiàn)。一個變量的改變根據(jù)本發(fā)明還可以通過改變控制程序代碼中的寫規(guī)則來實現(xiàn),特別是這樣改變,即,使包含對于該變量的寫規(guī)定的函數(shù)失效,并且該函數(shù)通過另一個具有對于該變量的另外的寫規(guī)定的函數(shù)來替代。一個變量的改變根據(jù)本發(fā)明還可以這樣實現(xiàn),即,使控制程序代碼中對該變量的寫訪問失效。
[0009]根據(jù)本發(fā)明的方法的優(yōu)點在于,能夠在不知道程序代碼和/或源代碼的情況下以簡單的方式改變或影響控制器的控制程序。特別是根據(jù)本發(fā)明的方法允許,識別控制程序的二進制代碼中的預(yù)先規(guī)定的函數(shù)并且在后面改變或替換所述函數(shù)。為此,通過根據(jù)本發(fā)明的當(dāng)前方法確定,哪些函數(shù)名連同與給這些函數(shù)名相配的變量屬于在控制程序的二進制代碼中發(fā)現(xiàn)的函數(shù)調(diào)用的哪些地址。
[0010]特別是可以事后影響已經(jīng)裝配的控制器的控制程序。為此,利用現(xiàn)有的接口,特別是借助為此設(shè)置的影響裝置,例如dSPACE DC1-GSI2。另一個優(yōu)點是,通過識別存在于程序中的第一函數(shù),在很多情況下可以不必獲知程序代碼或者不需要存在第一函數(shù)的完整文檔。特別是當(dāng)確定的函數(shù)的基本功能以及由該函數(shù)寫和讀的變量已知時,可以通過在現(xiàn)有技術(shù)中作為函數(shù)繞行已知的方法使該函數(shù)失效并用具有類似功能的函數(shù)替代該函數(shù),前提是,在控制程序的二進制代碼中要替代的函數(shù)的存儲器地址是已知的。通過所述方法確定二進制代碼中的第一函數(shù)或其地址以及在所述第一函數(shù)中讀和寫的變量的地址,并將其存儲在第一分配表中。通過與預(yù)先規(guī)定的第二分配表的比較,可以給所調(diào)用的第一函數(shù)的存儲器地址分配函數(shù)名。
[0011]在一個改進方案中,在檢查控制程序的程序代碼時,對于相應(yīng)的變量確定相配的讀訪問和相配的寫訪問并將其存入第一分配表中。在將第一分配表與預(yù)先規(guī)定的第二分配表比較時,檢查與變量相配的讀訪問和相配的寫訪問的一致性。此時有利的是,通過顯示單元示出一致性程度。
[0012]在另一個改進方案中,在第二分配表中給每個第一函數(shù)分配一個函數(shù)名和確定數(shù)量的變量,其中,每個變量具有名稱和存儲器地址并且在比較時對于存儲在第一分配表中的第一函數(shù)根據(jù)至少在兩個分配表中在相應(yīng)的第一函數(shù)下存儲的變量的數(shù)量和名稱方面的一致性程度來指派函數(shù)名,并示出一致性程度。有利的是,僅在完全一致或僅在一致性在一個閾值以上時才自動執(zhí)行函數(shù)名的指派。
[0013]在一個實施形式中,當(dāng)?shù)谝环峙浔砗偷诙峙浔碇g在變量的數(shù)量和名稱方面的一致性不完全時,替代自動指派函數(shù)名,執(zhí)行手動指派。為此例如可以在顯示單元中對比顯示所確定的第一函數(shù)連同所發(fā)現(xiàn)的變量的數(shù)量和名稱并顯示在第二分配表中列出的所發(fā)現(xiàn)的變量的數(shù)量和名稱。也可以在相同的顯示單元中對于每個函數(shù)顯示描述一致性程度的參量,例如為用百分比表示的一致性。
[0014]在一個本發(fā)明的有利的實施形式中,如果對于在控制程序中發(fā)現(xiàn)的函數(shù)調(diào)用沒有發(fā)現(xiàn)具有相同數(shù)量和名稱的變量的函數(shù)名,則采用探索法。有利的是,告知使用者具有最大一致性的函數(shù)名。在另一個有利的實施形式中,如果不存在完全的一致,則輸出指示,并告知一致性程度。這種探索法是有利的,因為在實用中,第一和第二分配表在內(nèi)容上可能是彼此不同的,特別是可能出現(xiàn)這樣的情況,分配給函數(shù)的變量或函數(shù)調(diào)用被個別錯誤地分配,或所分配的變量或函數(shù)調(diào)用部分地沒有記錄在文檔中,或者在分析二進制代碼時被疏漏。
[0015]在一個優(yōu)選的實施形式中,只有當(dāng)在比較時一致性程度超過預(yù)先規(guī)定的閾值時,才執(zhí)行輸出。換而言之,只有當(dāng)在兩個分配表之間進行比較時對于變量的數(shù)量和名稱一致性程度超過所述閾值時,才在顯示單元中示出第一函數(shù)。所述閾值優(yōu)選為至少50%、最優(yōu)選為至少80%。
[0016]在另一個實施形式中,如果在比較兩個分配表時,對于在檢查控制程序中(發(fā)現(xiàn))的第一函數(shù),都沒有確定存在完全的一致性,則通過影響裝置輸出消息。
[0017]在一個優(yōu)選的實施形式中,只有當(dāng)在比較時一致性程度超過閾值時,才自動給一個函數(shù)指派函數(shù)名。在一個可能的實施形式中,只有當(dāng)在比較時一致性程度超過預(yù)先規(guī)定的或能預(yù)先規(guī)定的閾值時,才自動給一個函數(shù)指派函數(shù)名。在另一個可能的實施形式中,恰好當(dāng)在比較時一致性程度超過第一閾值,并且同時一致性次佳的函數(shù)名的一致性程度低于第二閾值時,才自動給一個函數(shù)指派函數(shù)名。在另一個可能的實施形式中,恰好當(dāng)在比較時一個函數(shù)的一致性程度超過預(yù)先規(guī)定的或能預(yù)先規(guī)定的第一閾值并且同時該函數(shù)的一致性程度與一致性次佳的函數(shù)的一致性程度的差值超過預(yù)先規(guī)定的或能預(yù)先規(guī)定的第二閾值時,才自動給該函數(shù)指派函數(shù)名。
[0018]在另一個實施形式中,利用對比樣本來驗證比較的結(jié)果。