本發(fā)明涉及一種用于產(chǎn)生用于在系統(tǒng)中運(yùn)行的程序的關(guān)鍵程序段(即所謂的criticalsection)期間阻止由中斷請(qǐng)求(即所謂的interruptrequest)引起的程序中斷的信號(hào)的電子裝置。
背景技術(shù):
:信息處理的實(shí)時(shí)系統(tǒng)、例如在現(xiàn)代機(jī)動(dòng)車中的控制儀具有多個(gè)連接的傳感器和由微控制器驅(qū)控的執(zhí)行器。為此由微控制器連續(xù)依次執(zhí)行不同程序。然而如果在程序執(zhí)行期間出現(xiàn)外部事件,即需要立即執(zhí)行另一程序,那么必須中斷當(dāng)前處理。這在微控制器中通過所謂的中斷實(shí)現(xiàn)。中斷觸發(fā)當(dāng)前程序的中斷并且開始在另一程序中處理外部事件,在所述另一程序結(jié)束之后繼續(xù)之前中斷的程序。然而,在具有實(shí)時(shí)要求的系統(tǒng)中,關(guān)鍵程序段的中斷是有問題的。為了遵循時(shí)間上的要求,當(dāng)前微控制器的中斷可以通過配置寄存器來激活或禁止。在處理關(guān)鍵程序段之前通過寫入配置寄存器來禁止中斷。在離開關(guān)鍵程序段之后又激活中斷。如果在關(guān)鍵程序段中調(diào)用如下函數(shù),該函數(shù)又包括關(guān)鍵程序段,這導(dǎo)致中斷的嵌套的禁止/激活。在汽車領(lǐng)域中的研究已經(jīng)得出,即經(jīng)常并嵌套地調(diào)用用于阻止和解禁中斷的函數(shù)引起在整個(gè)控制軟件中多達(dá)15%的額外開銷。技術(shù)實(shí)現(xiàn)要素:本發(fā)明基于如下問題,即降低特別是由于嵌套調(diào)用用于阻止和解禁中斷的函數(shù)的額外開銷。該問題利用按照本發(fā)明的根據(jù)權(quán)利要求1的裝置解決。按照本發(fā)明的裝置具有一個(gè)或多個(gè)控制輸入端;用于輸出用于阻止或解禁程序中斷的輸出信號(hào)的輸出端;一個(gè)或多個(gè)用于產(chǎn)生輸出信號(hào)的輸出信號(hào)產(chǎn)生器;以及計(jì)數(shù)器。按照本發(fā)明,通過所述一個(gè)或多個(gè)控制輸入端將控制信號(hào)讀入所述裝置中,該控制信號(hào)顯示在系統(tǒng)中運(yùn)行的程序的第一關(guān)鍵程序段的開始。如果這樣的信號(hào)讀入所述裝置中,那么計(jì)數(shù)器增加。之前計(jì)算器具有初始計(jì)數(shù)器讀數(shù),例如零。此外,利用所述輸出信號(hào)產(chǎn)生器,或者單獨(dú)亦或共同作用的輸出信號(hào)產(chǎn)生器產(chǎn)生用于阻止程序中斷的信號(hào),該信號(hào)輸出在所述輸出端上。所述通過所述一個(gè)或多個(gè)控制輸入端讀入的控制信號(hào)可以是如下指令,該指令促使計(jì)算器增加并且促使所述一個(gè)或多個(gè)輸出信號(hào)產(chǎn)生器產(chǎn)生用于阻止程序中斷的信號(hào)。所述信號(hào)但也可能是中斷請(qǐng)求本身,該中斷請(qǐng)求由按照本發(fā)明的裝置進(jìn)行分析。有利地可能的是,通過所述一個(gè)或多個(gè)控制輸入端可將控制信號(hào)讀入所述裝置中,所述控制信號(hào)顯示在所述系統(tǒng)中運(yùn)行的程序的第n(n是大于1的自然數(shù))關(guān)鍵程序段的開始。于是所述計(jì)數(shù)器基于這樣的控制信號(hào)而增加。通過計(jì)數(shù)器的增加可以檢測(cè)到關(guān)鍵程序段的調(diào)用嵌套。計(jì)數(shù)器讀數(shù)說明嵌套的程度,其用英語(yǔ)也表示為nestedness(嵌套性)。一旦在控制輸入端上具有如下控制信號(hào),所述控制信號(hào)顯示在系統(tǒng)中運(yùn)行的程序的第n關(guān)鍵程序段的結(jié)束,那么計(jì)數(shù)器可以減小。于是,如果通過所述一個(gè)或多個(gè)控制輸入端可將如下控制信號(hào)讀入所述裝置中,所述控制信號(hào)顯示在嵌入式系統(tǒng)中運(yùn)行的程序的第一關(guān)鍵程序段的結(jié)束,那么所述計(jì)數(shù)器可減小到初始計(jì)數(shù)器讀數(shù)。此外,利用所述一個(gè)或多個(gè)輸出信號(hào)產(chǎn)生器產(chǎn)生用于解禁程序中斷的信號(hào)并且在所述輸出端上輸出該信號(hào)。只有當(dāng)在系統(tǒng)上運(yùn)行的程序首先進(jìn)入的關(guān)鍵程序段運(yùn)行完并且結(jié)束時(shí),才離開程序在第一程序段開始之后所進(jìn)入的所有關(guān)鍵程序段。計(jì)數(shù)器的初始值優(yōu)選設(shè)為0。于是,計(jì)數(shù)器讀數(shù)直接說明嵌套程度。按照本發(fā)明的裝置可以具有數(shù)據(jù)輸入端和存儲(chǔ)器,利用其可將數(shù)據(jù)特別是數(shù)據(jù)字讀入所述裝置中并且可存儲(chǔ)在所述存儲(chǔ)器中。通過數(shù)據(jù)、特別是數(shù)據(jù)字的存儲(chǔ)可能性,系統(tǒng)寄存器、例如處理器狀態(tài)寄存器的數(shù)值可以存儲(chǔ)在按照本發(fā)明的裝置中。如果按照本發(fā)明的裝置此外也還具有數(shù)據(jù)輸出端,那么存儲(chǔ)在所述存儲(chǔ)器中的數(shù)據(jù)、特別是存儲(chǔ)在所述存儲(chǔ)器中的數(shù)據(jù)字可以傳輸給輸出端。所述裝置優(yōu)選如此設(shè)立,使得當(dāng)計(jì)數(shù)器達(dá)到了初始計(jì)數(shù)器讀數(shù)時(shí),實(shí)現(xiàn)這一點(diǎn)。因此在第一關(guān)鍵程序段開始時(shí)的寄存器內(nèi)容可以在結(jié)束之后傳回系統(tǒng)中。按照本發(fā)明的裝置可以是一種集成電路或由集成電路的部分構(gòu)成。所述集成電路可以除了按照本發(fā)明的裝置之外具有另外的電路部分、例如至少一個(gè)處理器內(nèi)核。所述一個(gè)或多個(gè)輸出信號(hào)產(chǎn)生器和/或存儲(chǔ)器可以具有一個(gè)或多個(gè)寄存器、復(fù)用器和/或分接器和/或邏輯門。按照本發(fā)明的裝置可以是微控制器的部分或另一嵌入式系統(tǒng)(embeddedsystem)的部分,所述微控制器或者嵌入式系統(tǒng)配備有對(duì)在微控制器中運(yùn)行的程序的關(guān)鍵程序段期間由中斷請(qǐng)求引起的程序中斷的阻止。微控制器或嵌入式系統(tǒng)可以具有存儲(chǔ)器映射的輸入/輸出端(memorymappedi/o,mmio)并且允許借助于存儲(chǔ)器訪問例程來訪問所述裝置,正如所述存儲(chǔ)器訪問例程可用于訪問微控制器的主存儲(chǔ)器那樣。附圖說明根據(jù)附圖以下進(jìn)一步闡述本發(fā)明。其中:圖1示出示例性的按照本發(fā)明的微控制器的架構(gòu)的示意圖;圖2示出按照?qǐng)D1的微控制器的示例性的按照本發(fā)明的裝置的示意框圖;圖3示出按照?qǐng)D2的按照本發(fā)明的裝置的示意圖;以及圖4示出在微處理器中用于存儲(chǔ)器訪問的地址結(jié)構(gòu)的示圖。具體實(shí)施方式圖1示出微控制器的基本已知的架構(gòu)。微控制器具有中央單元z和多個(gè)外圍單元p以及存儲(chǔ)器,所述存儲(chǔ)器在圖1中以指令ram和數(shù)據(jù)ram表示。中央單元可以通過存儲(chǔ)器映射(speicherabgebildet)的輸入/輸出端mmio來訪問數(shù)據(jù)ram存儲(chǔ)器和外圍單元p。外圍單元之一是按照本發(fā)明的裝置,其在圖1中以eei_ext表示。但原則上也可設(shè)想微控制器或嵌入式系統(tǒng)的其他架構(gòu),其中對(duì)按照本發(fā)明的裝置的訪問不通過存儲(chǔ)器映射的輸入/輸出端實(shí)現(xiàn)。通過借助于存儲(chǔ)器映射的輸入/輸出端來訪問按照本發(fā)明的裝置,按照本發(fā)明的裝置可以容易地集成到現(xiàn)有的微控制器的架構(gòu)中。在存儲(chǔ)器映射的輸入/輸出端中分配微控制器的數(shù)據(jù)存儲(chǔ)器的地址空間并且將地址空間的一部分用于訪問外圍單元。圖4以一般的微控制器架構(gòu)為例示出分配數(shù)據(jù)存儲(chǔ)器的地址空間的一種可能性。示例性示出的32位地址的最高位在此確定:應(yīng)將微控制器的處理器內(nèi)核的詢問轉(zhuǎn)發(fā)給數(shù)據(jù)存儲(chǔ)器還是外圍單元。應(yīng)將訪問轉(zhuǎn)發(fā)給內(nèi)部外圍單元還是外部外圍單元由地址的次最高位確定。隨后的5位尋址外圍單元,地址的剩余位可以用于尋址數(shù)據(jù)存儲(chǔ)器或用于尋址在外圍單元內(nèi)的構(gòu)件。本發(fā)明的重要特征在于,提供一種專用外圍單元用于處理在嵌入式系統(tǒng)中、例如微控制器中嵌套的程序中斷。按照本發(fā)明的外圍單元——如其在圖2和3中示出的那樣——基本上由三個(gè)構(gòu)件組成,即一個(gè)具有用于連接到微控制器其余部分的地址解碼器的輸入級(jí)1、一個(gè)用于存儲(chǔ)微控制器的狀態(tài)寄存器的32位寄存器2以及一個(gè)用于監(jiān)控關(guān)鍵程序段的嵌套層的數(shù)字4位計(jì)數(shù)器3。構(gòu)件的驅(qū)控通過所述輸入級(jí)1實(shí)現(xiàn)。所述輸入級(jí)分析如下控制信號(hào):ce(用于芯片使能)、we(寫入使能)和addr(地址)。這些控制信號(hào)是如下地址的部分,所述地址可以用于尋址存儲(chǔ)器和在外圍單元內(nèi)的構(gòu)件(參見圖4)。在信號(hào)ce激活輸入級(jí)期間,信號(hào)we確定對(duì)外圍單元eei_ext或按照本發(fā)明的裝置eei_ext的訪問類型。這在以下圖表中示出:cewe訪問類型10讀訪問11寫訪問00輸入級(jí)非激活01輸入級(jí)非激活在寫訪問時(shí)通過數(shù)據(jù)輸入端data_in將數(shù)據(jù)寫入按照本發(fā)明的裝置中。在讀訪問時(shí)可以通過數(shù)據(jù)輸出端data_out將數(shù)據(jù)從按照本發(fā)明的裝置中讀取。輸入信號(hào)reset_n用于在微控制器復(fù)位過程中同樣復(fù)位按照本發(fā)明的單元eei_ext的寄存器和計(jì)數(shù)器。在輸入級(jí)(ce=1)激活時(shí),施加的地址的最低位確定要執(zhí)行的動(dòng)作,如在以下表格中所示:地址cewe動(dòng)作0x8820000011計(jì)數(shù)器增加并且寫寄存器0x8820000010讀訪問,在數(shù)據(jù)輸出端上為寄存器內(nèi)容0x8820000111計(jì)數(shù)器減小0x8820000110讀訪問,在數(shù)據(jù)輸出端上為零在介紹的例子中僅使用在外圍單元內(nèi)總共225種可能的地址中的兩個(gè)地址。這使得能實(shí)現(xiàn),可以擴(kuò)展地址解碼器并因此擴(kuò)展按照本發(fā)明的裝置的功能性。程序中斷的阻止和解禁通過在輸出端eei_bit上的輸出信號(hào)實(shí)現(xiàn),該輸出端用于輸出用于阻止和解禁程序中斷的輸出信號(hào),該輸出信號(hào)通過按照本發(fā)明的裝置的邏輯電路根據(jù)嵌套層、亦即數(shù)字計(jì)數(shù)器的計(jì)數(shù)器讀數(shù)和輸入寄存器的內(nèi)容而設(shè)置。在首次執(zhí)行關(guān)鍵程序段時(shí)除了阻止程序中斷之外必須在按照本發(fā)明的實(shí)施例中附加地存儲(chǔ)微控制器的處理器狀態(tài)寄存器的內(nèi)容。這在程序代碼中通過寫訪問按照本發(fā)明的裝置的地址0x88200000實(shí)現(xiàn)。按照第二表格在寫訪問該地址時(shí)計(jì)數(shù)器增加數(shù)值1。施加在數(shù)據(jù)輸入端data_in上的數(shù)據(jù)被存儲(chǔ)在按照本發(fā)明的裝置的輸入寄存器中并且同時(shí)通過裝置的邏輯電路將在輸出端eei_bit上的輸出信號(hào)設(shè)置為1。由此阻止程序中斷。輸出信號(hào)在此阻止由連接的微控制器的所謂的中斷控制器(interrupt-controller)引起的程序中斷。在微控制器中執(zhí)行的程序的關(guān)鍵程序段內(nèi)可以存在如下函數(shù)調(diào)用,所述函數(shù)調(diào)用同樣包含關(guān)鍵程序段。所述關(guān)鍵程序段導(dǎo)致嵌套。關(guān)鍵程序段的調(diào)用導(dǎo)致寫訪問地址0x88200000,以便阻止程序中斷。所述寫訪問導(dǎo)致在按照本發(fā)明的裝置內(nèi)計(jì)數(shù)器的增加并且在第二次調(diào)用在微控制器內(nèi)執(zhí)行的程序的關(guān)鍵程序段時(shí)達(dá)到數(shù)值2。通過更新的用于禁止程序中斷的指令不改變?cè)谳敵龆薳ei_bit上輸出信號(hào)的狀態(tài)。輸出信號(hào)還具有數(shù)值1。程序中斷因此還保持阻止。為了在離開所有關(guān)鍵程序段之后又可以建立存儲(chǔ)在按照本發(fā)明的裝置的輸入寄存器中的狀態(tài)寄存器的狀態(tài),輸入寄存器應(yīng)在更新寫訪問時(shí)在進(jìn)入第二或較高關(guān)鍵程序段的情況下不被覆蓋。這通過如下邏輯電路確保,所述邏輯電路在計(jì)數(shù)器讀數(shù)不等于零時(shí)阻止寫入輸入寄存器。在處理關(guān)鍵程序段的指令之后進(jìn)行寫訪問地址0x88200001,以便離開關(guān)鍵程序段并且又解禁程序中斷。計(jì)數(shù)器在此按照第二表格減小數(shù)值1。因?yàn)橛?jì)數(shù)器讀數(shù)之前具有數(shù)值2,所以在輸出端eei_bit上的輸出信號(hào)不變。程序中斷還保持阻止。只有當(dāng)最后的關(guān)鍵程序段結(jié)束(計(jì)數(shù)器在最后的關(guān)鍵程序段期間具有數(shù)值1)時(shí),通過寫訪問地址0x88200001將計(jì)數(shù)器減小數(shù)值1并且計(jì)數(shù)器讀數(shù)達(dá)到零。由此在輸出端eei_bit上的輸出信號(hào)設(shè)置為數(shù)值0并且由此又解禁微控制器的中斷控制器。在讀訪問(ce=1并且we=0)按照本發(fā)明的裝置的地址0x88200000時(shí),存儲(chǔ)在按照本發(fā)明的裝置的輸入寄存器中的數(shù)據(jù)通過數(shù)據(jù)輸出端data_out輸出。在其他讀訪問時(shí),在數(shù)據(jù)輸出端上輸出數(shù)值零。附圖標(biāo)記列表:z中央單元p外圍單元eei_ext按照本發(fā)明的裝置1具有用于連接微控制器其余部分的地址解碼器的輸入級(jí)2用于存儲(chǔ)微控制器的狀態(tài)寄存器的32位寄存器3數(shù)字4位計(jì)數(shù)器當(dāng)前第1頁(yè)12