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-17 17:03

S3C2440裸机------LCD_使用调色板
1.调色板地址 调色板就是一块内存的地址,我们在s3c2440的芯片手册中搜索palette,可以找到调色板的地址。 2.s3c2440_lcd_controller.c 我们在s3c2440_lcd_controller.c里面设置调色板。 #include lcd.h #include lcd_controller.h #include ../s3c2440_soc.h #define HCLK 100 void jz2440_lcd_pin_init(void) { /* 初始化引脚 : 背光引脚 */ GPBCON &= ~0x3; GPBCON |= 0x01; /* LC
[单片机]
<font color='red'>S3C2440</font><font color='red'>裸机</font>------LCD_使用调色板
探析SoC(片上系统)的未来之路
  SoC的理想境界是具有普遍性且具高度定制性,在这种条件下,SoC的技术越来越具有多样化。   预计到2011年,全球消费类电子系统芯片产量将增长到17.7亿元,复合年成长率为6.9%。这一数据反映出消费类IC市场正进入“更加成熟的阶段”,视频处理、视频合成、人工智能等技术的应用,将为该领域的成长提供核心动力。   Gartner Dataquest副总裁兼首席分析师Bryan Lewis指出,在历经数年摸索后,SoC的架构已逐渐明朗,他称之为第二代SoC。Bryan表示,这一代的SoC已走向混合型的架构,也就是除了功能的多样性外,也尝试采用混合型的制程技术。   第二代SoC的另一项特征在于次系统的独立性与平行工作,也就
[焦点新闻]
S3C2440开发板裸机程序系列07—NAND FLASH存储器
1. 概述 我的TQ2440开发板上安装有2M的NOR FLASH和512M的NAND FLASH。 NOR FLASH 的特点是芯片内执行(XIP, eXecute In Place),应用程序可以直接在 NOR FLASH 里运行,不必再把代码读到系统RAM中(可以节约SRAM的成本)。NOR的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。 NAND FLASH的特点是有很高的存储密度,并且写入和擦除速度也很快,但是无法直接寻址运行程序,接口上需要专门的控制器。另外NAND FLASH 非常容易出现坏区,所以需要有校验的算法。 因此,NOR FLASH一
[单片机]
<font color='red'>S3C2440</font>开发板<font color='red'>裸机</font>程序系列07—NAND FLASH存储器
jz2440裸机开发与分析:内存控制器4之SDRAM设置
LDR R0,=0X30000000 ➡CPU发给内存控制器:①发出nGCS6;②根据(SDRAM)类型拆分地址:a,BANK地址,b,行地址, c,列地址 ;③读数据 LDR R1, 问题:如何拆分?行地址几条?列地址几条? 2440内存控制器设置 1、BWSCON寄存器配置=0x22000000 2、BANKCON6寄存器配置 3、REFRESH刷新寄存器配置 4、BANHSIZE配置 5、MRSRB6 SDRAM中有一个MR寄存器(含有CL),用来确定列地址到发出数据中间间隔的时间,而2440内的MRSRB6寄存器也有一个CL,2440根据内部CL设定的值,再通过发送数据去确定SDRAM中的C
[单片机]
jz2440<font color='red'>裸机</font>开发与分析:<font color='red'>内存</font><font color='red'>控制器</font>4之SDRAM设置
S3C2440—2.裸机开发步骤及工具使用
一.裸机开发步骤简介 1.在X86架构的Windows系统中 1.建立工程 2.编辑源代码 3.编译(VC6.0) 4.运行 2.在X86架构的Ubuntu系统中 1.编辑源代码(vim) 2.编译(gcc) 3.运行 3.ARM裸机开发 1.编辑源代码(Windows:Source insight或者Notepad++) 2.编译(涉及到交叉编译:arm-linux-gcc) arm-linux-gcc是基于Linux系统的arm编译器,功能强大、稳定、支持qrm芯片多。 3.烧写 4.运行 注意: 使用ads(停止更新)、MDK编译器,是win系统的编译器,功能很弱,只适合个
[单片机]
<font color='red'>S3C2440</font>—2.<font color='red'>裸机</font>开发步骤及工具使用
几种主流SoC(片上系统)验证技术
  SoC验证技术已经落后于设计和制造能力,如何构建更快更好的设计验证方法是当前最大的问题。   SoC经过近十年的发展,有了广阔的市场。SoC验证研究领域在验证技术、验证方法学、测试码提取、验证描述语言、IP核重用验证、验证流程及验证评估方面取得了长足进步。但总体而言,验证、模拟和验证工作成为整个SoC学科发展的制约瓶颈,是提高设计生产率的障碍。   目前芯片一次投片成功率在35%左右,造成重复投片的主要原因就是验证不够充分。1999年当VSIA举行验证专题会时,许多世界级验证专家得出结论: 验证是件困难的事(hard),几周后又把结论更正为“Verification is not hard,it is very hard”
[焦点新闻]
几种主流SoC(<font color='red'>片上</font><font color='red'>系统</font>)验证技术
基于MDK+jlink平台s3c2440裸机程序
硬件:mini2440 编译器:MDK3.50 调试工具:J-LINK 此工程只能在SDRAM中调试,不能脱机运行(如何烧写到NAND中运行,等续)。 1、建立MDK工程 A.在你的工作目录下建立S3c2440-Beep文件夹,在此文件夹下建立Obj文件夹。 B.打开MDK,在project菜单下点击 New uvision Project ,输入工程名称为S3C2440-Beep,保存, C.选择CPU, Samsung - S3C2440A ,点击OK, D.弹出是否将S3C2440启动代码添加进Project,选择“是”。 2、配置 A.在C:\Keil\ARM\Boards\Samsung\S3C244
[单片机]
S3C2440开发板裸机程序系列08—中断控制
1. 概述 最近刚刚在TQ2440上面调通了ADXL345的I2C控制,可通过串口和TFT屏查看XYZ三个轴倾角变化,本来打算把TQ2440上面的I2C控制详细解说一下,但是还跳了2个知识点:中断和I2C协议。所以还要等我补充完这2个知识点再说。(I2C协议要从51单片机说起,后面总结时再谈吧) 从程序的执行过程来说,可以分为:正常执行,跳转执行(Arm汇编是B和BL指令,B指令不返回),中断处理。 从嵌入式控制的要求来说,一个嵌入式装置要完成大量的数据采集、数据变换、外设控制等功能,这些子功能的实现一般分为:查询方式和中断方式。显然中断方式可以提高处理器利用率,提高系统实时性。 S3C2440的中断包括快速中断FIQ
[单片机]
<font color='red'>S3C2440</font>开发板<font color='red'>裸机</font>程序系列08—中断控制
小广播
设计资源 培训 开发板 精华推荐

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

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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