2440裸机-12-1内存控制器与SDRAM_内存接口

发布者:Heavenly999最新更新时间:2020-04-18 来源: eefocus关键字:2440裸机  内存控制器  SDRAM  内存接口 手机看文章 扫描二维码
随时随地手机看文章

1.内存接口介绍

1.1.内存控制器的引入

1.1.1 引入


2440是一个SOC,其中外设分为多种类型:


门电路类:GPIO

协议类接口: UART I2C SPI

内存类设备:nor flash ,SDRAM,NET DM9000

但是对于CPU来说,并不直接控制外设,只需要将值写给相关外设模块的寄存器,CPU通过地址来区分不同的寄存器,因此就需要引入另一个控制单元——内存控制器

在这里插入图片描述

除NAND外,以上外设都是CPU统一编址。

NAND FLASH和外接的存储器不是同一类型的,片内有一个专门的NAND控制来对外接的NAND FLASH硬件进行控制,所以NAND FLASH又属于另外一部分。

nand启动时,cpu认为的0地址是片内内存;nor启动时,cpu认为的0地址是nor flash.


1.1.2 作用

根据CPU发出的地址来选择不同的模块,把数据发送给模块,或者取出数据并且返回给CPU。


1.2.内存接口

通常ARM芯片内置的内存很少,要运行Linux,需要扩展内存。ARM9扩展内存使用SDRAM内存,ARM11使用 DDR SDRAM。S3C2440通常外接32位64MBytes的SDRAM,采用两片16位32M的SDRAM芯片,SDRAM芯片通过地址总线、数据总线、若干控制线与S3C2440芯片相连。


特性:

支持大/小端(通过软件选择)

每个BANK的地址空间为128M,总共1GB(8 BANKs)

可编程控制的总线位宽(8/16/32bit),不过BANK0只能选择两种位宽(16/32bit)

总共8个BANK,BANK0-BANK5可以外接ROM,SRAM等,BANK6-BANK7除可以支持ROM, SRAM外还支持SDRAM等

BANK0-BANK6共7个BANK的起始地址是固定的

BANK6,BANK7的地址空间大小是可编程控制的

每个BANK的访问周期均可编程控制

在外接SDRAM时,支持自刷新和省电模式


1.CPU发出的信号并不会直接输出到外部电路去,但是凡事都有例外,例如内存接口

2.对于内存接口,CPU发出的地址可以直接传给内存类设备(NOR,网卡,内存)

3.在内存芯片上有地址总线,数据总线,可以直接接收CPU发出的地址,数据

4.对于内存类设备会共用地址总线,因此引入片选引脚cs(chip select)以此可以得以区分当前地址线和数据线的外接模块。

5.只有当某个片选引脚输出低电平是对应的设备才被选中,可以向CPU提供数据


1.2.1 片选引脚

在这里插入图片描述

1.2.2 谁来控制片选引脚?

(CPU只发出地址信号)

内存控制器根据CPU发出的地址来决定发出不同的片选信号,不需要再人为的去控制引脚。

地址与片选信号关系如下图:

在这里插入图片描述

1.2.3 如何确定数据传输方向

对于SDRAM、DM9000、NOR芯片上都有读写信号来表示数据传输方向.

外接存储器处于写入或读取状态,要根据外接存储器的特性进行对引脚的操作,有的需要一个根W引脚,一个R引脚,有的只需要一根引脚控制W/R。


1.2.4 关于32位CPU的疑惑

其中每块地址范围为128M=2^27,因此至少需要A0,A1-A26,共27条地址线,但是cpu是32位的,却只用了27条地址线?


CPU发出32位的addr给内存控制器,内存控制器再来发出片选信号和addr0-addr26的地址信号.


CPU确实发出了32位的地址,但是内存控制器只用到了0-26.


1.2.5 特殊的NAND

对于GPIO、UART、I2C、SDRAM、DM9000、NOR都是CPU统一编制的,但是对于NAND原理图如下:

在这里插入图片描述

并没有地址总线,不属于CPU的统一编址,


但是Nand的数据信号仍然接到总线上,因此肯定会有片选信号,NAND的片选信号来自于NAND FLASH控制器发出


2 其他

SRAM 静态随机存储器

SROM 静态只读存储器

RAM 随机存储器

ROM 只读存储器

DRAM 动态随机存储器

SDRAM 同步动态随机存储器

NOR FLASH, NAND FLASH 非易失闪存技术

关键字:2440裸机  内存控制器  SDRAM  内存接口 引用地址:2440裸机-12-1内存控制器与SDRAM_内存接口

上一篇:韦东山ARM第一期作业(三)内存控制器和SDRAM
下一篇:【s3c2440】第三课:代码重定位

推荐阅读最新更新时间:2024-11-12 07:45

用C语言和ARM汇编语言设置SDRAM的惯用方法
用C语言设置SDRAM的惯用方法 /* SDRAM regisers */ #define MEM_CTL_BASE 0x48000000 // BWSCON的地址 #define SDRAM_BASE 0x30000000 // SDRAM的起始地址 /* SDRAM 13个寄存器的值 */ /* 定义了一个数组,把13个寄存器的设置值存到一个数组里面 */ unsigned long const mem_cfg_val ={ // 注意unsigned long const 的含义 0x22111110, //BWSCON
[单片机]
s3c2440 ARM9 裸机驱动第三篇—定时器
定时器这篇是比较艰辛的,过程中出现了很多小问题,有些解决了,有些还是没有完全弄明白,这些问题主要集中在汇编部分的程序。 此部分主要是通过定时器中断的方式实现LED灯的闪烁。 一、硬件部分: 1.LED部分:参见之前的文章 2.定时器: 定时器的频率:Timer input clock Frequency = PCLK / {prescaler value+1} / {divider value} {prescaler value} = 0~255 {divider value} = 2, 4, 8, 16 其中PCLK如果配置了MPLL就是50M,prescaler value配置TCFG0得到,divider
[单片机]
s3c<font color='red'>2440</font> ARM9 <font color='red'>裸机</font>驱动第三篇—定时器
micro2440 LCD裸机测试
最近几天在弄micro2440的LCD,遇到了诸多问题,今天将其记下来,顺便给想要写的同行们做个参考,少走写弯路。 首先说明一下我用的环境:ubuntu12.04 ,micro2440(可以用于mini2440)。 一. 准备工作 我们在写测试程序之前首先应该先了解一下s3c2440里面对于LCD这部分需要设置哪些寄存器。如果我们光看datasheet可能会不怎么看的懂,我在学的时候结合了伟东山的《嵌入式linux应用开发》和他的关于LCD的看控制的那个视频。其中还会涉及到一些关键词,可以结合lcd的资料来了解这些词语的意思。 下面将涉及的关键词语列出来。 VSYNC: 帧同步信号,表示扫描1帧的开始
[单片机]
micro<font color='red'>2440</font> LCD<font color='red'>裸机</font>测试
s3c2440裸机-代码重定位-2-编程实现
代码重定位(2.编程实现代码重定位) 1.引入链接脚本 我们上一节讲述了为什么要重定位代码,那么怎么去重定位代码呢? 上一节我们发现 arm-linux-ld -Ttext 0 -Tdata 0x30000000 这种方式编译出来的bin文件有800多M,这肯定是不行的,那么需要怎么把.data段重定位到sdram呢? 可以通过AT参数指定.data段在编译时的存放位置,我们发现这样指定太不方便了,而且不好确定要放在bin文件的哪个位置。这里就要引入链接脚本,它可以帮我们解决这个不必要的麻烦。 链接脚本格式 格式如下图: 我们来看一个具体的例子: SECTIONS { . = 0x00000000; //表示当前
[单片机]
韦东山ARM裸机学习笔记——S3C2440的串口驱动编程原理
前言 讲解韦东山JZ2440开发板的串口驱动原理,对韦东山在维基教程串口使用内容的一些补充,串口使用点击这里进入。这里主要讲的是串口驱动的编程思路,如何根据s3c2440的芯片手册编写出最简单的串口驱动。 一、串口的初始化 串口初始化包括引脚初始化、串口时钟初始化和中断模式、波特率配置以及参数配置等。 1、引脚初始化 (1)看JZ2440开发板的原理图,可知UART0的引脚是GPH2(TXD0)和GPH3(RXD0)。 (2)到s3c2440芯片手册295页,看GPHCON(GPH控制寄存器),可以需要把GPH2也就是GPHCON 配置为10,GPH3也就是GPHCON 配置为10。 (3)配置引脚为内部上拉,
[单片机]
韦东山ARM<font color='red'>裸机</font>学习笔记——S3C<font color='red'>2440</font>的串口驱动编程原理
s3c2440裸机-电阻触摸屏-4.2-isr设计_支持长按和滑动
1.改进定时器 五. irq之定时器中断这记一节中,是在handle_irq_c()中去区分中断源,执行不同的isr。那现在通过register_timer注册对应的定时器中断服务程序,timer_irq进行执行不同的定时器中断服务程序。 #define TIMER_NUM 32 #define NULL ((void *)0) typedef void(*timer_func)(void); typedef struct timer_desc {   char *name;   timer_func fp; }timer_desc, *p_timer_desc; timer_desc timer_array ; int regi
[单片机]
裸机系列——2440实时时钟
对于2440的实时时钟操作还是比较简单的,难点的地方在于用设置串口通信来控制时钟时钟的读写设置时间和闹铃。但是用串口控制时钟终将只能用于测试,对于产品的话必然要用到显示器,或者lcd或者数码管,不过现代的时钟更加趋向于用lcd 况且能显示更多的信息。 1. 时钟的数据已经存到寄存器中了,只有读取寄存器的值就可以读出时钟,注意当秒钟为0的时候需要重新读取寄存器的值,这里有个一秒的问题。 2.数据的格式为BCD码,用4位二进制表示出十进制数,其本质还是二进制编码。 3. 数据的格式适合用结构体,还有多命令控制时用枚举类型比较好,以后要多用习惯这样的用法。 4.闹铃中断的发生,当设定的闹铃时间和时钟的时间相同时闹铃中断,
[单片机]
SDRAM连接电路设计详解
介绍SDRAM电路设计之前先了解下SDRAM的寻址原理。SDRAM内部是一个存储阵列,可以把它想象成一个表格,和表格的检索原理一样,先指定行,再指定列,就可以准确找到所需要的存储单元,这是内存芯片寻址的基本原理,这个表格称为逻辑Bank。由于技术、成本等原因,不可能只做一个全容量的Bank,而且由于SDRAM工作原理限制,单一的Bank会造成非常严重的寻址冲突,大幅降低内存效率,所以在SDRAM内部分割成多个Bank,目前的SDRAM基本都是4个Bank。 图2是S3C2440A手册提供的SDRAM bank地址的配置方案,维护系统使用的SDRAM是HY57V561620FTP-H,它的规格是4*4M*16bit(
[电源管理]
<font color='red'>SDRAM</font>连接电路设计详解
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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