新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > S3C2440的存儲器管理

        S3C2440的存儲器管理

        作者: 時間:2016-11-11 來源:網絡 收藏
        以前不知道S3C2440的每個BANK都要設置位寬,也不知道為什么要設置,今天弄懂了。在使用BANK之前要設置每個BANK所接的外設時多少位的?由BWSCON寄存器設置,默認情況為8位。由于BANK0位啟動區,所以有硬件指示,通過讀OM[1:0]引腳來設置。

        本文引用地址:http://www.104case.com/article/201611/316659.htm

        當寬度為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],而讀寫數據的時候



        關鍵詞: S3C2440存儲器管

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 江源县| 宁乡县| 休宁县| 包头市| 临沭县| 西乌珠穆沁旗| 沾化县| 光山县| 新乐市| 瑞安市| 长丰县| 太湖县| 丰镇市| 承德县| 富宁县| 慈利县| 分宜县| 页游| 府谷县| 高州市| 南阳市| 吉木萨尔县| 屯门区| 忻城县| 高阳县| 大英县| 辽阳市| 读书| 大方县| 沿河| 临颍县| 望谟县| 汪清县| 东源县| 宜君县| 两当县| 玉屏| 临泽县| 舒城县| 兴安盟| 晋江市|