s3c2440裸机-内存控制器1-内存控制器的原理

发布者:WhisperingLight最新更新时间:2024-07-08 来源: elecfans关键字:内存控制器  片上系统 手机看文章 扫描二维码
随时随地手机看文章

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是地址、命令、数据都共用数据总线。这里只是引入一个话题,具体内容后面讲。


关键字:内存控制器  片上系统 引用地址:s3c2440裸机-内存控制器1-内存控制器的原理

上一篇:s3c2440裸机-内存控制器2-不同位宽外设与CPU地址总线的连接
下一篇:s3c2440裸机-UART编程-2-UART编程实现

推荐阅读最新更新时间:2024-11-05 19:12

十六、S3C2440裸机—UART
16.1 介绍   UART(Universal Asynchronous Receiver Transmitter),通用异步收发器,用来传输穿行数据时   UART 之间以全双工方式传输数据,连线方法只有 3 根电线:TXD 用于发送数据,RXD 用于接收数据,GND用于给双方提供参考地。      串口数据线以 “位”为最小单位传输数据。帧(frame)由具有完整意义的、不可分割的若干位组成,它包含开始位、数据位、校验位和停止位。   UART 使用标准的 TTL/CMOS 逻辑电平(0~5V、0~3.3V、0~2.5V 或 0~1.8V)来表示数据,高电平表示1,低电平表示0。为了增强数据的抗干扰能力、提高传输长度,通常
[单片机]
十六、<font color='red'>S3C2440</font><font color='red'>裸机</font>—UART
S3C2440裸机------LCD_显示文字
1.显示文字的原理 我们在内核源码中搜索font,找到font_8x16.c,然后我们从里面找到字符A的点阵,一共由16个字节组成,其中字节的每一位表示该位是0还是1。 2.font.c extern const unsigned char fontdata_8x16 ; /* 获得LCD参数 */ static unsigned int fb_base; static int xres, yres, bpp; void font_init(void) { get_lcd_params(&fb_base, &xres, &yres, &bpp); } /* 根据字母的点阵在LCD上描画文字 */ void f
[单片机]
<font color='red'>S3C2440</font><font color='red'>裸机</font>------LCD_显示文字
利用3D打印在微芯片上创建出IoT控制系统
2017年12月26日,美国空军研究实验室(AFRL)与美国半导体公司近日合作在一块用硅树脂3D打印的微芯片上创建出了物联网(IoT)控制系统,由此制造出了有史以来最复杂之一的柔性集成电路。而这就有望进一步推动可穿戴电子产品的发展。 “典型的硅基集成电路是刚性的,十分脆弱,必须以一种可以保护它们的方式封装,因此很难被用于柔性电子产品,”AFRL的科学家DanBerrigan博士解释说,“于是,我们与美国半导体公司合作它们进行了细化,让它们变得更薄却仍具备电路功能。如此一来,我们就可以将微控制器放到之前无法嵌入的地方了。” 值得一提的是,这种新型微芯片的复杂性前所未有的,超过现有商用芯片的7000倍。这就意味着它可以控制一
[物联网]
利用3D打印在微芯<font color='red'>片上</font>创建出IoT控制<font color='red'>系统</font>
s3c2440裸机-内存控制器(三-4、norflash编程之实现)
1.识别norflash 我们知道要识别norflash属性,要让norflash进入cfi模式,然后按照手册上的表格发送一系列的命令就能获取norflash属性。 1)发送命令 那么我们需要实现一个cpu向nor发命令的一个函数nor_cmd()。我们的norflash是16bit位宽的,所以访问nor是以16位为单位访问的。 #define NOR_FLASH_BASE 0 /* jz2440, nor-- cs0, base addr = 0 */ /* 比如: 55H 98 ** 本意是: 往(0 + (0x55) 1)写入0x98 */ void nor_write_word(unsigned int b
[单片机]
<font color='red'>s3c2440</font><font color='red'>裸机</font>-<font color='red'>内存</font><font color='red'>控制器</font>(三-4、norflash编程之实现)
S3C2440裸机------GPIO
1.S3C2440GPIO简单介绍 GPIO即General-purpose input/output ,这些管脚除了可以用作输入输出外,还可以配置成一些其他的功能,例如I2C,UART等,其实就是管脚复用的思想。 所有的这些管脚主要通过下面的寄存器进行控制, 2.JZ2440原理图 从上面的原理图截图中我们可以看到: 1.我们的nLED_1,nLED_2,nLED_4是连接到3.3V电源上的,所以我们的管脚需要输出低电平,LED灯才会亮。 2.我们的nLED_1,nLED_2,nLED_4是连接到s3c2440的GPF4,GPF5,GPF6上面的。 另外,在原理图中还有如下知识点。 3.控
[单片机]
<font color='red'>S3C2440</font><font color='red'>裸机</font>------GPIO
S3C2440裸机------I2C_S3C2440的I2C控制器控制时序
1.寄存器 S3C2440的I2C主要由以下四个寄存器来控制。 2.数据传输流程
[单片机]
<font color='red'>S3C2440</font><font color='red'>裸机</font>------I2C_S3C2440的I2C<font color='red'>控制器</font>控制时序
ROHM与清华大学发布了可用于物联网的非易失片上系统
电子网消息,2017年6月8日,国际半导体与集成电路领域的顶级会议“2017 Symposia on VLSI Technology and Circuits国际研讨会(简称“2017 VLSI国际研讨会”)”在日本京都成功举行。在本次研讨会上,ROHM与清华大学共同发布了采用铁电技术,面向无线传感网节点应用的超低功耗片上系统(SoC)的相关技术及性能,并向众多与会者演示了系统的工作情况。 无线传感网节点(WSN)是实现物联网的关键部件。采用从环境中采集的能量(如太阳能)对WSN供电,可免去频繁更换电池或需使用电源线带来的极大不便。因此,基于利用能量采集来实现无电池WSN的技术被业界寄予厚望。但是,基于目前环境能量采集技术所能
[半导体设计/制造]
win7下keil4开发s3c2440裸机的开发环境搭建
ADS在win7下不稳定并且官方早就已经不更新,并且本人常用MDK进行嵌入式软件开发,MDK简单好用,功能强大,所以想用MDK来进行开发S3C2440的裸机开发。从网上找里好多大神的博客,搭建环境时,出现很多奇怪的问题,写此博客一是记录一下,二是想让新搭建环境的同行少走一些弯路。 1、平台 1)、操作系统:win7 64位 2)、KEIL版本:4.74 3)、jlink V9下载器 4)、开发板:FL2440 keil软件以及jlink驱动安装可自行百度安装。 2、新建工程 2.1、选择project下的New uVision Project新建个工程 设置工程路径以及工程名字 ##2.2、选
[单片机]
win7下keil4开发<font color='red'>s3c2440</font><font color='red'>裸机</font>的开发环境搭建
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved