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