目前我們換了 Hynix 200 mDDR , 跑起來還算正常 , 只是 RTC-only mode 進入 suspend 後 卻沒有辦法 resume , suspend 前我將 resume 的 phy address 內容 printk 出來和 warn reset 後將 mDDR 中 的對應值 printf 出來比對 , 發現相同 (前 5 個 word) .
猜想說是否 , mDDR 的 timing 有問題 , 所以找個 memory 的壓力測試程式來跑跑看吧 !!
尋找了一下 , GNU 有 memtester , 並且是 open source ... 就用這個吧 !!
http://pyropus.ca/software/memtester/
Download 後需要移植到ARM上 ,
其實很簡單 , 修改 conf-cc & conf-ld 兩個檔案內容即可.
將 cc 改成對應的 Cross-compiler 即可.
另外猜想 , mDDR 連續 Access 時候耗電比較大 , Idle 時候耗電比較小 ,
所以稍微修改一下在 每個測試項目結束的時候進行 usleep , 讓耗電減少 , 看看能不能
測出 mDDR 輕載和重載 過程導致 電源不穩定.
執行結果如下:
[root@jeff :/bin]# memtester 100
memtester version 4.3.0 (32-bit)
Copyright (C) 2001-2012 Charles Cazabon.
Licensed under the GNU General Public License version 2 (only).
pagesize is 4096
pagesizemask is 0xfffff000
want 100MB (104857600 bytes)
got 100MB (104857600 bytes), trying mlock ...locked.
Loop 1:
Stuck Address : ok
Random Value : ok Sleep 92mS
Compare XOR : ok Sleep 187mS
Compare SUB : ok Sleep 246mS
Compare MUL : ok Sleep 20mS
Compare DIV : ok Sleep 187mS
Compare OR : ok Sleep 84mS
Compare AND : ok Sleep 205mS
Sequential Increment: ok Sleep 232mS
Solid Bits : ok Sleep 122mS
Block Sequential : ok Sleep 146mS
Checkerboard : ok Sleep 70mS
Bit Spread : ok Sleep 163mS
Bit Flip : ok Sleep 27mS
Walking Ones : ok Sleep 133mS
Walking Zeroes : ok Sleep 147mS
8-bit Writes : ok Sleep 12mS
16-bit Writes : ok Sleep 208mS
沒有留言:
張貼留言