今天想明白乙個問題,關於之前測試hpi記憶體讀寫為什麼出錯。
在查資料手冊的時候,第二小節儲存器對映裡講到
也就是說,可供選擇的靜態儲存區有這麼多,你可以在自己選擇接幾塊並做對映,需要對哪塊讀寫的時候先片選,然後通過位址線,資料線來讀。也就是說自己也可以接一些外設,對外設讀寫的時候設定片選,連好位址線資料線就可以把外設當成sdram來都寫了。然後我又查了下tiny6410核心板的原理圖
兩片記憶體是這樣接的。
然後又查了tiny6410的硬體手冊找到這麼一張表:
dm9000的接線圖:
所有聯絡起來我就明白了,xm1接了兩片記憶體,xm0只有bank1接了dm9000,從0x50000000到0x60000000 的128m的ddr ram 接了兩片flash。xm0的位址線用了三根,資料線全接在dm9000上。要編寫hpi的驅動,在這塊板子上,貌似只能把dm9000的驅動移除掉,資料線和位址線以及片選全引出來接hpi口。對hpi介面裝置讀寫的時候,先片選,然後把io埠對映為arm的記憶體。這樣對裝置讀寫的時候就相當於對arm記憶體的讀寫,當然時序什麼的要設定好。
所以之前在測試hpi讀寫的時候必須要把hpi口接上帶記憶體的裝置讀寫才會正常。至於是否真的這樣還要待測試,這只是我自己的理解,如果有高手看到發現有錯誤的地方,歡迎指正!
s3c6410儲存器對映
1.引導映象區 0x0000 0000 0x07ff ffff 2.內部儲存區 1 內部rom 0x0800 0000 0x0bff ffff 2 內部sram 0x0c00 0000 0x0fff ffff 3.靜態儲存區 0x1000 0000 0x3fff ffff 4.動態儲存區 0x400...
S3C6410 儲存器對映
1 儲存系統塊圖 我們以行為單位來看,在每一行中,最前面的兩列表示的是位址範圍,後面的幾列則是不同的儲存控制器。在每一行中用粗邊框標示出來的部分表示最前面兩列的位址範圍對映到這個區域當中。例如 最後兩行的位址範圍 0x50000000 0x5fffffff和0x60000000 0x6fffffff...
s3c6410儲存器對映
1.引導映象區 0x0000 0000 0x07ff ffff 2.內部儲存區 1 內部rom 0x0800 0000 0x0bff ffff 2 內部sram 0x0c00 0000 0x0fff ffff 3.靜態儲存區 0x1000 0000 0x3fff ffff 4.動態儲存區 0x400...