S3C2440的儲存空間管理

來源:互聯網
上載者:User

以前不知道S3C2440的每個BANK都要設定位寬,也不知道為什麼要設定,今天弄懂了。在使用BANK之前要設定每個BANK所接的外設時多少位的?由BWSCON寄存器設定,預設情況為8位。由於BANK0位啟動區,所以有硬體指示,通過讀OM[1:0]引腳來設定。

 

 當寬度為8位的時候,"Memory Controller"硬體是這樣做的:(不錯位串連)

(1)CPU想進行8位操作時,直接根據軟體所給出的地址讀取8位元據返回給CPU。

(2)CPU想進行16位操作時,進行兩次8位的操作,並組成一個16位的資料返回給CPU。

(3)CPU想進行32位操作時,進行四次8位的操作,並組成一個32位的資料返回給CPU。

 

 當寬度為16位的時候,"Memory Controller"硬體是這樣做的:(錯一位串連)

(1)CPU想進行8位操作時,直接根據軟體所給出的地址讀取16位元據,並將低8位返回給CPU。

(2)CPU想進行16位操作時,直接根據軟體所給出的地址讀取16位元據返回給CPU。

(3)CPU想進行32位操作時,進行2次8位的操作,並組成一個32位的資料返回給CPU。

 

 當寬度為32位的時候,"Memory Controller"硬體是這樣做的:(錯兩位串連)

(1)CPU想進行8位操作時,直接根據軟體所給出的地址讀取32位元據,並將低8位返回給CPU。

(2)CPU想進行16位操作時,直接根據軟體所給出的地址讀取32位元據,並將低16位返回給CPU。

(3)CPU想進行32位操作時,直接根據軟體所給出的地址讀取32位元據返回給CPU。

參考:http://hi.baidu.com/zengzhaonong/blog/item/6de41c4f99e5cd3dafc3abc6.html

 

PS:關於S3C2440擴充網口電路時,CMD為什麼要接ADDR2?

 Memory Controller操作的是DATA[15:8]。即0x0的時候通過DATA[7:0]寫入要操作寄存器的地址,0x1的時候通過DATA[15:8]讀寫寄存器的資料。而DM9000卻始終是通過DATA[7:0]操作寄存器的,這樣產生了矛盾。如果錯兩位,並且使用0x0寫入要操作寄存器地址,使用ox4作為讀寫寄存器地址,這樣Memory Controller始終使用的是DATA[7:0]傳輸資料,這樣與DM9000資料轉送規則吻合。

 

答:首先由於使用了DATA[15:0],固將位寬設為16位。但如果只錯一位,則每次讀寫地址的時候Memory Controller操作的是DATA[7:0],而讀寫資料的時候

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.