1 頁 (共 1 頁)

Debug view即時顯示最後一筆命令與位址解惑

文章發表於 : 週一 4月 06, 2009 3:22 pm
Haki
當您下 03 read command去讀 000000結果秀000004
下 03 read command去讀 000040 結果秀000044
都相差4個bytes
原因是因為ICH或是PCH的SPI Host會去pre-fetch 32bits
(這是Host為了加速SPI 讀取效能而做的)
所以在您軟體觀點來看會是錯的
但是站在HW的角度來看卻是對的
因為我們是忠實把SPI Host對SPI device做的動作即時顯示出來
Pre-fetch的功能會隨著SPI HOST的設計而有所不同
例如ITE的EC上面的就會去Pre-fetch 16 bits
當您下 03 read command去讀 000000結果秀000002
下 03 read command去讀 000040 結果秀000042
都相差2個bytes
這點應該這樣就可以了解了吧!
軟體這邊就需要針對你的SPI HOST 的design去做調整
反正就是去讀取000000看他會相差多少就知道要往回扣多少
扣要之後的就是真正軟體去access的位址了

至於SAMEFILE無法REFRESH是因為我們把清除的control register做再MBR
Win2000作業系統會去擋修改MBR
但是微軟後來似乎是為了相容性問題在WINXP底下又把他改成可以修改MBR
這就是為什麼在WINXP底下可以正常WORK
而WIN2000卻不行
後面我們可能會考慮把MBR的那部份移成檔案來做處理