1.内存接口概念

S3C2440是个片上系统,有GPIO控制器(接有GPIO管脚(GPA-GPH)),有串口控制器 (接有TXD RXD引脚),有memory controller内存控制器,有Nand控制器等...

1.不同类型的控制器:

(1)GPIO控制器属于门电路,不涉及到时序,相对简单。
(2)串口控制器属于协议类接口,类似的协议类接口还有iic、iis、spi等。
(3)前面的GPIO/门电路接口、协议类接口,都不会把地址输出到外部设备,仅仅只是将地址写入到相应的控制器。
接下来的内存类接口,会把地址输出到外部,cpu将地址写入内存控制器,内存控制器还需访问外部设备,比如NorFlash、网卡、SDRAM。

2.CPU是如何访问各个不同的寄存器的呢?

GPIO/门电路接口、协议类接口、内存类接口都属于CPU的统一编址。但对于Nand Flash,它没有独立的地址线和cpu的地址总线相连接,因此它不参与CPU的统一编址。

(1)对于门电路接口、协议类接口,直接访问寄存器即可。

(2)对于内存类接口,交给内存控制器去处理。下面详细分析:

CPU只管发出一个地址,内存控制器根据该地址范围选择不同的模块,然后从模块中得到数据或者发送数据到模块中。

如下图,SDRAM、DM9000网卡、Nor Flash都接在JZ2440的数据总线和地址总线上,CPU把数据和地址发送出去,然后内存控制器根据地址范围确定要拉低选中哪个片选信号(nCS),再根据片选信号(nCS)选择相应的设备,进行收发地址和数据,互不干扰。



(1)当CPU发出的指令的地址范围处于0x00000000 - 0x08000000,
内存控制器就会使nGCS0处于低电平(片选引脚被选中),NorFlash被选中。(NorFlash启动时才行,nand启动时nGCS0这块对应SRAM) (2)当CPU发出的指令的地址范围处于0x20000000 - 0x28000000,
内存控制器就会使nGCS4处于低电平(片选引脚被选中),网卡DM9000被选中。 (3)当CPU发出的指令的地址范围处于0x30000000 - 0x38000000,
内存控制器就会使nGCS6处于低电平(片选引脚被选中),SDRAM被选中。

内存控制器根据不同的地址地址范围,发出不同的片选引脚,只有被片选引脚选中的芯片才能正常工作,不被选中的芯片就像不存在一样,不工作。

从2440 datasheet中我们得知内存控制器可访问的地址范围有1G(0x0000,0000-0x4000,0000),8个bank,每个bank_size为128M。理论上需要2^30(30条地址线)来确定是哪个bank,哪个地址。但是实际上只用到了27条,那么是怎么确定是哪个bank被选中了呢?

cpu每次发给内存控制器的地址都是Addr[31:0],但是内存控制器发给外设(sdram,nor,dm9000)却只用到了A[26:0]。第[29:27]被用来确定要拉低哪个nGCS,即要选中哪个bank。

bit[29:27]		bit[26:0]
0b000 -> 0x000,0000-0x7ff,ffff (bank0被选中 (128M))
0b001 -> 0x800,0000-0xfff,ffff (bank1被选中 (128M))
... ...
0b110 -> 0x000,0000-0x7ff,ffff (bank6被选中 (128M))
0b111 -> 0x800,0000-0xfff,ffff (bank7被选中 (128M))

那么对于大容量的nandflash,理论上需要更多的地址线来确认访问地址,那既然没有地址线,cpu是如何访问nand的呢?当然是通过nand控制器,nand是地址、命令、数据都共用数据总线。这里只是引入一个话题,具体内容后面讲。

最新文章

  1. CSS代码规范
  2. 将类数组arguments转化成数组
  3. 学习笔记 DataGridView数据导出为Excel
  4. eclipse cdt代码悬停窗口背景颜色设置(转载)
  5. iOS开发--沙盒路径与操作文件
  6. [Express] Level 4: Body-parser -- Post
  7. WordPress FunCaptcha插件跨站脚本漏洞
  8. 【HDOJ】3061 Battle
  9. Codeforces Round #524 (Div. 2) F
  10. (python)数据结构------列表
  11. youtube-dl 安装和用法
  12. [android] 安卓消息推送的几种实现方式
  13. Ubuntu中apt与apt-get命令的区别
  14. 一些仪器的解码程序(delphi)
  15. Azure DevOps Server (TFS)中代码文件换行问题解决方案(Git)
  16. VM虚拟机装centos无法自动获取IP的解决方法
  17. C# Bulk Operations(转)
  18. cobbler koan自动重装系统
  19. 我的blog第一天
  20. HDU 5186 zhx's submissions (进制转换)

热门文章

  1. 利用keras自带房价数据集进行房价预测
  2. .NET Core 轻量级模板引擎 Mustachio
  3. (转)两种高效过滤敏感词算法--DFA算法和AC自动机算法
  4. 怎么将DWG转PDF?分享一个在线转换方法
  5. IP地址的格式和分类
  6. 微信小程序模板(template)和组件的区别
  7. condense 参数
  8. Java 创建线程的3种方法及各自优势
  9. ETCD:词汇表
  10. [Spring cloud 一步步实现广告系统] 7. 中期总结回顾