S3C2440 FLASH 介绍

发布者:温柔心情最新更新时间:2019-02-13 来源: eefocus关键字:S3C2440  FLASH 手机看文章 扫描二维码
随时随地手机看文章

S3C2440 有27 根地址线ADDR[26:0],8 根片选信号ngcs0-ngcs7,对应bank0-bank7.


     当访问BankN(N=0,1,2,...7) 的地址空间,ngcsN(N=0,1,2,...7)  引脚为低电平,选中外设。

每一个Bank容量:2^27=2^7 * 2^10 * 2^10 = 128Mbyte

总共有8个Bank,所以总寻址大小是:8*128Mbyte = 1Gbyte

所以S3C2440 总的寻址空间是1Gbyte。
     

市面上很少有32 位宽度的单片SDRAM,一般选择2 片16 位SDRAM 扩展得到32位SDRAM.

     

选择的SDARM 是HY57V561620F,4Mbit * 4bank *16,共32Mbyte。

     

首先了解下 SDRAM 的寻址原理。
     

SDRAM 内部是一个存储阵列。可以把它想象成一个表格。和表格的检索原理一样,先指定行,再指定列,就可以准确找到所需要的存储单元。这个表格称为逻辑BANK。目前的SDRAM 基本都是4 个BANK。寻址的流程就是先指定BANK 地址,再指定行地址,最后指定列地址。这就是SDRAM 的寻址原理。存储阵列示意图如下:


     


查看HY57V561620F 的规格书,这个SDRAM 有

13 根行地址线 RA0-RA12

9 根列地址线 CA0-CA8

2 根BANK 选择线 BA0-BA1


SDRAM 的地址引脚是复用的,在读写SDRAM 存储单元时,操作过程是将读写的地址分两次输入到芯片中,每一次都由同一组地址线输入。两次送到芯片上去的地址分别称为行地址和列地址。它们被锁存到芯片内部的行地址锁存器和列地址锁存器。


/RAS 是行地址锁存信号,该信号将行地址锁存在芯片内部的行地址锁存器中;

/CAS 是列地址锁存信号,该信号将列地址锁存在芯片内部的列地址锁存器中。


 


SDRAM 的A0 接S3C2440 的ADDR2,很多初学者都对这里又疑问。A0 为什么不接ADDR0?

要理解这种接法,首先要清楚在CPU 的寻址空间中,字节(8 位)是表示存储容量的唯一单位。

用 2 片HY57V561620F 扩展成32 位SDRAM,可以认为每个存储单元是4 个字节。因此当它的地址线A1:A0=01 时,处理器上对应的地址线应为ADDR3:ADDR2=01(因为CPU 的寻址空间是以Byte 为单位的)。所以SDRAM 的A0 引脚接到了S3C2440 的ADDR2 地址线上。同理,如果用 1 片HY57V561620F,数据线是16 位,因为一个存储单元是2 个字节,这时SDRAM 的A0 要接到S3C2440 的ADDR1 上。


也就是说 SDRAM 的A0 接S3C2440 的哪一根地址线是根据整个SDRAM 的数据位宽来决定的。
     

上面的接线图上,BA0,BA1 接ADDR24,ADDR25,为什么用这两根地址线呢?BA0~BA1 代表了SDRAM 的最高地址位。因为CPU 的寻址空间是以字节(Byte)为单位的,本系统SDRAM 容量为64MByte,那就需要A25~A0(64M=2^26)地址线来寻址,所以BA1~BA0 地址线应该接到2440 的ADDR25~ADDR24 引脚上。13 根行地址线+9 根列地址线 = 22 根。另外HY57V561620F 一个存储单元是2 个字节,相当于有了23 根地址线。BA0,BA1 是最高地址位,所以应该接在ADDR24,ADDR25 上。


也就是说 SDRAM 的BA0,BA1 接S3C2440 的哪几根地址线是根据整个SDRAM 的容量来决定的。

 

 

S3C2440 与NOR FLASH(AM29LV160DB)的接线分析
      

NOR FLASH 的特点是芯片内执行(XIP, eXecute In Place),这样应用程序可以直接在flash 闪存内运行,不必再把代码读到系统RAM 中。NOR 的传输效率很高,在1~4MB 的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。

NOR FLASH 的地址线和数据线是分开的。

AM29LV160DB 是一个2Mbyte 的NOR FLASH,分区结构是:

1 个16Kbyte 扇区,2 个8Kbyte 扇区,1 个32Kbyte 扇区,31 个64Kbyte 扇区(字节模式)

1 个8Kbyte 扇区,2 个4Kbyte 扇区,1 个16Kbyte 扇区,31 个32Kbyte 扇区(半字模式)

共35 个扇区。

下图是TQ2440 开发板提供的NOR FLASH 部分接线图。




AM29LV160DB 第47 脚是BYTE#脚,BYTE#接高电平时,器件数据位是16 位,接低电平时,数据位是8 位。上图BYTE#接VCC,D0-D15 做为数据输入输出口。

A0-A19 是地址线,在半字模式下,D0-D15 做为数据输入输出口。因为数据位是16 位,A0-A19 可以选择2^20 = 1M *2BYTE = 2Mbyte。正好是AM29LV160DB 的容量。

S3C2440 的ADDR1 要接AM29LV160DB 的A0。上图中AM29LV160DB 的A20,A21 是空脚,分别接的是LADDR21,LADDR22。这应该是为了以后方便扩展NOR FLASH 的容量。LADDR21,LADDR22 对AM29LV160DB 是没用的。

当BYTE#接低电平时,D0-D7 做为8 位数据输入输出口,D15 做为地址线A-1。

相当于有了A-1,A0-A19 共21 根地址线。这个时候S3C2440 的ADDR0 应该接在D15(A-1)。。。。ADDR20 接A19。21 根地址线的寻址空间是2^21 = 2Mbyte。正好是AM29LV160DB 的容量。


S3C2440 与NAND FLASH(K9F1208)的接线分析

 

NAND FLASH 的接线方式和NOR FLASH,SDRAM 都不一样。以TQ2440 开发板用的K9F1208 为例,分析NAND FLASH 的接线方式。

K9F1208 结构如下图

 

 

K9F1208 位宽是8 位。

一页: 512byte + 16byte 最后16byte 是用于存储校验码和其他信息用的,不能
存放实际的数据。

一个块有32 page:(16k+512)byte 

K9F1208 有4096 个块:(64M+2M)byte,总共有64Mbyte 可操作的芯片容量NAND FLASH 以页为单位读写数据,以块为单位擦除数据。

S3C24440 和K9F1208 的接线图如下:


 

下图是S3C2440 的NAND FLASH 引脚配置:


 

当选定一个NAND FLASH 的型号后,要根据选定的NAND FLASH 来确定S3C2440 的NCON,GPG13,GPG14,GPG15 的状态。

下图是S3C2440 中4 个脚位状态的定义:


 

K9F1208 的一页是512byte,所以NCON 接低电平,GPG13 接高电平。


K9F1208 需要4 个寻址命令,所以GPG14 接高电平

K9F1208 的位宽是8,所以GPG15 接低电平。


NAND FLASH 寻址

对K9F1208 来说,地址和命令只能在I/O[7:0]上传递,数据宽度是8 位。

地址传递分为4 步,如下图:

  

 

第1 步发送列地址,既选中一页512BYTE 中的一个字节。512byte 需要9bit 来选择,这里只用了A0-A7,原因是把一页分成了2 部分,每部分256 字节。通过发送的读命令字来确定是读的前256 字节还是后256 字节。

当要读取的起始地址(Column Address)在0~255 内时我们用00h 命令,当读取
的起始地址是在256~511 时,则使用01h 命令。

一个块有32 页,用A9-A13 共5 位来选择一个块中的某个页。

总共有4096 个块,用A14-A25 共12 位来选择一个块。

K9F1208 总共有64Mbyte,需要A0-A25 共26 个地址位。

例如要读NAND FLASH 的第5000 字节开始的内容。把5000 分解成列地址和行地址。

Column_address = 5000%512 = 392

Page_address = (5000>>9) = 9

因为column_address>255,所以用01h 命令读

发送命令和参数的顺序是:

NFCMMD = 0x01;从后256 字节开始读

NFADDR = column_address & 0xff;取column_address 的低8 位送到数据线

NFADDR = page_address & 0xff;发送A9-A16

NFADDR = (page_address >>8) & 0xff; 发送A17-A24

NFADDR = (page_address >> 16) & 0xff;发送A25

上面的NFCMMD,NFADDR.是S3C2440 的NAND FLASH 控制寄存器。读取的数据会放在NFDATA 中。


关键字:S3C2440  FLASH 引用地址:S3C2440 FLASH 介绍

上一篇:S3C2440 GPIO例子在ISRAM内仿真分析
下一篇:S3C2440的时钟原理

推荐阅读最新更新时间:2024-03-16 16:23

s3c2440裸机-I2c编程-3.i2c中断服务程序
Start信号之后,发出设备地址,在第9个时钟就会产生一个中断,我们根据i2c的流程图来编写中断程序。 每传输完一个数据将产生一个中断,I2C操作的主体在中断服务程序,它可以分为两部分:写操作,读操作。 完整code如下: static p_i2c_msg p_cur_msg; int isLastData(void) { if (p_cur_msg- cnt_transferred == p_cur_msg- len - 1) return 1; /* 正要开始传输最后一个数据 */ else return 0; } void resume_iic_with_
[单片机]
STM32F103CB 芯片FLASH DOWNLOAD编程地址范围设置相关问题记录
程序模式:IAP+APP 地址分配:IAP:8000000H-8003FFFH,APP:8004000H-801FFFFH FLASH DOWNLOAD地址设置:IAP:8000000H-801FFFFH APP:8004000H-801FFFFH 刚开始分2个步骤通过jlink把程序下载进去,可以调试APP。 后来用IAP方式烧了一个错误的APP程序进去,然后就发现APP部分怎么也无法调试,在IAP部分用jlink查看FLASH区域,发现8004000H的内容没有任何变化,说明APP在调试的时候并没有把程序下载进去,改了下FLASH DOWNLOAD地址设置:8000000H-801FFFFH,然后就可以正常调试
[单片机]
STM32F103CB 芯片<font color='red'>FLASH</font> DOWNLOAD编程地址范围设置相关问题记录
美光NOR Flash出售,传兆易华邦最有希望收购
集微网消息,全球存储器业务整并潮持续进行,美光科技将退出NOR Flash业务,计划出售旗下NOR芯片业务,正寻求相关买家,全力冲刺DRAM及3D NAND Flash,传华邦电及兆易创新可能接手。 美光当初并入此芯片事业花12亿美元,以目前内存市况持续加温来看,要以多少价格出售,有待观察。 半导体设备相关人士透露,美光已和多家厂商接洽,主因美光认为NOR芯片业务在该公司营收占比不高,产能也不具经济效益,且近年全力聚焦在DRAM和NAND两大内存的效益整合,因而计划出售NOR芯片业务,战力集中在提升DRAM和NAND芯片全球份额。 美光内部证实确有此规划,但发言体系不愿透露相关细节。 华邦电总经理詹东义则表示未听说此事,但会慎重进
[手机便携]
第50章 读写内部FLASH—零死角玩转STM32-F429系列
本章参考资料:《STM32F4xx 中文参考手册》、《STM32F4xx规格书》、库说明文档《stm32f4xx_dsp_stdperiph_lib_um.chm》。 50.1 STM32的内部FLASH简介 在STM32芯片内部有一个FLASH存储器,它主要用于存储代码,我们在电脑上编写好应用程序后,使用下载器把编译后的代码文件烧录到该内部FLASH中,由于FLASH存储器的内容在掉电后不会丢失,芯片重新上电复位后,内核可从内部FLASH中加载代码并运行,见图 501。 图 501 STM32的内部框架图 除了使用外部的工具(如下载器)读写内部FLASH外,STM32芯片在运行的时候,也能对自身的内部FLASH进行读
[单片机]
第50章 读写内部<font color='red'>FLASH</font>—零死角玩转STM32-F429系列
RT-Thread Studio片上Flash 实现Flash抽象层FAL笔记
使用ATK-NANO STM32F411的开发板, 实现Flash抽象层FAL。 先添加fal的软件包,并复制fal_cfg.h到drivers目录下: 复制C:RT-ThreadStudiodownloadrt-thread-sdkrt-thread-srcv4.0.2bspstm32librariesHAL_Driversdrv_flash目录下的drv_flash.h文件和对应的flash驱动文件如drv_flash_f4.c到drivers目录下,复制上一级目录的drv_log.h到drivers目录下,并注释drv_flash_f4.c文件中的#include drv_config.h 。 修改fal_cfg
[单片机]
RT-Thread Studio片上<font color='red'>Flash</font> 实现<font color='red'>Flash</font>抽象层FAL笔记
ATmega8 Flash程序存储器
系统内可编程的Flash 程序存储器 ATmega8具有8K字节的在线编程Flash,用于存放程序指令代码。因为所有的AVR指令为 16位或32位,故而Flash组织成4K x 16位的形式。用户程序的安全性要根据Flash程序存 储器的两个区:引导(Boot) 程序区和应用程序区,分开来考虑。 Flash 存储器至少可以擦写10,000 次。ATmega8的程序计数器(PC) 为12 位,因此可以寻 址4K 字的程序存储器空间。引导程序区以及相关的软件安全锁定位请参见P 196“ 支持引 导装入程序 -在写的同时可以读(RWW, Read-While-Write) 的自我编程能力” ,而P 209“ 存储器编程” 详述了用
[单片机]
ATmega8 <font color='red'>Flash</font>程序存储器
realme Flash真机揭秘:磁吸无线充全程满功率
8月1,realme官微正式宣布了“realme Flash”机型,并透露该机将成为安卓首款磁吸无线充电手机。   不过,虽然该机在国内外已经预热许久,但是官方至今未曾公布过关于磁吸无线充电的具体信息,包括充电功率等信息。   近日,知名爆料博主@数码闲聊站曝光了realme Flash的真机,其中背部的磁吸式无线充电器非常醒目,该设备正式此前传闻中超薄款的无线充电器,相比iPhone 12的充电器更加轻薄。   值得一提的是,根据充电数据显示,realme Flash的15W充电实测结果非常出色,基本能全程跑满15W的充电功率,完全可以满足日常使用,可以说是吊打了iPhone 12的充电体验。   除此之外,博主@科技小新
[手机便携]
嵌入式软件代码保护系统设计
目前的嵌入式系统中, 软件代码一般存储在诸如EEPROM、F lash等存储器中, 但其中存储的程序代码易被读取, 非法拷贝, 是其致命弱点。 目前为止, 有些厂商采取先预先加密软件代码, 写入存储器中, 执行时, 通过软件解码来实现对代码的保护, 但是这种方法效率低, 成本高, 实用性比较低; 现有的一些硬件加解密系统, 只能保护有限类型的NAND- Flash存储器中的代码, 并且系统中的密匙一旦固化就无法改变。针对这些局限性, 本文提出了一种全新的嵌入式产品软件代码保护系统, 该系统适用于目前通用的基于I2C、SPI总线的EEPROM 和F lash;以及主流厂商的NAND- Flash。 1 嵌入式软件代码保护系统构成
[单片机]
嵌入式软件代码保护系统设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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