国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種cpu檢測方法

      文檔序號(hào):9326782閱讀:501來源:國知局
      一種cpu檢測方法
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及一種方法,尤其是一種CPU檢測方法,屬于嵌入式系統(tǒng)BIT (Build InTest)檢測的技術(shù)領(lǐng)域。
      【背景技術(shù)】
      [0002]在數(shù)字電子控制系統(tǒng)中,對(duì)每一個(gè)硬件都應(yīng)進(jìn)行檢測,其中,包括對(duì)CPU的檢測。通常CPU檢測方法是進(jìn)行一系列數(shù)學(xué)運(yùn)算,檢查運(yùn)算結(jié)果是否符合期望。實(shí)際上CPU正常工作涉及到很多模塊,包括CPU通用數(shù)據(jù)寄存器、CPU通用地址寄存器、ALU單元、乘法器等,僅通過數(shù)學(xué)運(yùn)算的檢測方法無法充分地檢測CPU。

      【發(fā)明內(nèi)容】

      [0003]本發(fā)明的目的是克服現(xiàn)有技術(shù)中存在的不足,提供一種CPU檢測方法,其操作方便,實(shí)現(xiàn)對(duì)CPU的有效檢測,能使得CPU檢測更加充分完整,適應(yīng)性好,安全可靠。
      [0004]按照本發(fā)明提供的技術(shù)方案,所述CPU檢測方法,在關(guān)閉CPU的中斷使能后,執(zhí)行對(duì)CPU指令的運(yùn)行檢測;在執(zhí)行CPU指令運(yùn)行檢測時(shí),確定需要在CPU上運(yùn)行的檢測指令輸入以及與每個(gè)檢測指令輸入在運(yùn)行后對(duì)應(yīng)的檢測期望,若在CPU上運(yùn)行檢測指令輸入的檢測輸出與對(duì)應(yīng)的檢測期望不一致時(shí),則報(bào)告CPU故障且退出對(duì)CPU的檢測,否則,確定CPU檢測正常。
      [0005]若CPU內(nèi)包含CPU通用地址寄存器時(shí),則關(guān)閉CPU中斷使能后,在執(zhí)行CPU指令的運(yùn)行檢測前或執(zhí)行CPU指令的運(yùn)行檢測后,實(shí)施對(duì)CPU通用地址寄存器的檢測;所述CPU通用地址寄存器的檢測包括如下步驟:
      步驟S1、將CPU內(nèi)的一 CPU通用地址寄存器中的初始地址值保存到內(nèi)存中;
      步驟S2、在上述CPU通用地址寄存器中寫入所需的地址檢測值,所述地址檢測值長度為CPU通用地址寄存器的最大寄存空間;
      步驟S3、讀取上述CPU通用地址寄存器中的值,以得到地址檢測結(jié)果,并將讀取的地址檢測結(jié)果存入內(nèi)存變量中;
      步驟S4、將步驟S3中讀取的地址檢測結(jié)果與步驟S2中寫入的地址檢測值進(jìn)行比較,若讀取的地址檢測結(jié)果與寫入的地址檢測值不一致,則報(bào)告CPU故障,將初始地址值恢復(fù)到上述的CPU通用地址寄存器中并退出檢測,否則,跳轉(zhuǎn)至步驟S5 ;
      步驟S5、將上述步驟S2中的地址檢測值取反,以得到取反地址檢測值;將所述取反地址檢測值寫入上述的CPU通用地址寄存器中;
      步驟S6、讀取上述的CPU通用地址寄存器中的值,以得到取反地址檢測結(jié)果,并將讀取的取反地址檢測結(jié)果存入內(nèi)存變量中;
      步驟S7、將步驟S5中讀取的取反地址檢測結(jié)果與步驟S5中寫入的取反地址檢測值進(jìn)行比較,若讀取的取反地址檢測結(jié)果與寫入的取反地址檢測值不一致,則報(bào)告CPU故障,將初始地址值恢復(fù)到上述的CPU通用地址寄存器中并退出檢測,否則,跳轉(zhuǎn)至步驟S8 ; 步驟S8、對(duì)CPU內(nèi)其余的CPU通用地址寄存器重復(fù)上述步驟S2~步驟S8的檢測操作,直至CPU內(nèi)所有的CPU通用地址寄存器均通過檢測。
      [0006]若CPU內(nèi)包含CPU通用數(shù)據(jù)寄存器時(shí),則關(guān)閉CPU中斷使能后,在執(zhí)行CPU指令的運(yùn)行檢測前或執(zhí)行CPU指令的運(yùn)行檢測后,實(shí)施對(duì)CPU通用數(shù)據(jù)寄存器的檢測;所述CPU通用數(shù)據(jù)寄存器的檢測包括如下步驟:
      步驟Tl、將CPU內(nèi)的一 CPU通用數(shù)據(jù)寄存器中的初始數(shù)據(jù)值保存到內(nèi)存中;
      步驟T2、在上述CPU通用數(shù)據(jù)寄存器中寫入所需的數(shù)據(jù)檢測值,所述數(shù)據(jù)檢測值長度為CPU通用數(shù)據(jù)寄存器的最大寄存空間;
      步驟T3、讀取上述CPU通用數(shù)據(jù)寄存器中的值,以得到數(shù)據(jù)檢測結(jié)果,并將讀取的數(shù)據(jù)檢測結(jié)果存入內(nèi)存變量中;
      步驟T4、將步驟T3中讀取的數(shù)據(jù)檢測結(jié)果與步驟T2中寫入的數(shù)據(jù)檢測值進(jìn)行比較,若讀取的數(shù)據(jù)檢測結(jié)果與寫入的數(shù)據(jù)檢測值不一致,則報(bào)告CPU故障,將初始數(shù)據(jù)值恢復(fù)到上述的CPU通用數(shù)據(jù)寄存器中并退出檢測,否則,跳轉(zhuǎn)至步驟T5 ;
      步驟T5、將上述步驟T2中的數(shù)據(jù)檢測值取反,以得到取反數(shù)據(jù)檢測值;將所述取反數(shù)據(jù)檢測值寫入上述的CPU通用數(shù)據(jù)寄存器中;
      步驟T6、讀取上述CPU通用數(shù)據(jù)寄存器中的值,以得到取反數(shù)據(jù)檢測結(jié)果,并將讀取的取反數(shù)據(jù)檢測結(jié)果存入內(nèi)存變量中;
      步驟T7、將步驟T5中讀取的取反數(shù)據(jù)檢測結(jié)果與步驟T5中寫入的取反數(shù)據(jù)檢測值進(jìn)行比較,若讀取的取反數(shù)據(jù)檢測結(jié)果與寫入的取反數(shù)據(jù)檢測值不一致,則報(bào)告CPU故障,將初始數(shù)據(jù)值恢復(fù)到上述的CPU通用數(shù)據(jù)寄存器中并退出檢測,否則,跳轉(zhuǎn)至步驟T8 ;
      步驟T8、對(duì)CPU內(nèi)其余的CPU通用數(shù)據(jù)寄存器重復(fù)上述步驟T2~步驟Τ8的檢測操作,直至CPU內(nèi)所有的CPU通用數(shù)據(jù)寄存器均通過檢測。
      [0007]執(zhí)行對(duì)CPU指令的運(yùn)行檢測包括算術(shù)指令、邏輯指令、移位指令、比較指令、跳轉(zhuǎn)指令或芯片專用指令。
      [0008]使用匯編指令“MOV”實(shí)現(xiàn)將地址檢測值以及取反地址檢測值寫入CPU通用地址寄存器內(nèi),且使用匯編指令“MOV”讀取CPU通用地址寄存器內(nèi)的值,以分別得到地址檢測結(jié)果以及取反地址檢測結(jié)果。
      [0009]使用匯編指令“MOV”實(shí)現(xiàn)將數(shù)據(jù)檢測值以及取反數(shù)據(jù)檢測值寫入CPU通用數(shù)據(jù)寄存器內(nèi),且使用匯編指令“MOV”讀取CPU通用數(shù)據(jù)寄存器內(nèi)的值,以分別得到數(shù)據(jù)檢測結(jié)果以及取反數(shù)據(jù)檢測結(jié)果。
      [0010]本發(fā)明的優(yōu)點(diǎn):對(duì)CPU的檢測與CPU的實(shí)際工作情況相符合,使得對(duì)CPU的檢測更有效與充分,操作方便,適應(yīng)性好,安全可靠。
      【具體實(shí)施方式】
      [0011]下面結(jié)合具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步說明。
      [0012]為了實(shí)現(xiàn)對(duì)CPU的有效檢測,能使得CPU檢測更加充分完整,提高檢測的適應(yīng)性,本發(fā)明在關(guān)閉CPU的中斷使能后,執(zhí)行對(duì)CPU指令的運(yùn)行檢測;在執(zhí)行CPU指令運(yùn)行檢測時(shí),確定需要在CPU上運(yùn)行的檢測指令輸入以及與每個(gè)檢測指令輸入在運(yùn)行后對(duì)應(yīng)的檢測期望,若在CPU上運(yùn)行檢測指令輸入的檢測輸出與對(duì)應(yīng)的檢測期望不一致時(shí),則報(bào)告CPU故障且退出對(duì)CPU的檢測,否則,確定CPU檢測正常。
      [0013]具體地,為了避免在實(shí)施CPU檢測過程中被中斷程序打斷,則需要在關(guān)閉CPU的中斷使能后,再實(shí)施對(duì)CPU的檢測操作。關(guān)閉CPU中斷使能的過程為本技術(shù)領(lǐng)域人員所熟知,具體不再贅述。在具體實(shí)施過程中,不同CPU的結(jié)構(gòu),但無論CPU是采用何種結(jié)構(gòu),CPU均有指令運(yùn)行能力,即均需要對(duì)CPU指令進(jìn)行運(yùn)行檢測。
      [0014]在對(duì)CPU指令進(jìn)行運(yùn)行檢測時(shí),需要設(shè)計(jì)或確定檢測指令輸入以及每個(gè)檢測指令輸入對(duì)應(yīng)的檢測期望,檢測指令輸入與檢測期望呈一一對(duì)應(yīng)關(guān)系,設(shè)計(jì)或確定檢測指令輸入以及每個(gè)檢測指令輸入對(duì)應(yīng)的檢測期望的過程為本技術(shù)領(lǐng)域人員所熟知,具體不再贅述。若所有的檢測指令輸入與對(duì)應(yīng)的檢測期望均一致時(shí),則能確定CPU指令的運(yùn)行檢測正常,只要有一個(gè)檢測指令輸入與對(duì)應(yīng)的檢測期望不能對(duì)應(yīng)時(shí),則即報(bào)告CPU故障,然后退出CPU的檢測。
      [0015]具體實(shí)施時(shí),對(duì)CPU指令進(jìn)行運(yùn)行檢測采用C語言和匯編語言混編方式實(shí)現(xiàn),對(duì)應(yīng)檢測指令輸入的設(shè)置和檢測輸出的檢測可以采用C語言編程,操作比較方面。對(duì)于指令運(yùn)行可以采用匯編語言,只運(yùn)行指令相關(guān)的匯編,減少干擾。若需要中斷保護(hù),則在檢測每條檢測指令輸入之前關(guān)中斷使能,檢測完成之后開中斷使能。
      [0016]執(zhí)行對(duì)CPU指令的運(yùn)行檢測包括算術(shù)指令、邏輯指令、移位指令、比較指令、跳轉(zhuǎn)指令或芯片專用指令。其中,算術(shù)指令包括加法、減法、自增、自減、乘法等指令;邏輯指令包括與、或、非、異或等指令;移位指令包括算術(shù)右移、邏輯左移、邏輯右移、循環(huán)左移、循環(huán)右移等指令;檢測比較指令包括大于、等于、小于等指令;跳轉(zhuǎn)指令包括無條件跳轉(zhuǎn)、各有條件跳轉(zhuǎn)、調(diào)用等指令;芯片的專用指令檢測,如讀取中斷標(biāo)志等指令。
      當(dāng)前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1