国产精品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>

      地址空洞屏蔽方法及裝置與流程

      文檔序號:11864517閱讀:1012來源:國知局
      地址空洞屏蔽方法及裝置與流程

      本發(fā)明涉及軟件技術(shù)領(lǐng)域,特別涉及一種地址空洞屏蔽方法及裝置。



      背景技術(shù):

      對于電視機來講,CPU(Central Processing Unit,中央處理單元)實質(zhì)上是一塊大規(guī)模集成的電視機處理芯片。目前電視機處理芯片在實際應(yīng)用到整機項目中時,降低系統(tǒng)功耗和生產(chǎn)成本一直是大家關(guān)注的一個焦點。時下,通常采取下述兩種措施來達到上述目的。第一種,由于不同整機機型在使用同一款電視機處理芯片進行設(shè)計時,可使用到的功能模塊一般不同,因此將該機型用不到的一些功能模塊的時鐘關(guān)閉,以此來降低系統(tǒng)功耗。第二種,在滿足系統(tǒng)需求的前提下,盡量減少DDR(Double Data Rate,雙倍速率同步動態(tài)隨機存儲器)的空間大小,以此來降低生產(chǎn)成本。然而,無論采取上述哪一種措施均會引發(fā)地址空洞的問題。即,關(guān)閉掉時鐘的功能模塊對應(yīng)的地址空間和剪裁掉那一部分DDR對應(yīng)的地址空間由于不可進行數(shù)據(jù)讀寫,因此上述地址空間均會在系統(tǒng)總線上成為一個地址空洞。

      CPU在訪問到地址空洞時,系統(tǒng)總線是無法對其進行數(shù)據(jù)響應(yīng)的。而CPU訪問系統(tǒng)總線是一個需要握手的操作,如果系統(tǒng)總線一直沒有進行數(shù)據(jù)響應(yīng),那么CPU則一直處于等待響應(yīng)狀態(tài),從而導(dǎo)致宏觀上的CPU死機,引起嚴重的產(chǎn)品問題。為了避免這種問題的出現(xiàn),如何屏蔽上述地址空洞,使得CPU在訪問系統(tǒng)總線時對其進行規(guī)避,成為了一個亟待解決的問題。

      相關(guān)技術(shù)在進行地址空洞屏蔽時,通常采取下述方式實現(xiàn)。一方面,芯片設(shè)計人員在設(shè)計電視機處理芯片時,對已經(jīng)確定的地址空洞在系統(tǒng)總線上進行屏蔽。比如,寄存地址空間和NORFlash(非易失閃存)地址空間都是常見的地址空洞,因此在系統(tǒng)總線上以加補丁的方式將上述已經(jīng)確定的地址空洞進行屏蔽。另一方面,軟件開發(fā)人員在編寫軟件時通過編寫程序代碼去控制CPU不要訪問系統(tǒng)總線上的地址空洞。

      在實現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題:

      對于一些地址空洞有時在芯片設(shè)計階段是預(yù)想不到的,因此在芯片設(shè)計階段并不能預(yù)先屏蔽系統(tǒng)總線上的所有地址空洞,所以依然存在造成系統(tǒng)死機的隱患;此外,對于具有猜測執(zhí)行功能的CPU,即可提前猜測并執(zhí)行可能需要程序指令的CPU來說,由于猜測執(zhí)行功能是芯片設(shè)計人員按照特定算法設(shè)計的硬件功能,其對軟件開發(fā)人員來說是不可控的,因此當(dāng)CPU的猜測執(zhí)行路徑恰好落在會引起系統(tǒng)死機的地址空洞范圍內(nèi)時,同樣會造成系統(tǒng)死機。



      技術(shù)實現(xiàn)要素:

      為了解決現(xiàn)有技術(shù)的問題,本發(fā)明實施例提供了一種地址空洞屏蔽方法及裝置。所述技術(shù)方案如下:

      第一方面,提供了一種地址空洞屏蔽方法,所述方法包括:

      檢測CPU是否進入調(diào)試異常狀態(tài);

      在所述CPU進入調(diào)試異常狀態(tài)后,獲取系統(tǒng)總線上每一個地址空洞的地址信息;

      基于所述地址信息,為所述每一個地址空洞設(shè)置數(shù)據(jù)斷點。

      在另一個實施例中,所述方法還包括:

      在所述CPU進入調(diào)試異常狀態(tài)后,獲取異常處理向量地址;

      訪問所述異常處理向量地址指示的地址空間,所述地址空間存儲了數(shù)據(jù)斷點設(shè)置指令;

      執(zhí)行所述數(shù)據(jù)斷點設(shè)置指令,完成所述獲取系統(tǒng)總線上每一個地址空洞的地址信息,基于所述地址信息為所述每一個地址空洞設(shè)置數(shù)據(jù)斷點的操作。

      在另一個實施例中,所述基于所述地址信息,為所述每一個地址空洞設(shè)置數(shù)據(jù)斷點,包括:

      對于每一個地址空洞,調(diào)用調(diào)試寄存器將所述地址空洞的起始地址寫入斷點地址寄存器,將所述地址空洞的地址掩碼寫入地址掩碼寄存器;

      將所述起始地址和所述地址掩碼進行或運算得到所述地址空洞對應(yīng)的地址區(qū)間,完成在所述地址區(qū)間上設(shè)置數(shù)據(jù)斷點的操作。

      在另一個實施例中,所述獲取異常處理向量地址之前,所述方法還包括:

      在匯編文件中指定位置添加調(diào)試指令,所述指定匯編文件為所述CPU首個執(zhí)行的文件;

      所述檢測CPU是否進入調(diào)試異常狀態(tài),包括:

      在檢測到所述CPU執(zhí)行所述調(diào)試指令后,確定所述CPU進入所述調(diào)試異常狀態(tài)。

      在另一個實施例中,所述方法還包括:

      在所述CPU進入調(diào)試異常狀態(tài)后,對當(dāng)前正在使用的至少一個寄存器執(zhí)行寄存器現(xiàn)場保護處理;

      在為所述每一個地址空洞設(shè)置數(shù)據(jù)斷點后,執(zhí)行寄存器現(xiàn)場恢復(fù)處理。

      第二方面,提供了一種地址空洞屏蔽裝置,所述裝置包括:

      檢測模塊,用于檢測CPU是否進入調(diào)試異常狀態(tài);

      第一獲取模塊,用于在所述CPU進入調(diào)試異常狀態(tài)后,獲取系統(tǒng)總線上每一個地址空洞的地址信息;

      執(zhí)行模塊,用于基于所述地址信息,為所述每一個地址空洞設(shè)置數(shù)據(jù)斷點。

      在另一個實施例中,所述裝置還包括:

      第二獲取模塊,用于在所述CPU進入調(diào)試異常狀態(tài)后,獲取異常處理向量地址;

      訪問模塊,用于訪問所述異常處理向量地址指示的地址空間,所述地址空間存儲了數(shù)據(jù)斷點設(shè)置指令;

      所述執(zhí)行模塊,用于執(zhí)行所述數(shù)據(jù)斷點設(shè)置指令,完成所述獲取系統(tǒng)總線上每一個地址空洞的地址信息,基于所述地址信息為所述每一個地址空洞設(shè)置數(shù)據(jù)斷點的操作。

      在另一個實施例中,所述執(zhí)行模塊,用于對于每一個地址空洞,調(diào)用調(diào)試寄存器將所述地址空洞的起始地址寫入斷點地址寄存器,將所述地址空洞的地址掩碼寫入地址掩碼寄存器;將所述起始地址和所述地址掩碼進行或運算得到所述地址空洞對應(yīng)的地址區(qū)間,完成在所述地址區(qū)間上設(shè)置數(shù)據(jù)斷點的操作。

      在另一個實施例中,所述裝置還包括:

      添加模塊,用于在匯編文件中指定位置添加調(diào)試指令,所述指定匯編文件為所述CPU首個執(zhí)行的文件;

      所述檢測模塊,用于在檢測到所述CPU執(zhí)行所述調(diào)試指令后,確定所述CPU進入所述調(diào)試異常狀態(tài)。

      在另一個實施例中,所述執(zhí)行模塊,還用于在所述CPU進入調(diào)試異常狀態(tài)后,對當(dāng)前正在使用的至少一個寄存器執(zhí)行寄存器現(xiàn)場保護處理;在為所述每一個地址空洞設(shè)置數(shù)據(jù)斷點后,執(zhí)行寄存器現(xiàn)場恢復(fù)處理。

      本發(fā)明實施例提供的技術(shù)方案帶來的有益效果是:

      在CPU進入調(diào)試異常狀態(tài)后,通過為系統(tǒng)總線上每一個地址空洞設(shè)置數(shù)據(jù)斷點的方式來屏蔽地址空洞,由于具有猜測執(zhí)行功能的CPU不會對設(shè)置有數(shù)據(jù)斷點的總線地址采取猜測執(zhí)行措施,因此CPU的猜測執(zhí)行行為不會落到地址空洞上,從而避免了由CPU的猜測執(zhí)行行為引起的系統(tǒng)死機問題;此外,由于在CPU進入調(diào)試異常狀態(tài)后已完成了芯片的全部設(shè)計過程,因此系統(tǒng)總線上出現(xiàn)的地址空洞均可獲知,所以可屏蔽系統(tǒng)總線上的全部地址空洞,進一步降低了系統(tǒng)死機的概率。

      附圖說明

      為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

      圖1是本發(fā)明實施例提供的一種地址空洞屏蔽方法的流程圖;

      圖2是本發(fā)明實施例提供的一種地址空洞屏蔽方法的流程圖;

      圖3是本發(fā)明實施例提供的一種地址空洞屏蔽裝置的結(jié)構(gòu)示意圖;

      圖4是本發(fā)明實施例提供的一種智能設(shè)備400的結(jié)構(gòu)示意圖。

      具體實施方式

      為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明實施方式作進一步地詳細描述。

      在對本發(fā)明實施例進行詳細的解釋說明之前,先對本發(fā)明實施例的應(yīng)用場景予以介紹。本發(fā)明實施例提供的方法應(yīng)用于電視機。示例的,對于一個機型的電視機來說,在將電視機處理芯片上該機型用不到的功能模塊的時鐘關(guān)閉,或者將DDR的地址空間剪掉一部分,進而在系統(tǒng)總線上形成地址空洞后,為了防止具有猜測執(zhí)行功能的CPU執(zhí)行的猜測行為落到上述地址空洞上,本發(fā)明實施例提出了一種軟件形式的地址空洞屏蔽方法,該方法通過對上述地址空洞設(shè)置數(shù)據(jù)斷點,可有效解決因CPU猜測執(zhí)行的行為落到地址空洞造成的系統(tǒng)死機問題,且在芯片流片后可以根據(jù)實際情況隨時進行修改。詳細過程參見下述實施例。

      圖1是本發(fā)明實施例提供的一種地址空洞屏蔽方法的流程圖。參見圖1,本發(fā)明實施例提供的方法流程包括:

      101、檢測CPU是否進入調(diào)試異常狀態(tài);若CPU進入調(diào)試異常狀態(tài),則執(zhí)行下述步驟102。

      102、在CPU進入調(diào)試異常狀態(tài)后,獲取系統(tǒng)總線上每一個地址空洞的地址信息。

      103、基于該地址信息,為每一個地址空洞設(shè)置數(shù)據(jù)斷點。

      本發(fā)明實施例提供的方法,在CPU進入調(diào)試異常狀態(tài)后,通過為系統(tǒng)總線上每一個地址空洞設(shè)置數(shù)據(jù)斷點的方式來屏蔽地址空洞,由于具有猜測執(zhí)行功能的CPU在遇到數(shù)據(jù)斷點時,不會對設(shè)置有該數(shù)據(jù)斷點的總線地址采取猜測執(zhí)行措施,因此CPU的猜測執(zhí)行行為不會落到地址空洞上,從而避免了由CPU的猜測執(zhí)行行為引起的系統(tǒng)死機問題;此外,由于在CPU進入調(diào)試異常狀態(tài)后已完成了電視機處理芯片的全部設(shè)計過程,因此系統(tǒng)總線上出現(xiàn)的地址空洞均可獲知,所以可屏蔽系統(tǒng)總線上的全部地址空洞,進一步降低了系統(tǒng)死機的概率。

      在另一個實施例中,該方法還包括:

      在所述CPU進入調(diào)試異常狀態(tài)后,獲取異常處理向量地址;

      訪問所述異常處理向量地址指示的地址空間,所述地址空間存儲了數(shù)據(jù)斷點設(shè)置指令;

      執(zhí)行所述數(shù)據(jù)斷點設(shè)置指令,完成所述獲取系統(tǒng)總線上每一個地址空洞的地址信息,基于所述地址信息為所述每一個地址空洞設(shè)置數(shù)據(jù)斷點的操作。

      在另一個實施例中,所述基于所述地址信息,為所述每一個地址空洞設(shè)置數(shù)據(jù)斷點,包括:

      對于每一個地址空洞,調(diào)用調(diào)試寄存器將所述地址空洞的起始地址寫入斷點地址寄存器,將所述地址空洞的地址掩碼寫入地址掩碼寄存器;

      將所述起始地址和所述地址掩碼進行或運算得到所述地址空洞對應(yīng)的地址區(qū)間,完成在所述地址區(qū)間上設(shè)置數(shù)據(jù)斷點的操作。

      在另一個實施例中,所述獲取異常處理向量地址之前,所述方法還包括:

      在匯編文件中指定位置添加調(diào)試指令,所述指定匯編文件為所述CPU首個執(zhí)行的文件;

      所述檢測CPU是否進入調(diào)試異常狀態(tài),包括:

      在檢測到所述CPU執(zhí)行所述調(diào)試指令后,確定所述CPU進入所述調(diào)試異常狀態(tài)。

      在另一個實施例中,所述方法還包括:

      在所述CPU進入調(diào)試異常狀態(tài)后,對當(dāng)前正在使用的至少一個寄存器執(zhí)行寄存器現(xiàn)場保護處理;

      在為所述每一個地址空洞設(shè)置數(shù)據(jù)斷點后,執(zhí)行寄存器現(xiàn)場恢復(fù)處理。

      上述所有可選技術(shù)方案,可以采用任意結(jié)合形成本公開的可選實施例,在此不再一一贅述。

      圖2是本發(fā)明實施例提供的一種地址空洞屏蔽方法的流程圖。參見圖2,本發(fā)明實施例提供的方法流程包括:

      201、檢測CPU是否進入調(diào)試異常狀態(tài);若CPU進入調(diào)試異常狀態(tài),則執(zhí)行下述步驟202。

      通常情況下,數(shù)據(jù)斷點的設(shè)置操作需要在CPU進入調(diào)試異常狀態(tài)下進行。為使CPU進入調(diào)試異常狀態(tài),本發(fā)明實施例在匯編文件中添加了調(diào)試指令,在CPU執(zhí)行該調(diào)試指令后便進入調(diào)試異常狀態(tài)。此處提及的匯編文件通常指代被CPU首個執(zhí)行的start.S文件。一般調(diào)試指令添加在start.S文件中的初始位置。之所以將調(diào)試指令添加在start.S文件中,是因為start.S文件是第一個被CPU執(zhí)行的文件,在這里進入調(diào)試異常狀態(tài)為地址空洞設(shè)置數(shù)據(jù)斷點,可以防止在后續(xù)程序執(zhí)行過程中進行數(shù)據(jù)斷點設(shè)置操作時,出現(xiàn)在還沒有為地址空洞設(shè)置好數(shù)據(jù)斷點時,CPU已經(jīng)因為猜測執(zhí)行到地址空洞處造成系統(tǒng)死機的情況。

      在本公開實施例中,根據(jù)CPU的類型不同調(diào)試指令也可能略有差異。以CPU為龍芯LS232CPU為例,則調(diào)試指令可為SDBBP(Software Debug Breakpoint,軟件調(diào)試斷點)指令。在CPU執(zhí)行該SDBBP指令后,會發(fā)生斷點調(diào)試異常,此時便可對系統(tǒng)總線上的地址空洞進行數(shù)據(jù)斷點的設(shè)置操作。其中,SDBBP指令是一個標(biāo)準(zhǔn)的MIPS(Million Instructions Per Second,單字長定點指令平均執(zhí)行速度)指令集指令,數(shù)據(jù)斷點的設(shè)置便是通過調(diào)試把正常應(yīng)用程序代碼替換成軟件斷點指令來實現(xiàn)的。

      202、在CPU進入調(diào)試異常狀態(tài)后,對當(dāng)前正在使用的至少一個寄存器執(zhí)行寄存器現(xiàn)場保護處理。

      在本發(fā)明實施例中,為了保證在完成數(shù)據(jù)斷點設(shè)置操作后,CPU可以順利跳轉(zhuǎn)回主程序繼續(xù)執(zhí)行后續(xù)軟件流程,在CPU進入調(diào)試異常狀態(tài)后,還需先對寄存器現(xiàn)場進行保護處理。其中,現(xiàn)場保護可為保護返回地址、程序狀態(tài)字、堆棧指針、寄存器的值等。比如,當(dāng)數(shù)據(jù)斷點的設(shè)置操作會改變一些寄存器的值時,則必須對這些寄存器的原始值進行保存,并在程序返回之前恢復(fù)上述這些寄存器的原始值,否則在數(shù)據(jù)斷點設(shè)置結(jié)束后將無法順利返回主程序繼續(xù)執(zhí)行。因為在進行數(shù)據(jù)斷點設(shè)置操作時可能使用了其中的寄存器,造成對原有內(nèi)容的覆蓋,進而在跳轉(zhuǎn)回主程序后執(zhí)行出錯。

      此外,在對至少一個寄存器進行現(xiàn)場保護處理時,可通過利用一系列PUSH指令實現(xiàn),即將至少一個寄存器的內(nèi)容入棧保護起來,本發(fā)明實施例對保護現(xiàn)場的實現(xiàn)方式不進行具體限定,此處僅是給出一種可能的方式。

      203、獲取異常處理向量地址,訪問異常處理向量地址指示的地址空間。

      在異常處理機制下,當(dāng)異常發(fā)生時,CPU自動地跳到一個固定地址指示的地址空間去執(zhí)行相關(guān)的異常處理程序,而這個固定地址便是本發(fā)明實施例提及的異常處理向量地址。即,該異常處理向量地址并非地址空洞的地址,該異常處理向量地址指示的地址空間存儲了為地址空洞設(shè)置數(shù)據(jù)斷點的代碼。在CPU進入調(diào)試異常狀態(tài)后,可以從異常向量表獲取到該異常處理向量地址,并訪問該異常處理向量地址指示的地址空間,從而執(zhí)行數(shù)據(jù)斷點設(shè)置指令完成數(shù)據(jù)斷點的設(shè)置操作。其中,異常向量表可在系統(tǒng)上電后由U-Boot(Universal Boot Loader,通用引導(dǎo)加載)程序設(shè)置,本發(fā)明實施例對此不進行具體限定。此外,異常向量表一般位于程序的開頭部分。

      204、執(zhí)行異常處理向量地址指示的地址空間存儲的數(shù)據(jù)斷點設(shè)置指令,完成獲取系統(tǒng)總線上每一個地址空洞的地址信息,基于該地址信息為每一個地址空洞設(shè)置數(shù)據(jù)斷點的操作。

      本發(fā)明實施例是在芯片設(shè)計完成甚至是流片之后,通過軟件方式對系統(tǒng)總線上的地址空洞進行屏蔽,而在芯片設(shè)計完成之后,系統(tǒng)總線上的全部地址空洞均是已知的。比如,在芯片設(shè)計過程中可能無法知道DDR具體減掉的地址空間位于哪里,但是在芯片設(shè)計完成之后,根據(jù)DDR的原始地址空間和芯片設(shè)計完成之后的DDR現(xiàn)行地址空間,便可獲知具體減掉的部分位于哪里,即獲知到地址空洞的具體位置。

      數(shù)據(jù)斷點(Data Breakpoint)的主要作用是在滿足條件時打斷程序的正常執(zhí)行,使得CPU暫停當(dāng)前執(zhí)行而進行軟件調(diào)試工作。在本發(fā)明實施例中,之所以在系統(tǒng)總線的地址空洞上設(shè)置數(shù)據(jù)斷點,是可因為系統(tǒng)總線上的地址空洞本來就是不可以進行數(shù)據(jù)讀寫的無用地址區(qū)間,因此在這些地址區(qū)間上設(shè)置數(shù)據(jù)斷點不會產(chǎn)生任何不良影響。此外,由于在芯片設(shè)計階段需要阻止具有猜測執(zhí)行功能的CPU對設(shè)置有數(shù)據(jù)斷點的空間的猜測行為,否則猜測執(zhí)行會錯誤地命中數(shù)據(jù)斷點,導(dǎo)致數(shù)據(jù)斷點功能錯亂。本發(fā)明實施例便是利用這一點來通過設(shè)置數(shù)據(jù)斷點來防止猜測執(zhí)行的行為落到地址空洞上。因此具有猜測執(zhí)行功能的CPU不會對設(shè)置有數(shù)據(jù)斷點的地址空洞進行猜測執(zhí)行,所以設(shè)置數(shù)據(jù)斷點的方式可有效解決CPU的猜測執(zhí)行行為落到地址空洞上進而造成的系統(tǒng)死機問題。

      其中,具有猜測執(zhí)行功能的CPU可以通過提前判讀并執(zhí)行有可能需要的程序指令的方式來提高執(zhí)行速度。CPU猜測執(zhí)行技術(shù)出現(xiàn)的契機是因為程序中的條件分支是在得到程序指令的流水線處理結(jié)果后再執(zhí)行的,所以在CPU等待程序指令的處理結(jié)果時,流水線的前級電路也處于等待分支指令的空閑狀態(tài),這樣會導(dǎo)致時鐘周期的浪費。而如果CPU能在前條指令結(jié)果出來之前便能預(yù)測到分支是否轉(zhuǎn)移,那么便可以提前執(zhí)行相應(yīng)的指令,這樣就避免了流水線的空閑等待,相應(yīng)地提高了CPU的運算速度。這種CPU猜測執(zhí)行技術(shù)可以在很大程度上提升CPU的性能。但是由于猜測執(zhí)行功能是芯片設(shè)計人員按照特定算法設(shè)計的硬件功能,其對軟件開發(fā)人員來說是不可控的,因此當(dāng)CPU的猜測執(zhí)行行為恰好落在會引起系統(tǒng)死機的地址空洞范圍內(nèi)時,便會造成系統(tǒng)死機。本發(fā)明實施例正是為了避免上述情況的發(fā)生,提出了通過設(shè)置數(shù)據(jù)斷點來屏蔽地址空洞的方法。

      其中,在為系統(tǒng)總線上每一個地址空洞設(shè)置數(shù)據(jù)斷點時,可采取下述方式實現(xiàn):對于每一個地址空洞,調(diào)用調(diào)試(Debug)寄存器將該地址空洞的起始地址寫入斷點地址(ADDR)寄存器,將該地址空洞的地址掩碼寫入地址掩碼(MASK)寄存器;將該起始地址和地址掩碼進行或運算得到該地址空洞對應(yīng)的地址區(qū)間,完成在地址區(qū)間上設(shè)置數(shù)據(jù)斷點的操作。以起始地址為0x80000000,地址掩碼為0x0fffffff為例,首先調(diào)用Debug寄存器將地址0x80000000寫入ADDR寄存器,然后將地址掩碼0x0fffffff寫入MASK寄存器,之后將地址0x80000000與地址掩碼0x0fffffff進行或運算得到0x80000000至0x90000000這一地址區(qū)間,從而完成在這一地址區(qū)間上設(shè)置數(shù)據(jù)斷點的操作。

      205、在為每一個地址空洞設(shè)置數(shù)據(jù)斷點后,執(zhí)行寄存器現(xiàn)場恢復(fù)處理。

      在通過上述步驟204為系統(tǒng)總線上的每一個地址空洞設(shè)置好數(shù)據(jù)斷點后,便可以返回到主程序繼續(xù)執(zhí)行后續(xù)軟件流程。為了保證順利返回,在此之前還需恢復(fù)之前步驟202保存的寄存器現(xiàn)場。其中,在執(zhí)行寄存器現(xiàn)場恢復(fù)處理時,可通過一系列的POP指令將之前保存的各個寄存器的內(nèi)容出棧,本發(fā)明實施例對此不進行具體限定。由于堆棧采取的是先進先出原則,所以保護現(xiàn)場時進棧順序的逆序才是恢復(fù)現(xiàn)場時的出棧順序。

      206、跳轉(zhuǎn)回主程序繼續(xù)執(zhí)行后續(xù)軟件流程。

      CPU在進入調(diào)試異常狀態(tài)后,數(shù)據(jù)斷點的設(shè)置過程相當(dāng)于在處理一個異常事件,而一個異常事件實質(zhì)上即是一個中斷事件。CPU在處理完畢中斷后,均會根據(jù)中斷的返回地址跳轉(zhuǎn)回主程序繼續(xù)執(zhí)行后續(xù)軟件流程。

      本發(fā)明實施例提供的方法,在CPU進入調(diào)試異常狀態(tài)后,通過為系統(tǒng)總線上每一個地址空洞設(shè)置數(shù)據(jù)斷點的方式來屏蔽地址空洞,由于具有猜測執(zhí)行功能的CPU在遇到數(shù)據(jù)斷點時,不會對設(shè)置有該數(shù)據(jù)斷點的總線地址采取猜測執(zhí)行措施,因此CPU的猜測執(zhí)行行為不會落到地址空洞上,從而避免了由CPU的猜測執(zhí)行行為引起的系統(tǒng)死機問題;此外,由于在CPU進入調(diào)試異常狀態(tài)后已完成了電視機處理芯片的全部設(shè)計過程,因此系統(tǒng)總線上出現(xiàn)的地址空洞均可獲知,所以可屏蔽系統(tǒng)總線上的全部地址空洞,進一步降低了系統(tǒng)死機的概率。

      圖3是本發(fā)明實施例提供的一種地址空洞屏蔽裝置的結(jié)構(gòu)示意圖。參見圖3,該裝置包括:檢測模塊301、第一獲取模塊302、執(zhí)行模塊303。

      其中,檢測模塊301與第一獲取模塊302連接,用于檢測CPU是否進入調(diào)試異常狀態(tài);第一獲取模塊302與執(zhí)行模塊303連接,用于在所述CPU進入調(diào)試異常狀態(tài)后,獲取系統(tǒng)總線上每一個地址空洞的地址信息;執(zhí)行模塊303,用于基于所述地址信息,為所述每一個地址空洞設(shè)置數(shù)據(jù)斷點。

      在另一個實施例中,該裝置還包括:

      第二獲取模塊304,用于在所述CPU進入調(diào)試異常狀態(tài)后,獲取異常處理向量地址;

      訪問模塊305,用于訪問所述異常處理向量地址指示的地址空間,所述地址空間存儲了數(shù)據(jù)斷點設(shè)置指令;

      所述執(zhí)行模塊303,用于執(zhí)行所述數(shù)據(jù)斷點設(shè)置指令,完成所述獲取系統(tǒng)總線上每一個地址空洞的地址信息,基于所述地址信息為所述每一個地址空洞設(shè)置數(shù)據(jù)斷點的操作。

      在另一個實施例中,所述執(zhí)行模塊303,用于對于每一個地址空洞,調(diào)用調(diào)試寄存器將所述地址空洞的起始地址寫入斷點地址寄存器,將所述地址空洞的地址掩碼寫入地址掩碼寄存器;將所述起始地址和所述地址掩碼進行或運算得到所述地址空洞對應(yīng)的地址區(qū)間,完成在所述地址區(qū)間上設(shè)置數(shù)據(jù)斷點的操作。

      在另一個實施例中,該裝置還包括:

      添加模塊306,用于在匯編文件中指定位置添加調(diào)試指令,所述指定匯編文件為所述CPU首個執(zhí)行的文件;

      所述檢測模塊301,用于在檢測到所述CPU執(zhí)行所述調(diào)試指令后,確定所述CPU進入所述調(diào)試異常狀態(tài)。

      在另一個實施例中,所述執(zhí)行模塊303,還用于在所述CPU進入調(diào)試異常狀態(tài)后,對當(dāng)前正在使用的至少一個寄存器執(zhí)行寄存器現(xiàn)場保護處理;在為所述每一個地址空洞設(shè)置數(shù)據(jù)斷點后,執(zhí)行寄存器現(xiàn)場恢復(fù)處理。

      本發(fā)明實施例提供的裝置,在CPU進入調(diào)試異常狀態(tài)后,通過為系統(tǒng)總線上每一個地址空洞設(shè)置數(shù)據(jù)斷點的方式來屏蔽地址空洞,由于具有猜測執(zhí)行功能的CPU在遇到數(shù)據(jù)斷點時,不會對設(shè)置有該數(shù)據(jù)斷點的總線地址采取猜測執(zhí)行措施,因此CPU的猜測執(zhí)行行為不會落到地址空洞上,從而避免了由CPU的猜測執(zhí)行行為引起的系統(tǒng)死機問題;此外,由于在CPU進入調(diào)試異常狀態(tài)后已完成了電視機處理芯片的全部設(shè)計過程,因此系統(tǒng)總線上出現(xiàn)的地址空洞均可獲知,所以可屏蔽系統(tǒng)總線上的全部地址空洞,進一步降低了系統(tǒng)死機的概率。

      需要說明的是:上述實施例提供的地址空洞屏蔽裝置在進行地址空洞屏蔽時,僅以上述各功能模塊的劃分進行舉例說明,實際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將設(shè)備的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。另外,上述實施例提供的地址空洞屏蔽裝置與地址空洞屏蔽方法實施例屬于同一構(gòu)思,其具體實現(xiàn)過程詳見方法實施例,這里不再贅述。

      本實施例提供了一種智能設(shè)備,該智能設(shè)備可以用于執(zhí)行上述各個實施例中提供的地址空洞屏蔽方法。參見圖4,該智能設(shè)備400包括:

      智能設(shè)備400可以包括紅外接收器110,包括有一個或一個以上計算機可讀存儲介質(zhì)的存儲器120、輸入單元130、顯示單元140、傳感器150、音頻電路160、WiFi(Wireless Fidelity,無線保真)模塊170、包括有一個或者一個以上處理核心的處理器180、以及電源190等部件。本領(lǐng)域技術(shù)人員可以理解,圖4中示出的智能設(shè)備結(jié)構(gòu)并不構(gòu)成對智能設(shè)備的限定,可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件布置。其中:

      紅外接收器110可用于接收紅外遙控設(shè)備發(fā)送的操作指令,接收到操作指令后,交由一個或者一個以上處理器180處理。

      存儲器120可用于存儲軟件程序以及模塊,處理器180通過運行存儲在存儲器120的軟件程序以及模塊,從而執(zhí)行各種功能應(yīng)用以及數(shù)據(jù)處理。存儲器120可主要包括存儲程序區(qū)和存儲數(shù)據(jù)區(qū),其中,存儲程序區(qū)可存儲操作系統(tǒng)、至少一個功能所需的應(yīng)用程序(比如聲音播放功能、圖像播放功能等)等;存儲數(shù)據(jù)區(qū)可存儲根據(jù)智能設(shè)備400的使用所創(chuàng)建的數(shù)據(jù)(比如音頻數(shù)據(jù)、電話本等)等。此外,存儲器120可以包括高速隨機存取存儲器,還可以包括非易失性存儲器,例如至少一個磁盤存儲器件、閃存器件、或其他易失性固態(tài)存儲器件。相應(yīng)地,存儲器120還可以包括存儲器控制器,以提供處理器180和輸入單元130對存儲器120的訪問。

      輸入單元130可用于接收輸入的數(shù)字或字符信息,以及產(chǎn)生與用戶設(shè)置以及功能控制有關(guān)的鍵盤、鼠標(biāo)、操作桿、光學(xué)或者軌跡球信號輸入。具體地,輸入單元130可包括觸敏表面131以及其他輸入設(shè)備132。觸敏表面131,也稱為觸摸顯示屏或者觸控板,可收集用戶在其上或附近的觸摸操作(比如用戶使用手指、觸筆等任何適合的物體或附件在觸敏表面131上或在觸敏表面131附近的操作),并根據(jù)預(yù)先設(shè)定的程式驅(qū)動相應(yīng)的連接裝置??蛇x的,觸敏表面131可包括觸摸檢測裝置和觸摸控制器兩個部分。其中,觸摸檢測裝置檢測用戶的觸摸方位,并檢測觸摸操作帶來的信號,將信號傳送給觸摸控制器;觸摸控制器從觸摸檢測裝置上接收觸摸信息,并將它轉(zhuǎn)換成觸點坐標(biāo),再送給處理器180,并能接收處理器180發(fā)來的命令并加以執(zhí)行。此外,可以采用電阻式、電容式、紅外線以及表面聲波等多種類型實現(xiàn)觸敏表面131。除了觸敏表面131,輸入單元130還可以包括其他輸入設(shè)備132。具體地,其他輸入設(shè)備132可以包括但不限于物理鍵盤、功能鍵(比如音量控制按鍵、開關(guān)按鍵等)、軌跡球、鼠標(biāo)、操作桿等中的一種或多種。

      顯示單元140可用于顯示由用戶輸入的信息或提供給用戶的信息以及智能設(shè)備400的各種圖形用戶接口,這些圖形用戶接口可以由圖形、文本、圖標(biāo)、視頻和其任意組合來構(gòu)成。顯示單元140可包括顯示面板141,可選的,可以采用LCD(Liquid Crystal Display,液晶顯示器)、OLED(Organic Light-Emitting Diode,有機發(fā)光二極管)等形式來配置顯示面板141。進一步的,觸敏表面131可覆蓋顯示面板141,當(dāng)觸敏表面131檢測到在其上或附近的觸摸操作后,傳送給處理器180以確定觸摸事件的類型,隨后處理器180根據(jù)觸摸事件的類型在顯示面板141上提供相應(yīng)的視覺輸出。雖然在圖4中,觸敏表面131與顯示面板141是作為兩個獨立的部件來實現(xiàn)輸入和輸入功能,但是在某些實施例中,可以將觸敏表面131與顯示面板141集成而實現(xiàn)輸入和輸出功能。

      智能設(shè)備400還可包括至少一種傳感器150,比如光傳感器、運動傳感器以及其他傳感器。具體地,光傳感器可包括環(huán)境光傳感器及接近傳感器,其中,環(huán)境光傳感器可根據(jù)環(huán)境光線的明暗來調(diào)節(jié)顯示面板141的亮度,接近傳感器可在智能設(shè)備400移動到耳邊時,關(guān)閉顯示面板141和/或背光。作為運動傳感器的一種,重力加速度傳感器可檢測各個方向上(一般為三軸)加速度的大小,靜止時可檢測出重力的大小及方向,可用于識別手機姿態(tài)的應(yīng)用(比如橫豎屏切換、相關(guān)游戲、磁力計姿態(tài)校準(zhǔn))、振動識別相關(guān)功能(比如計步器、敲擊)等;至于智能設(shè)備400還可配置的陀螺儀、氣壓計、濕度計、溫度計、紅外線傳感器等其他傳感器,在此不再贅述。

      音頻電路160、揚聲器161,傳聲器162可提供用戶與智能設(shè)備400之間的音頻接口。音頻電路160可將接收到的音頻數(shù)據(jù)轉(zhuǎn)換后的電信號,傳輸?shù)綋P聲器161,由揚聲器161轉(zhuǎn)換為聲音信號輸出;另一方面,傳聲器162將收集的聲音信號轉(zhuǎn)換為電信號,由音頻電路160接收后轉(zhuǎn)換為音頻數(shù)據(jù),再將音頻數(shù)據(jù)輸出處理器180處理,或者將音頻數(shù)據(jù)輸出至存儲器120以便進一步處理。音頻電路160還可能包括耳塞插孔,以提供外設(shè)耳機與智能設(shè)備400的通信。

      WiFi屬于短距離無線傳輸技術(shù),智能設(shè)備400通過WiFi模塊170可以幫助用戶收發(fā)電子郵件、瀏覽網(wǎng)頁和訪問流式媒體等,它為用戶提供了無線的寬帶互聯(lián)網(wǎng)訪問。雖然圖4示出了WiFi模塊170,但是可以理解的是,其并不屬于智能設(shè)備400的必須構(gòu)成,完全可以根據(jù)需要在不改變發(fā)明的本質(zhì)的范圍內(nèi)而省略。

      處理器180是智能設(shè)備400的控制中心,利用各種接口和線路連接整個手機的各個部分,通過運行或執(zhí)行存儲在存儲器120內(nèi)的軟件程序和/或模塊,以及調(diào)用存儲在存儲器120內(nèi)的數(shù)據(jù),執(zhí)行智能設(shè)備400的各種功能和處理數(shù)據(jù),從而對手機進行整體監(jiān)控。可選的,處理器180可包括一個或多個處理核心;優(yōu)選的,處理器180可集成應(yīng)用處理器和調(diào)制解調(diào)處理器,其中,應(yīng)用處理器主要處理操作系統(tǒng)、用戶界面和應(yīng)用程序等,調(diào)制解調(diào)處理器主要處理無線通信??梢岳斫獾氖?,上述調(diào)制解調(diào)處理器也可以不集成到處理器180中。

      智能設(shè)備400還包括給各個部件供電的電源190(比如電池),優(yōu)選的,電源可以通過電源管理系統(tǒng)與處理器180邏輯相連,從而通過電源管理系統(tǒng)實現(xiàn)管理充電、放電、以及功耗管理等功能。電源190還可以包括一個或一個以上的直流或交流電源、再充電系統(tǒng)、電源故障檢測電路、電源轉(zhuǎn)換器或者逆變器、電源狀態(tài)指示器等任意組件。

      盡管未示出,智能設(shè)備400還可以包括攝像頭、藍牙模塊等,在此不再贅述。具體在本實施例中,智能設(shè)備的顯示單元是觸摸屏顯示器,智能設(shè)備還包括有存儲器,以及一個或者一個以上的程序,其中一個或者一個以上程序存儲于存儲器中,且經(jīng)配置以由一個或者一個以上處理器執(zhí)行。所述一個或者一個以上程序包含用于執(zhí)行上述地址空洞屏蔽操作的指令。

      本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計算機可讀存儲介質(zhì)中,上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。

      以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。

      當(dāng)前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1