一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

uboot中內(nèi)存測(cè)試、內(nèi)存檢測(cè)方法

 寫意人生 2014-03-30

DDR內(nèi)存子系統(tǒng)常見硬件錯(cuò)誤及Uboot中檢測(cè)流程
  在 U-Boot中,Denx(U-Boot的開發(fā)商)針對(duì)常見的DDR內(nèi)存故障進(jìn)行了嚴(yán)格的檢測(cè)處理,下圖描述了該檢測(cè)處理過程的三個(gè)步驟:檢測(cè)數(shù)據(jù)線、地址線和DDR物理存儲(chǔ)部件,主要涉及這三個(gè)步驟的處理過程和方法,對(duì)于DDR子系統(tǒng),是很容易出故障并且是很難debug檢測(cè)出來的,而Denx所針對(duì) DDR內(nèi)存故障設(shè)計(jì)的檢測(cè)方法是非常嚴(yán)謹(jǐn),值得學(xué)習(xí)研究的。

  下面主要是相關(guān)的檢測(cè)處理思路及問題:
  1、為什么先檢測(cè)數(shù)據(jù)線?
  因?yàn)槿绻麛?shù)據(jù)線是斷開的,那么一切無從談起!接下來是檢測(cè)地址線,只有數(shù)據(jù)線和地址線都通過,檢測(cè)內(nèi)存的存儲(chǔ)單元才有意義,這樣的流程也利于分割定位問題。上面testing sequence框圖將整個(gè)檢測(cè)過程分成三大步,用三個(gè)虛線方框表示。
  2、數(shù)據(jù)線的連接錯(cuò)誤
  數(shù)據(jù)線的連接可能存在兩種錯(cuò)誤,一種是被斷開,另一種布線或生產(chǎn)造成互相短路。
  3、如何檢測(cè)數(shù)據(jù)線的連接錯(cuò)誤
  Denx 設(shè)計(jì)的數(shù)據(jù)線檢測(cè)算法還是很Tricky和精秒的,整個(gè)處理流程如下例子:如果是兩根數(shù)據(jù)線,只需要寫入并讀出一個(gè)pattern=0b01(0b開頭表示二進(jìn)制數(shù))就能判斷它們是否短路或斷開。很明顯,大部分的嵌入式平臺(tái)不止兩根數(shù)據(jù)線,我們以64位地址線為例,pattern = 0b101010101010101010.... 能檢測(cè)出奇偶位之間的數(shù)據(jù)錯(cuò)誤。如果這個(gè)錯(cuò)誤被排除,每兩根數(shù)據(jù)線組成一組(這是理解下一個(gè)pattern的關(guān)鍵),再用相同的辦法,檢測(cè)每相鄰兩組之間是否有短路,就得到第二個(gè)pattern,就是 0b110011001100...... 依次類推,以4根數(shù)據(jù)線為一組,8根線為一組,相繼得到共6個(gè)pattern,分別是 0xaaaaaaaaaaaaaaaa,0xcccccccccccccccc,0xf0f0f0f0f0f0f0f0,0xff00ff00ff00ff00,0xffff0000ffff0000,0xffffffff00000000。只要相繼寫入并讀出這6個(gè)pattern就能驗(yàn)證是否存在數(shù)據(jù)線交叉短路錯(cuò)誤。
  4、如何檢測(cè)數(shù)據(jù)線與板上其它信號(hào)線交叉短路或斷路
  取以上6個(gè)paatern的反碼,總共12個(gè)pattern就能檢測(cè)到每一位都可以寫入和讀出0和1。
  5、什么是floating buses錯(cuò)誤
  floating buses會(huì)“欺騙”測(cè)試軟件,如果測(cè)試軟件寫入并很快讀出一個(gè)值的時(shí)候,寫操作會(huì)跟數(shù)據(jù)線上的電容充電,總線會(huì)短暫的保持它的狀態(tài)。當(dāng)測(cè)試軟件讀操作時(shí),總線會(huì)返回剛寫入的值,即使實(shí)際上該數(shù)據(jù)線是斷路的。
  6、如何檢測(cè)數(shù)據(jù)線的floating buses錯(cuò)誤
  檢測(cè)floating buses錯(cuò)誤的算法不復(fù)雜,在寫入和讀回之間再插入一次對(duì)不同地址寫入不同值的操作。例如,X寫入X1位置,Y寫入Y1位置,再從X1位置讀出X值則表示floating buses錯(cuò)誤不存在。
  7、地址線的錯(cuò)誤
  如果地址線存在錯(cuò)誤,其癥狀是地址空間中的兩個(gè)不同位置被映射到同一物理存儲(chǔ)位置。更通俗地講,就是寫一個(gè)位置卻“改變”了另一個(gè)位置。
  8、地址線的錯(cuò)誤檢測(cè)
  地址線的錯(cuò)誤檢測(cè)相對(duì)簡單,其算法是:
  1)、將地址的值作為內(nèi)容寫入該地址處,匯編的表示方法是 (addr) = addr。即將地址值寫到地址對(duì)應(yīng)的空間里,這樣確保每一個(gè)位置的內(nèi)容不同。
  2)、依次將內(nèi)存基地址的某一根地址線的值翻轉(zhuǎn)(flip/toggle)得到某個(gè)地址,從該地址取值,如果該值和基地址的值相等,則表示某一位地址線有問題。
  這個(gè)算法的特點(diǎn)是每次只檢測(cè)一根地址線,方法簡單有效。
  9、存儲(chǔ)單元的錯(cuò)誤
  以上數(shù)據(jù)線和地址線的檢測(cè)都是檢測(cè)布線或工廠生產(chǎn)的錯(cuò)誤,而存儲(chǔ)單元的檢測(cè)則是真正對(duì)DDR內(nèi)存芯片的檢測(cè)。內(nèi)存芯片的常見錯(cuò)誤是bit-stuck,簡而言之,就是讓它是0,它偏為1,讓它為1,它偏為0,檢測(cè)方法也很簡單,就是用不同的pattern去寫盡可能所有的地址并讀回比較。有一些常用的 pattern如0x5555, 0xAAAA等。
  10、幾個(gè)簡單的檢測(cè)DDR故障的方法
  上面的DDR檢測(cè)算法,雖然全面,但是耗時(shí)比較長,常常需要好幾個(gè)小時(shí),在Uboot命令行下也有幾個(gè)簡單的命令可以檢測(cè)常見內(nèi)存故障,如下所示:
  1)、mtest addr lenth pattern
  這個(gè)命令需要注意,DDR在Uboot啟動(dòng)后被映射到了0地址,但是uboot的代碼和堆、??臻g0x10000000處開始,這些空間是不能被刷的,否則就掛死了。
  2)、復(fù)制NOR flash的內(nèi)容到內(nèi)存中,如 cp.b 0x20080000 0x7fc0 20000,然后比較 cmp.b 0x20080000 0x7fc0 20000。
  3)、下載kernel image到內(nèi)存中,copy NOR flash 或tftp都行,然后調(diào)用iminfo LOAD_ADDR 檢測(cè)CRC錯(cuò)誤。
  第一種方法是用特定的pattern去刷DDR的空閑空間,第二種和第三種方法可以說Pattern的隨機(jī)性更大一些。
  當(dāng)然最徹底的檢測(cè)方法當(dāng)然是長時(shí)間跑Linux系統(tǒng),上面的方法更適用于系統(tǒng)不穩(wěn)定時(shí)定位錯(cuò)誤

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    亚洲少妇一区二区三区懂色| 亚洲精品小视频在线观看| 91欧美一区二区三区| 日本在线不卡高清欧美| 日韩欧美中文字幕av| 精品国产一区二区欧美| 日本精品中文字幕在线视频| 国产av熟女一区二区三区四区 | 国产一区二区三区午夜精品 | 亚洲精品偷拍视频免费观看| 国产精品人妻熟女毛片av久久| 草草视频福利在线观看| 久久碰国产一区二区三区| 欧美精品专区一区二区| 老熟妇2久久国内精品| 日韩精品在线观看完整版| 亚洲欧美日韩综合在线成成| 国产精品一区二区三区日韩av| 亚洲中文字幕有码在线观看| 国产一级内片内射免费看 | 亚洲综合香蕉在线视频| a久久天堂国产毛片精品| av在线免费观看一区二区三区| 午夜福利精品视频视频| 久草热视频这里只有精品| 亚洲熟女精品一区二区成人| 日本婷婷色大香蕉视频在线观看| 国产亚州欧美一区二区| 亚洲精品国产主播一区| 欧美在线观看视频免费不卡| 国产成人精品一区二区三区| 亚洲综合伊人五月天中文| 日本 一区二区 在线| 日韩欧美综合在线播放| 亚洲精品成人福利在线| 五月天综合网五月天综合网| 国产不卡的视频在线观看| 国产精品国产亚洲区久久| 亚洲精品欧美精品日韩精品| 国产精品一区二区三区欧美| 丝袜美女诱惑在线观看|