亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

檢測未初始化的存儲(chǔ)器讀取的方法

文檔序號(hào):6522422閱讀:334來源:國知局
檢測未初始化的存儲(chǔ)器讀取的方法
【專利摘要】本發(fā)明展示一種檢測未初始化的存儲(chǔ)器讀取的方法,其中將隨機(jī)存取存儲(chǔ)器系統(tǒng)的全部或一子組初始化為已知值。實(shí)施一個(gè)或一個(gè)以上觀察點(diǎn),其中在檢測到存儲(chǔ)器讀取之后,將所讀取的值與在初始化期間寫入的所述值進(jìn)行比較。如果所述值匹配,那么捕獲調(diào)試信息并采取適當(dāng)校正行動(dòng)。
【專利說明】檢測未初始化的存儲(chǔ)器讀取的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明的【技術(shù)領(lǐng)域】為嵌入式存儲(chǔ)器調(diào)試測試。
【背景技術(shù)】
[0002]未初始化的存儲(chǔ)器讀取(UMR)為軟件程序員所遇到的常見問題且往往難以追捕到。存在其中可能遇到UMR的許多情況,但最終UMR被定義為從存儲(chǔ)器中的尚未初始化的位置的讀取。
[0003]可能導(dǎo)致UMR的一些情境為以下各項(xiàng)的讀取請(qǐng)求:
[0004].存取已分配但尚未初始化的存儲(chǔ)器位置。
[0005].存取超出存儲(chǔ)器的經(jīng)分配塊的端的位置。
[0006].嘗試存取尚未分配的位置。
[0007].存取存儲(chǔ)器中的先前分配但隨后釋放(或重新分配并移動(dòng))的位置。
[0008]?存取存儲(chǔ)器中的隨機(jī)位置。
[0009]“存取已分配但尚未初始化的存儲(chǔ)器位置”中的上文所描述的情境的C中的實(shí)例
為:
[0010]
Sirucl umr_lcsl {
ini clcmcnl;

}
void main ()
{

slrucl umr_icst ;:;pinst;
pinsl = (sirucl umr_lcsl:::)malloc(sizcof(slrucl umr_lcsl));
primlV‘pinsl->clcmciU = %d\n'\ pinsl->clcmciU); //此處發(fā),1-: UMR
return;

}
[0011]通常,當(dāng)想到UMR如何發(fā)生時(shí),想到執(zhí)行指令序列的處理器。注意UMR可為系統(tǒng)中的任何主機(jī)(包含DMA及外圍裝置)的讀取請(qǐng)求的結(jié)果為重要的。
[0012]現(xiàn)有技術(shù)中的一種方法為在存儲(chǔ)器中的各個(gè)位置處建立‘觀察區(qū)(watch) ’。一旦建立觀察區(qū),即假設(shè)其正監(jiān)視的存儲(chǔ)器位置未初始化。借助‘寫入’監(jiān)視對(duì)所觀察存儲(chǔ)器位置的后續(xù)存取,從而致使將相關(guān)聯(lián)地址視為經(jīng)初始化的。如果觀察區(qū)檢測到對(duì)未初始化的位置的讀取存取,那么觸發(fā)UMR的等效物。
[0013]此方法的缺點(diǎn)為依賴于硬件追蹤特定存儲(chǔ)器地址或存儲(chǔ)器區(qū)域的狀態(tài)。此可導(dǎo)致觀察大量額外硬件,通常為大約每地址I個(gè)寄存器。
[0014]現(xiàn)有技術(shù)中已知的另一方法為其中使用存儲(chǔ)器的ECC(誤差校正碼)的經(jīng)保留/未使用的編碼來檢測UMR。通過內(nèi)建自測試(BIST)邏輯將存儲(chǔ)器內(nèi)的ECC初始化為定義為意指‘未初始化’的狀態(tài)。當(dāng)向存儲(chǔ)器寫入時(shí),將用不同于‘未初始化’編碼的設(shè)定覆寫ECC0如果用指示尚未向存儲(chǔ)器寫入的ECC值讀取存儲(chǔ)器,那么將產(chǎn)生斷點(diǎn)或中斷。此方法的缺點(diǎn)為其僅借助支持ECC的存儲(chǔ)器具功能性。

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

[0015]所提出的發(fā)明使用數(shù)據(jù)觀察點(diǎn)來監(jiān)視通過調(diào)試工具設(shè)定的特定值的所有讀取數(shù)據(jù)循環(huán)。所觀察的所述值為預(yù)定的且表示未初始化的存儲(chǔ)器。此后此值稱為UMR_DATA_VALUE。
[0016]在UMR調(diào)試會(huì)話開始時(shí),將用UMR_DATA_VALUE初始化系統(tǒng)中的所有存儲(chǔ)器。在其中此方法不實(shí)際的系統(tǒng)中,用UMR_DATA_VALUE初始化由于需要檢測UMR而定義為調(diào)試會(huì)話的一部分的某一子組的存儲(chǔ)器。
[0017]作為程序執(zhí)行的一部分,每當(dāng)釋放經(jīng)分配存儲(chǔ)器時(shí),將需要用UMR_DATA_VALUE初始化所述經(jīng)釋放存儲(chǔ)器的內(nèi)容。
[0018]需要將數(shù)據(jù)觀察點(diǎn)策略性地部署為系統(tǒng)的總線拓?fù)渲械年P(guān)鍵監(jiān)視點(diǎn)。數(shù)據(jù)觀察點(diǎn)監(jiān)視其附加到的總線基礎(chǔ)設(shè)施的讀取數(shù)據(jù)循環(huán)。當(dāng)數(shù)據(jù)觀察點(diǎn)檢測到在讀取數(shù)據(jù)循環(huán)期間觀察的值與UMR_DATA_VALUE之間的匹配時(shí),其觸發(fā)調(diào)試序列。在調(diào)試序列期間,捕獲與讀取數(shù)據(jù)循環(huán)相關(guān)聯(lián)的信息且接著采取某一行動(dòng)。
【專利附圖】

【附圖說明】
[0019]在圖式中圖解說明本發(fā)明的這些及其它方面,其中:
[0020]圖1圖解說明UMR初始化流程;
[0021]圖2圖解說明UMR觀察點(diǎn)流程。
【具體實(shí)施方式】
[0022]所提出的發(fā)明使用數(shù)據(jù)觀察點(diǎn)來監(jiān)視通過調(diào)試工具設(shè)定的特定值的所有讀取數(shù)據(jù)循環(huán)。所觀察的所述值為預(yù)定的且表示未初始化的存儲(chǔ)器。此后此值稱為UMR_DATA_VALUE。
[0023]由于本發(fā)明依賴于用以表示未初始化的存儲(chǔ)器的特定數(shù)據(jù)值,因此存在此數(shù)據(jù)觀察點(diǎn)解決方案將檢測碰巧已用匹配UMR_DATA_VALUE的值初始化的位置處的UMR的可能性。在統(tǒng)計(jì)上,在8位讀取事務(wù)的情況下,此將在256次讀取中發(fā)生I次。在32位的情況下,概率以在40億次中發(fā)生I次而小得多。
[0024]圖1展示在UMR調(diào)試會(huì)話的開始時(shí)的存儲(chǔ)器的初始化。將用UMR_DATA_VALUE初始化系統(tǒng)中的所有存儲(chǔ)器。在其中此方法不實(shí)際的系統(tǒng)中,用UMR_DATA_VALUE初始化由于需要檢測UMR而定義為調(diào)試會(huì)話的一部分的某一子組的存儲(chǔ)器。
[0025]作為程序執(zhí)行的一部分,每當(dāng)釋放經(jīng)分配存儲(chǔ)器時(shí),還將需要用UMR_DATA_VALUE初始化所述經(jīng)釋放存儲(chǔ)器的內(nèi)容。
[0026]在本發(fā)明的情況下,將需要將數(shù)據(jù)觀察點(diǎn)策略性地放置為系統(tǒng)的總線拓?fù)渲械年P(guān)鍵監(jiān)視點(diǎn)。數(shù)據(jù)觀察點(diǎn)監(jiān)視其附加到的總線基礎(chǔ)設(shè)施的讀取數(shù)據(jù)循環(huán)。當(dāng)數(shù)據(jù)觀察點(diǎn)檢測到在讀取數(shù)據(jù)循環(huán)期間觀察的值與UMR_DATA_VALUE之間的匹配時(shí),其觸發(fā)調(diào)試序列。在調(diào)試序列期間,捕獲與讀取數(shù)據(jù)循環(huán)相關(guān)聯(lián)的信息且接著采取某一行動(dòng)。
[0027]在觸發(fā)調(diào)試序列時(shí)捕獲的數(shù)據(jù)類型包含:讀取地址、起始器ID及時(shí)間戳。還可能捕獲僅與觀察點(diǎn)的特定例子相關(guān)的額外數(shù)據(jù)。舉例來說,部署于DSP內(nèi)的數(shù)據(jù)觀察點(diǎn)可能包含PC及任務(wù)ID。
[0028]借助將UMR發(fā)信號(hào)的調(diào)試行動(dòng)完成調(diào)試序列。所采取的調(diào)試行動(dòng)取決于所觸發(fā)的數(shù)據(jù)觀察點(diǎn)的上下文或調(diào)試會(huì)話的本質(zhì)。調(diào)試行動(dòng)的實(shí)例包含:停止一個(gè)或一個(gè)以上CPU、產(chǎn)生對(duì)處理器的中斷及產(chǎn)生追蹤消息。
[0029]許多系統(tǒng)支持具有不同對(duì)準(zhǔn)的讀取事務(wù)的多個(gè)大小。在此些系統(tǒng)中使用其中每一字節(jié)通道相同的UMR_DATA_VALUE為合意的。舉例來說,在需要支持8位、16位、32位及64位數(shù)據(jù)讀取的系統(tǒng)中,UMR_DATA_VALUE 可為 CCCC_CCCC_CCCC_CCCCh。
[0030]圖2展示UMR觀察點(diǎn)操作的流程圖。UMR邏輯201檢測存儲(chǔ)器讀取數(shù)據(jù)循環(huán),且在202中將數(shù)據(jù)值與UMR_DATA_VALUE進(jìn)行比較。在203中檢測可能匹配。如果不存在匹配,那么在208中不需要采取任何行動(dòng)。在于204中捕獲到匹配調(diào)試信息的情形中,在框205、206或207中采取選定行動(dòng)。
【權(quán)利要求】
1.一種檢測從隨機(jī)存取存儲(chǔ)器系統(tǒng)中的未初始化的位置的CPU存儲(chǔ)器讀取請(qǐng)求的方法,其包括以下步驟: 將預(yù)定數(shù)據(jù)值寫入到所述受測試隨機(jī)存取存儲(chǔ)器系統(tǒng)的每一存儲(chǔ)器位置中; 檢測從所述隨機(jī)存取存儲(chǔ)器系統(tǒng)的每一數(shù)據(jù)讀取請(qǐng)求操作; 將在所述存儲(chǔ)器讀取操作期間讀取的數(shù)據(jù)與先前寫入到所述受測試隨機(jī)存取存儲(chǔ)器系統(tǒng)的所有位置中的所述預(yù)定數(shù)據(jù)值進(jìn)行比較; 如果在所述讀取操作期間讀取的所述數(shù)據(jù)匹配先前寫入到所述受測試隨機(jī)存取存儲(chǔ)器系統(tǒng)的所有位置中的所述預(yù)定數(shù)據(jù)值,那么捕獲調(diào)試信息; 如果在所述讀取操作期間讀取的所述數(shù)據(jù)匹配先前寫入到所述受測試隨機(jī)存取存儲(chǔ)器系統(tǒng)的所有位置中的所述預(yù)定數(shù)據(jù)值,那么采取校正行動(dòng)。
2.根據(jù)權(quán)利要求1所述的方法,其中: 將所述預(yù)定數(shù)據(jù)值寫入到所述受測試隨機(jī)存取存儲(chǔ)器系統(tǒng)的僅一子組中。
3.根據(jù)權(quán)利要求1所述的方法,其中: 作為所述校正行動(dòng)的一部分,停止一個(gè)或一個(gè)以上CPU。
4.根據(jù)權(quán)利要求1所述的方法,其中: 作為所述校正行動(dòng)的一部分,產(chǎn)生中斷。
5.根據(jù)權(quán)利要求1所述的方法,其中: 作為所述校正行動(dòng)的一部分,產(chǎn)生追蹤消息。
6.根據(jù)權(quán)利要求1所述的方法,其中: 所捕獲的所述調(diào)試信息包含讀取地址、起始器的ID及時(shí)間戳。
7.根據(jù)權(quán)利要求1所述的方法,其中: 所捕獲的所述調(diào)試信息包含程序計(jì)數(shù)器及相關(guān)任務(wù)ID。
8.根據(jù)權(quán)利要求1所述的方法,其進(jìn)一步包括以下步驟: 將所述預(yù)定數(shù)據(jù)值寫入到所述受測試隨機(jī)存取存儲(chǔ)器的在程序執(zhí)行期間釋放的每一位置中。
【文檔編號(hào)】G06F9/44GK103853551SQ201310651942
【公開日】2014年6月11日 申請(qǐng)日期:2013年12月4日 優(yōu)先權(quán)日:2012年12月4日
【發(fā)明者】杰森·L·佩克 申請(qǐng)人:德州儀器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1