s3c2440裸机-内存控制器(三、norflash初始化-时序设置)
1.flash种类与特性:
flash一般分为nand flash和nor flash,各自特性如下表:
| - | Nor | NAND |
|---|---|---|
| XIP(片上执行) | yes | no |
| 性能(擦除) | 非常慢(5s,块太大) | 快(3ms) |
| 性能(写) | 慢 | 快 |
| 性能(读) | 快 | 快 |
| 可靠性 | 高 | 一般(容易出现位反转) |
| 可擦除次数 | 10000 ~ 100000 | 100000 ~ 1000000 |
| 接口 | 与ram类似,可直接访问任意地址 | I/O接口(无地址线,必须串行访问,命令、地址、数据共用8位IO) |
| 易用性 | 容易 | 复杂 |
| 主要用途 | 常用于保存代码和关键数据 | 用于保存数据 |
| 价格 | 高 | 低 |
| 容量 | 小 | 大 |
| 常用文件系统类型 | jffs | yaffs |
通过对比我们得知nor有以下优缺点相对nand:
优点:
操作简单(可以像内存一样随机访问)
读取速度快
可靠性高,不易出现位反转
缺点:
容量小,价格贵
擦写慢
寿命短
2.norflash地址范围:
Nor Flash属于内存类接口,所以它的地址是由内存控制器统一编址的,可以参考上一节的内存控制器的原理.

参考上一节的不同位宽外设与CPU地址总线的连接,我们得知nor接了bank 0,地址范围是0x0000,0000 ~ 0x001f,ffff。
3.norflash原理:
下面是一款典型的nor flash原理图(MX29LV800BBTC):

我们看到 Nor Flash的引脚有地址线(A0-A20),数据线(DQ0-DQ15),片选信号(nCE)读写使能信号(LnOE/LnWE)等.
Nor Flash可以像内存一样读,但是不能像内存一样写,需要做一些特殊的操作才能进行写操作,这是因为nor是属于rom(只读存储器),不能像ram一样可以任意的写0写1,只能将存储介质中的电平由1变成0,不能将0变成1,所以要向nor中写入数据,必须先进行擦除动作。
3.1 norflash与2440的硬件连接

s3c2440裸机-内存控制器(三、norflash初始化-时序设置)的更多相关文章
- s3c2440裸机-内存控制器(一、内存控制器的原理)
1.内存接口概念 S3C2440是个片上系统,有GPIO控制器(接有GPIO管脚(GPA-GPH)),有串口控制器 (接有TXD RXD引脚),有memory controller内存控制器,有Nan ...
- s3c2440裸机-内存控制器(五、SDRAM编程实现)
配置内存控制器-SDRAM编程配置 2440内存控制器共有13个寄存器. BANK0--BANK5只需要设置BWSCON和BANKCONx(x为0-5)两个寄存器: BANK6.BANK7外接SDRA ...
- s3c2440裸机-内存控制器(二、不同位宽外设与CPU地址总线的连接)
不同位宽设备的连接 black 我们先看一下2440芯片手册上外设rom是如何与CPU地址总线连接的. 8bit rom与CPU地址线的连接 8bit*2 rom与CPU地址线的连接 8bit*4 r ...
- s3c2440裸机-内存控制器(四、SDRAM原理-cpu是如何访问sdram的)
1.SDRAM原理 black (1)SDRAM内部存储结构: (2)再看看与2440连接的SDRAM原理图: sdram引脚说明: A0-A12:地址总线 D0-D15:数据总线(位宽16,2片级联 ...
- 13 数组 Java内存分析 三种初始化
Java内存分析 三种初始化 静态初始化 //静态初始化 创建+赋值 int[] a = {1,2,3}; Man[] mans = {new Man(1,1),new Man(2,2)}; 动态初始 ...
- Day008 三种初始化及内存分析
三种初始化和内存分析 Java内存分析: 堆: 存放new的对象和数组. 可以被所有的线程共享,不会存放别的对象引用. 栈: 存放基本变量类型(会包含这个基本类型的具体数值). 引用对象的变量(会存放 ...
- Java数组02——三种初始化及内存分析
内存分析 三种初始化 例子 package array; public class ArrayDemon02 { public static void main(String[] arg ...
- 启动期间的内存管理之bootmem_init初始化内存管理–Linux内存管理(十二)
1. 启动过程中的内存初始化 首先我们来看看start_kernel是如何初始化系统的, start_kerne定义在init/main.c?v=4.7, line 479 其代码很复杂, 我们只截取 ...
- JAVA之旅(三)——数组,堆栈内存结构,静态初始化,遍历,最值,选择/冒泡排序,二维数组,面向对象思想
JAVA之旅(三)--数组,堆栈内存结构,静态初始化,遍历,最值,选择/冒泡排序,二维数组,面向对象思想 我们继续JAVA之旅 一.数组 1.概念 数组就是同一种类型数据的集合,就是一个容器 数组的好 ...
随机推荐
- [TimLinux] HTTP cookie与session技术
1. HTTP特点 基于TCP/IP协议实现,上层应用协议 版本:HTTP/1.0, HTTP/1.1 HTTP/1.0默认短连接,HTTP/1.1默认长连接 HTTP请求与响应的无状态性 无状态性与 ...
- AtCoder-3867
Find the maximum possible sum of the digits (in base 10) of a positive integer not greater than N. C ...
- POJ2528---Mayor's posters
The citizens of Bytetown, AB, could not stand that the candidates in the mayoral election campaign h ...
- 基于Pact的契约测试
背景 如今,契约测试已经逐渐成为测试圈中一个炙手可热的话题,特别是在微服务大行其道的行业背景下,越来越多的团队开始关注服务之间的契约及其契约测试. 什么是契约测试 关于什么是契约测试这个问题, ...
- Spring源码加载BeanDefinition过程
本文主要讲解Spring加载xml配置文件的方式,跟踪加载BeanDefinition的全过程. 源码分析 源码的入口 ClassPathXmlApplicationContext构造函数 new C ...
- 关于toString的自动调用
class a{ } class b extends a{ String rr = "zzz"; public String toString(){ return "aa ...
- Scala函数式编程(四)函数式的数据结构 下
前情提要 Scala函数式编程指南(一) 函数式思想介绍 scala函数式编程(二) scala基础语法介绍 Scala函数式编程(三) scala集合和函数 Scala函数式编程(四)函数式的数据结 ...
- python基础实战之猜年龄游戏
目录 一.Python基础实战之猜年龄游戏 给定年龄,用户可以猜三次年龄 年龄猜对,让用户选择两次奖励 用户选择两次奖励后可以退出 age = 18 # 答案 count = 0 # 游戏次数控制 p ...
- 《Java基础知识》Java数据类型以及变量的定义
Java 是一种强类型的语言,声明变量时必须指明数据类型.变量(variable)的值占据一定的内存空间.不同类型的变量占据不同的大小. Java中共有8种基本数据类型,包括4 种整型.2 种浮点型. ...
- WebGPU学习系列目录
介绍 大家好,本系列从0开始学习WebGPU API,并给出相关的demo. WebGPU介绍 WebGPU相当于DX12/Vulkan,能让程序员更灵活地操作GPU,从而大幅提升性能. 为什么要学习 ...