本發(fā)明涉及一種測量方法,尤其是一種基于邏輯分析儀的CPU內(nèi)部中斷響應(yīng)時間和恢復(fù)時間的測量方法。
背景技術(shù):
目前,國內(nèi)的發(fā)動機(jī)控制軟件,不管是采用多重中斷框架的軟件還是采用實(shí)時操作系統(tǒng)的軟件,都避免不了使用CPU內(nèi)部中斷,例如CPU自帶的定時器中斷或者通過指令觸發(fā)的其它軟中斷,而且這些內(nèi)部中斷通常扮演著重要的角色,比如實(shí)時調(diào)度的時鐘節(jié)拍中斷。
中斷響應(yīng)時間和恢復(fù)時間是實(shí)時操作系統(tǒng)或者多重中斷系統(tǒng)最重要的性能指標(biāo)之一,中斷響應(yīng)時間是指中斷請求產(chǎn)生到處理器(CPU)開始處理用戶程序之間的時間,中斷恢復(fù)時間是指處理器返回到被中斷代碼所需的時間。中斷響應(yīng)時間和恢復(fù)時間映著系統(tǒng)對于外部事件響應(yīng)的速度,對于分析實(shí)時系統(tǒng)的實(shí)時性能具有重要意義,特別是對于中斷切換頻率的系統(tǒng),這兩個時間占用的系統(tǒng)運(yùn)行時間越大。中斷響應(yīng)時間和恢復(fù)時間的精確測量,不僅為控制軟件的前期架構(gòu)設(shè)計提供了重要的參考依據(jù),而且直接關(guān)系到保證后期控制器產(chǎn)品的性能。
國外的發(fā)動機(jī)控制軟件的有限技術(shù)資料中雖然也有提到操作系統(tǒng)用到CPU內(nèi)部中斷,但未找到中斷測量的具體的指導(dǎo)和實(shí)施方法。國內(nèi)的發(fā)動機(jī)控制軟件在此之前對于中斷響應(yīng)時間和恢復(fù)時間這兩個性能一直缺乏足夠的關(guān)注,也沒有對它們的測量有著明確的指導(dǎo)方法,且對于CPU內(nèi)部中斷這兩個指標(biāo)的測量的難點(diǎn)在于中斷請求事件和中斷返回時刻點(diǎn)的捕獲,不像外部中斷有中斷請求的硬件信號可以觀察。其它行業(yè)有關(guān)程序運(yùn)行時間的測量方法,是運(yùn)用CPU自帶定時器來進(jìn)行測量,它對于普通順序執(zhí)行的時間測量能達(dá)到精確的效果,但對于內(nèi)部中斷這兩個時間指標(biāo)的測量,因為缺乏對測量點(diǎn)的捕獲,會造成很大的精確度損失。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是克服現(xiàn)有技術(shù)中存在的不足,提供一種基于邏輯分析儀的CPU內(nèi)部中斷響應(yīng)時間和恢復(fù)時間的測量方法,其操作方便,能實(shí)現(xiàn)對CPU內(nèi)部中斷響應(yīng)時間以及恢復(fù)時間的精確測量,減少系統(tǒng)運(yùn)行時間和時序分析的偏差,安全可靠。
按照本發(fā)明提供的技術(shù)方案,一種基于邏輯分析儀的CPU內(nèi)部中斷響應(yīng)時間和恢復(fù)時間的測量方法,所述測量方法包括如下步驟:
S1、選取CPU的兩個GPIO口,并將所選取的兩個GPIO口配置為通用輸出接口且初始化為低電平輸出,所述兩個GPIO口分別標(biāo)識為GPIO1口以及GPIO2口;CPU通過GPIO1口、GPIO2口分別與邏輯分析儀匹配連接,在GPIO1口的電平處于上升沿時,邏輯分析儀采集并保存GPIO1口、GPIO2口對應(yīng)的電平信號;
步驟S2、選定CPU的軟件可觸發(fā)中斷,并在軟件可觸發(fā)中斷觸發(fā)前,翻轉(zhuǎn)GPIO1口的電平,以使得邏輯分析儀對GPIO1口、GPIO2口對應(yīng)的電平信號進(jìn)行采集與保存;
步驟S3、觸發(fā)所選定的軟件可觸發(fā)中斷,并連續(xù)N次翻轉(zhuǎn)GPIO1口的電平信號,且在中斷處理過程中進(jìn)行插樁,以使得在響應(yīng)的軟中斷處理函數(shù)開始位置翻轉(zhuǎn)GPIO1口的電平,并在中斷處理函數(shù)結(jié)束位置將GPIO2口的電平置高;
步驟S4、在上述軟件可觸發(fā)中斷恢復(fù)后且GPIO1電平變化后,邏輯分析儀停止對GPIO1口、GPIO2口對應(yīng)電平信號的采集,并對記錄GPIO1口、GPIO2口對應(yīng)的電平信號進(jìn)行分析,以確定中斷響應(yīng)時間T1以及恢復(fù)時間T2。
步驟S3中,在軟件可觸發(fā)中斷觸發(fā)后,連續(xù)N次翻轉(zhuǎn)GPIO1口的電平信號時,(N-2)*相鄰兩側(cè)翻轉(zhuǎn)GPIO1口電平的間隔時間大于軟件可觸發(fā)中斷的觸發(fā)到CPU中止執(zhí)行當(dāng)前程序指令的時間,N大于等于3。
步驟S2中,選定CPU的軟件可觸發(fā)中斷后,屏蔽CPU的其余中斷。
本發(fā)明的優(yōu)點(diǎn):將CPU的GPIO1口、GPIO2口與邏輯分析儀連接,通過邏輯分析儀采集并記錄GPIO1口、GPIO2口對應(yīng)的電平信號,通過GPIO1口、GPIO2口對應(yīng)電平信號的翻轉(zhuǎn)變化,能夠測量得到CPU內(nèi)部中斷的中斷響應(yīng)時間以及中斷恢復(fù)時間,操作方便,減少系統(tǒng)運(yùn)行時間和時序分析的偏差,安全可靠。
附圖說明
圖1為本發(fā)明的流程圖。
圖2為本發(fā)明邏輯分析儀采集GPIO1口、GPIO2口對應(yīng)電平信號的示意圖。
具體實(shí)施方式
下面結(jié)合具體附圖和實(shí)施例對本發(fā)明作進(jìn)一步說明。
如圖1所示:能實(shí)現(xiàn)對CPU內(nèi)部中斷響應(yīng)時間以及恢復(fù)時間的精確測量,避免系統(tǒng)運(yùn)行時間和時序分析的偏差,本發(fā)明的測量方法包括如下步驟:
S1、選取CPU的兩個GPIO口,并將所選取的兩個GPIO口配置為通用輸出接口且初始化為低電平輸出,所述兩個GPIO口分別標(biāo)識為GPIO1口以及GPIO2口;CPU通過GPIO1口、GPIO2口分別與邏輯分析儀匹配連接,在GPIO1口的電平處于上升沿時,邏輯分析儀采集并保存GPIO1口、GPIO2口對應(yīng)的電平信號;
具體地,對于選取的CPU,選取兩個GPIO口,并將所選取的GPIO口配置為通用輸出接口,并將所述GPIO口初始化為低電平輸出的具體過程為本技術(shù)領(lǐng)域人員所熟知,此處不再贅述。邏輯分析儀與CPU連接時,將CPU的GPIO1口、GPIO2口分別與邏輯分析儀的兩個連接輸入通道連接,邏輯分析儀的地線與CPU的地線連接,邏輯分析儀與CPU具體的連接配合為本技術(shù)領(lǐng)域人員所熟知,此處不再贅述。一般地,邏輯分析儀的具有較高的采樣精度,邏輯分析儀的工作參數(shù)可以為主頻100M,采樣精度為2ns。由于GPIO1口、GPIO2口均被初始化為低電平輸出,在邏輯分析儀與CPU連接后,當(dāng)且僅當(dāng)GPIO1口的電平處于上升沿時,邏輯分析儀才會采集及保存GPIO1口、GPIO2口對應(yīng)的電平信號。
步驟S2、選定CPU的軟件可觸發(fā)中斷,并在軟件可觸發(fā)中斷觸發(fā)前,翻轉(zhuǎn)GPIO1口的電平,以使得邏輯分析儀對GPIO1口、GPIO2口對應(yīng)的電平信號進(jìn)行采集與保存;
本發(fā)明實(shí)施例中,選取CPU內(nèi)部的軟件可觸發(fā)中斷,即在CPU上運(yùn)行對應(yīng)的軟件,通過軟件觸發(fā)對應(yīng)的內(nèi)部中斷,從而能夠?qū)崿F(xiàn)中斷響應(yīng)時間和恢復(fù)時間的測量。選定CPU的軟件可觸發(fā)中斷后,屏蔽CPU的其余中斷,以避免產(chǎn)生多中斷搶占或嵌套的情況。由步驟1可知,由于GPIO1口初始化為低電平輸出,因此,在翻轉(zhuǎn)GPIO1口的電平后,使得GPIO1口具有上升沿,此時,邏輯分析儀能夠?qū)崿F(xiàn)對GPIO1口、GPIO2口對應(yīng)電平信號的采集與存儲。
步驟S3、觸發(fā)所選定的軟件可觸發(fā)中斷,并連續(xù)N次翻轉(zhuǎn)GPIO1口的電平信號,且在中斷處理過程中進(jìn)行插樁,以使得在響應(yīng)的軟中斷處理函數(shù)開始位置翻轉(zhuǎn)GPIO1口的電平,并在中斷處理函數(shù)結(jié)束位置將GPIO2口的電平置高;
本發(fā)明實(shí)施例中,在軟件可觸發(fā)中斷觸發(fā)后,連續(xù)N次翻轉(zhuǎn)GPIO1口的電平信號時,(N-2)*相鄰兩側(cè)翻轉(zhuǎn)GPIO1口電平的間隔時間大于軟件可觸發(fā)中斷的觸發(fā)到CPU中止執(zhí)行當(dāng)前程序指令的時間,N大于等于3。所述軟件可觸發(fā)中斷的觸發(fā)到CPU中止執(zhí)行當(dāng)前程序指令的時間可以從CPU手冊中查詢得到;具體實(shí)施時,可以通過軟件指令,實(shí)現(xiàn)GPIO1口的電平信號翻轉(zhuǎn)。
軟件可觸發(fā)中斷通過軟件指令實(shí)現(xiàn)觸發(fā),具體觸發(fā)過程為本技術(shù)領(lǐng)域人員所熟知。在中斷處理過程中,通過在響應(yīng)的軟中斷處理函數(shù)開始位置翻轉(zhuǎn)GPIO1口的電平,能夠?qū)崿F(xiàn)捕獲CPU開始處理中斷用戶程序的時刻點(diǎn),通過在中斷處理函數(shù)結(jié)束位置將GPIO2口的電平置高,能夠?qū)崿F(xiàn)捕獲中斷用戶程序執(zhí)行完畢的時刻點(diǎn),可以采用本技術(shù)領(lǐng)域常用的技術(shù)手段實(shí)現(xiàn)在中斷處理過程中的插樁,具體實(shí)施過程為本技術(shù)領(lǐng)域人員所熟知,此處不再贅述。
在對軟件可觸發(fā)中斷進(jìn)行觸發(fā)后,連續(xù)N次翻轉(zhuǎn)GPIO1口的電平信號時,利用N次翻轉(zhuǎn)GPIO1口的電平信號中的第M次翻轉(zhuǎn)(M=取整(軟中斷觸發(fā)到CPU中止執(zhí)行當(dāng)前程序指令的時間/兩次翻轉(zhuǎn)CPIO1之間的間隔時間 + 1),M大于等于1)能模擬捕獲CPU內(nèi)部中斷請求的產(chǎn)生,在第M次翻轉(zhuǎn)GPIO1口的電平信號后,CPU進(jìn)入中斷處理過程,通過上述的時間設(shè)置,后續(xù)的翻轉(zhuǎn)GPIO1口的電平信號能夠?qū)崿F(xiàn)捕獲CPU返回到原程序的時間點(diǎn)以及用于觀察中斷恢復(fù)后的軟件執(zhí)行狀態(tài)。
步驟S4、在上述軟件可觸發(fā)中斷恢復(fù)后且GPIO1電平變化后,邏輯分析儀停止對GPIO1口、GPIO2口對應(yīng)電平信號的采集,并對記錄GPIO1口、GPIO2口對應(yīng)的電平信號進(jìn)行分析,以確定中斷響應(yīng)時間T1以及恢復(fù)時間T2。
本發(fā)明實(shí)施例中,邏輯分析儀對GPIO1口、GPIO2口對應(yīng)電平信號的采樣受限于邏輯分析儀的存儲能力等限制,但至少需要保證能對GPIO1口、GPIO2口對應(yīng)電平信號的采樣至軟件可觸發(fā)中斷恢復(fù)后,具體實(shí)施時,可以設(shè)置邏輯分析儀的采樣停止條件,所述采樣停止條件可以根據(jù)需要進(jìn)行確定,此處不再贅述。在停止采樣后,對記錄的GPIO1口、GPIO2口對應(yīng)的電平信號進(jìn)行分析。
如圖2所示,根據(jù)中斷響應(yīng)時間和中斷恢復(fù)時間的定義,T1是中斷響應(yīng)時間,從圖示T1開始位置:GPIO1口電平的下降沿代表中斷請求產(chǎn)生,到T1結(jié)束位置:GPIO1口電平的上升沿代表CPU開始處理中斷用戶程序,從邏輯分析儀上讀出T1結(jié)束位置與開始位置的時間差,從而得到中斷響應(yīng)時間T1。
對中斷恢復(fù)時間T2,圖中,T2開始位置:GPIO2口對應(yīng)的上升沿代表中斷用戶程序執(zhí)行完畢, T2結(jié)束位置:GPIO1口電平的下降沿代表CPU返回到原程序時刻點(diǎn),從邏輯分析儀上讀出T2結(jié)束位置與開始位置的時間差,即能得到中斷恢復(fù)時間T2。
以CPU采用處理器TMS320F2812,CPU運(yùn)行發(fā)動機(jī)控制軟件,測量的內(nèi)部中斷是RTOSINT中斷對應(yīng)的中斷響應(yīng)時間T1以及中斷恢復(fù)時間T2為例,對本發(fā)明的具體實(shí)施過程進(jìn)行說明。具體地,
在控制軟件的啟動段之后,配置GPIOA10和GPIOD6兩個管腳為通用輸出功能,初始化為輸出低電平,確保這兩個管腳不在其它無關(guān)本次測量插樁代碼中使用,屏蔽其它中斷。連接兩個GPIOA10和GPIOD6信號和接地線到邏輯分析儀的兩個通道ch1、ch2和地線ch_Gnd,設(shè)置邏輯分析儀的采集精度為2ns,觸發(fā)條件為GPIOA10的上升沿觸發(fā)并保存數(shù)據(jù)。
在置RTOSINT中斷標(biāo)志位前,置GPIOA的數(shù)據(jù)寄存器值的第10位為1,GPIOA10為高電平,在置RTOSINT中斷標(biāo)志位后,反復(fù)置GPIOA的數(shù)據(jù)寄存器值的第10位為1或者0,然后達(dá)到翻轉(zhuǎn)GPIOA10電平五次的效果。
在響應(yīng)的軟中斷處理函數(shù)開始位置翻轉(zhuǎn)GPIOA10對應(yīng)的數(shù)據(jù)寄存器位的值,在中斷處理函數(shù)結(jié)束位置將GPIOD6的數(shù)據(jù)寄存器位置為1,GPIOD6輸出高電平。
邏輯分析儀采集并分析上述記錄的數(shù)據(jù),從而能得到中斷響應(yīng)時間T1以及中斷恢復(fù)時間T2。具體地,利用GPIO的快速輸出硬件特性(在TMS320F2812的GPIO翻轉(zhuǎn)電平需要的時間是40ns,翻轉(zhuǎn)GPIO用的指令只是1-3條CPU指令,占用時間最多為25ns),GPIO的電平變化時刻近似表達(dá)中斷請求產(chǎn)生、CPU開始處理中斷用戶程序、中斷用戶程序執(zhí)行完畢和CPU返回到被中斷代碼四個時刻點(diǎn),中斷響應(yīng)和恢復(fù)時間測量的誤差最多是25ns,這比定時器獲取計數(shù)值的函數(shù)(包括函數(shù)出入棧的時間和函數(shù)處理時間)造成的誤差要小,通過邏輯分析儀的高精度捕獲GPIO信號的電平變化,然后通過分析數(shù)據(jù),得出中斷響應(yīng)時間T1和中斷恢復(fù)時間T2,測量結(jié)果的精度在100M左右的處理器上能到達(dá)幾十ns左右。
按上述過程,可較為精確的測得發(fā)動機(jī)控制軟件的RTOSINT中斷響應(yīng)時間T1和中斷恢復(fù)時間T2,與理論分析符合,這為系統(tǒng)的時序和時間分析和驗證提供基礎(chǔ),為產(chǎn)品性能的評估和驗證提供了基礎(chǔ)保證。
本發(fā)明將CPU的GPIO1口、GPIO2口與邏輯分析儀連接,通過邏輯分析儀采集并記錄GPIO1口、GPIO2口對應(yīng)的電平信號,通過GPIO1口、GPIO2口對應(yīng)電平信號的翻轉(zhuǎn)變化,能夠測量得到CPU內(nèi)部中斷的中斷響應(yīng)時間以及中斷恢復(fù)時間,操作方便,減少系統(tǒng)運(yùn)行時間和時序分析的偏差,安全可靠。