您的位置 首页 观点

S3C2440的存储器办理

以前不知道S3C2440的每个BANK都要设置位宽,也不知道为什么要设置,今天弄懂了。在使用BANK之前要设置每个BANK所接的外设时多少位的?由BWS…

曾经不知道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],而读写数据的时分

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/guandian/274500.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部