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] Python 迭代器(iterator)和生成器(generator)
1. 可迭代对象 from collection import Iterable class Iterable(metaclass=ABCMeta): ... def __iter__(self): ...
- CodeForces-617E XOR And Favorite Numbers(莫队)
Bob has a favorite number k and ai of length n. Now he asks you to answer m queries. Each query is g ...
- CodeForces 5C Longest Regular Backet sequence
This is yet another problem dealing with regular bracket sequences. We should remind you that a brac ...
- B. Magic Stick
题目:魔法棒 题意:可以对一个正数进行变换,如果数字是偶数,那么它可以变成3 * a / 2 如果这个数大于1,那么它可以变成a - 1 有两个数x和y,询问是否可以通过这些操作从x变成y,输出YES ...
- 《java面试十八式》--引子
爪哇城中 “喂,你等等我啊”少女气喘吁吁的喊道 “大小姐,你可快点吧,报名马上就要结束了.” 这是爪哇城一年一度的大选比赛,被选上的人会留下来任职,享有名誉和金钱,所以大家都在积极准备. ...
- Hybrid App 应用开发中 9 个必备知识点复习(WebView / 调试 等)
前言 我们大前端团队内部 ?每周一练 的知识复习计划继续加油,本篇文章是 <Hybrid APP 混合应用专题> 主题的第二期和第三期的合集. 这一期共整理了 10 个问题,和相应的参考答 ...
- JS内置对象-Array之splice-删插替
splice-删除 var arr = [1, 2, 3, 4, 5, 6]; //删除 var delArr = arr.splice(1, 2) console.log(arr); // => ...
- JS中的深拷贝和浅拷贝
浅拷贝 浅拷贝是拷贝第一层的拷贝 使用Object.assign解决这个问题. let a = { age: 1 } let b = Object.assign({}, a) a.age = 2 co ...
- 【MyBatis】动态 SQL
[MyBatis]动态 SQL 转载: 目录 ========================================== 1.if 2.choose when otherwise 3.tri ...
- 205K+程序员关注过的问题:为什么不应该使用Java的原始类型?
在逛 Stack Overflow 的时候,发现了一些访问量像熊耳山一样高的问题,比如说这个:为什么不应该使用Java的原始类型?访问量足足有 205K+,这不得了啊!说明有很多很多的程序员被这个问题 ...