flash芯片

使用s3c2440芯片对外挂的nor flash进行读写擦除操作

一曲冷凌霜 提交于 2019-12-01 06:54:52
学习目标: 1、了解nor flash存储芯片的概念和特性 2、掌握使用s3c2440芯片对外挂的nor flash进行读写擦除操作 1、NOR Flash的简单介绍 NOR Flash最早是由Intel公司于1988年开发出的,是现在市场上两种主要的非易失性存储器之一,它的出现彻底改变了存储器市场上由EPROM(Erasable Programmable Read-Only-Memory电可编程序只读存储器)和EEPROM(电可擦只读存储器Electrically Erasable Programmable Read - Only Memory)一统天下的局面。NOR Flash最大特点是支持XIP(Execute On Chip),既程序可以直接在NOR flash的片内执行,在NOR Flash中的代码运行时不需要重定位复制到RAM内。NOR Flash的地址线和数据线分开,数据的读取和RAM很类似,只要能够提供数据地址,数据总线就能正确给出数据。不过不能直接对它进行写操作,执行写操作之前需要先发送固定的命令序列,然后发送写操作的地址和数据。 NOR Flash存储器的最小访问单元一般分为8位和16位的,也有一些NOR Flash器件同时支持8位和16位模式,这种Flash的位宽可以在设计硬件时选择,当芯片的BYTE#引脚接为高电平,芯片工作在位宽16位模式,BYTE

常见存储器:RAM,SRAM,SSRAM、DRAM,SDRAM,DDR SDRAM、ROM,PROM,EPROM,EEPROM,FLASH

对着背影说爱祢 提交于 2019-11-30 19:53:11
1、什么是存储器?存储器的分类有哪些?   存储器(Memory)是计算机系统中的记忆设备,用来存放程序和数据。计算机中全部信息,包括输入的原始数据、计算机程序、中间运行结果和最终运行结果都保存在存储器中。它根据控制器指定的位置存入和取出信息。有了存储器,计算机才有记忆功能,才能保证正常工作。   按用途存储器可分为主存储器(内存)和辅助存储器(外存), 也有分为外部存储器和内部存储器的分类方法。外存通常是磁性介质或光盘等,能长期保存信息。内存指主板上的存储部件,用来存放当前正在执行的数据和程序,但仅用于暂时存放程序和数据,关闭电源或断电,数据会丢失。   按读写功能存储器可分为只读存储器(ROM)和随机读写存储器(RAM)两种。ROM存储的内容是固定不变的,它是只能读出而不能写入的半导体存储器; RAM是既能读出又能写入的半导体存储器。当机器电源关闭时,ROM仍然可以保持数据,而存于RAM中的数据则会丢失。   在制造ROM的时候,信息(数据或程序)就被存入并永久保存。这些信息只能读出,一般不能写入,即使机器掉电,这些数据也不会丢失。ROM一般用于存放计算机的基本程序和数据,如BIOS ROM。其物理外形一般是双列直插式(DIP)的集成块。   我们通常购买或升级的内存条就是用作电脑的内存,内存条(SIMM)就是将RAM集成块集中在一起的一小块电路板,它插在计算机中的内存插槽上

Linux flash 操作

北战南征 提交于 2019-11-30 00:32:08
目录 命令:flash_erase 命令:flash_eraseall 命令:nandwrite 命令:nanddump 命令:mtd_debug 命令:ftl_format ./mtd_debug info /dev/mtd0 // 输出/dev/mtd0上的一些信息,这里必须用mtdx ./mtd_debug erase /dev/mtd0 0×0 0×40000 // 擦出/dev/mtd0 分区上 从0×0开始的 , 128K*2 大小的数据 ./mtd_debug write /dev/mtdblock0 ox0 0×360810 cq8401.img //向mtdblock0分区,写入 3.6M 大小的文件系统cq8401.img,这里最好用mtdblockx ./mtd_debug read /dev/mtdblock0 ox0 0×360810 read.img //从mtdblock0中读出 3.6M 数据保存到read.img,当然这里的长度应该相等 cmp -l cq8401.img read.img // 验证write to flash 和 read from flash 中的数据是否一致;也可以使用diff命令来比较 ./flash_eraseall -j /dev/mtd1 //用jffs2格式化该分区 ./nanddump -p /dev/mtd1

008NAND_FLASH驱动

試著忘記壹切 提交于 2019-11-29 05:59:48
一、 NAND_FALSH原理及硬件操作(第十九课/第一节) A、 回顾块设备驱动 应用程序读写一个普通文件,最终肯定会去操作到硬件上(比如Flash),这个普通的文件存在什么地方,文件系统会把对普通文件的读写转换为一项一项的对块设备的读写操作,然后会调用"ll_rw_block"这个函数,这个函数就会把这些一项一项的读写操作放入队列优化然后调用请求处理函数执行。 B、 回顾怎么写块设备驱动程序 1. 分配gendisk结构:alloc_disk 2. 设置:a.分配/设置队列;b.设置其它属性(比如容量等) 3. 注册:add_disk C、 NandFlash硬件原理图: D、各引脚作用: 问1:原理图上NAND_FLASH和S3C2440之间只有(DATA0~DATA7)数据线,怎么传输地址呢? 答1:在DATA0~DATA7上既有传输数据,又传输地址,还传输命令。当ALE为高电平时传输的是地址;当ALE为低电平时传输的是数据。 问2:从NAND_FLASH芯片手册可知,要操作NAND_FLASH需要先发出命令,怎么传入命令? 答2:当ALE为高电平时传输的是地址;当CLE为高电平时传输的是命令;当ALE和CLE都为低电平时传输的是数据。 问3:数据线既接到NAND_FLASH,也接到NOR_FLASH,还接到SDRAM,DM9000等等? 答3:这些设备在访问之前必须"选中

ROM、RAM、FLASH的区别

这一生的挚爱 提交于 2019-11-28 20:59:05
初学MCU的人,经常会看到ROM, RAM, FLASH,而且会被这些词汇搞得晕头转向。本文对这些概念进行了厘清,并介绍了这些Memory的区别,以及它们在MCU中的作用。 ROM (Read Only Memory)程序存储器 ROM全称Read Only Memory,顾名思义,它是一种只能读出事先所存的数据的固态半导体存储器。ROM中所存数据稳定,一旦存储数据就再也无法将之改变或者删除,断电后所存数据也不会消失。其结构简单,因而常用于存储各种固化程序和数据。 在单片机中用来存储程序数据及常量数据或变量数据,凡是c文件及h文件中所有代码、全局变量、局部变量、‘const’限定符定义的常量数据、startup.asm文件中的代码(类似ARM中的bootloader或者X86中的BIOS,一些低端的单片机是没有这个的)通通都存储在ROM中。 为了便于使用和大批量生产,进一步发展出了可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)。EPROM需要用紫外线长时间照射才能擦除,使用很不方便。1980s又出现了电可擦除可编程只读存储器(EEPROM),它克服了EPROM的不足,但是集成度不高、价格较贵。于是又发展出了一种新型的存储单元结构同EPROM类似的快闪存储器(FLASH MEMORY)。FLASH集成度高、功耗低、体积小,又能在线快速擦除,因而获得了快速发展。

【STM32】STM32F10x系列容量问题

泪湿孤枕 提交于 2019-11-28 10:12:54
在STM32中,对于不同容量的芯片启动文件不一样。对于103系列,主要是用其中3个启动文件: startup_stm32f10x_ld.s: 适用于小容量 产品 startup_stm32f10x_md.s : 适用于中等容量产品 startup_stm32f10x_hd.s: 适用于大容量产品 这里的容量是指 FLASH 的大小.判断方法如下: 小容量:FLASH≤32K 中容量:64K≤FLASH≤128K 大容量:256K≤FLASH 来源: CSDN 作者: Q小鑫 链接: https://blog.csdn.net/qq_42108414/article/details/102239439

Keil编译过程及程序在Flash和SRAM的空间分配

偶尔善良 提交于 2019-11-28 08:17:06
1. keil编译介绍    当使用keil进行单片机的开发时,运行一段程序后,在output输出框会看到如下图的结果。 图1 keil 的output框   其中,Compiler编译器,使用的版本是 V5.06,程序会先经过编译、后链接linking生成可执行的代码,如果要下载单片机的Flash上,还需要转换成二进制(bin)或者十六进制(hex)的文件。 具体过程如下: 图2 keil的编译过程   值得注意的是,经过编译后,并不会给变量赋地址生(.o文件),只有经过链接器链接后变量才有地址,链接的作用可以看做是便于管理。经链接后 代码分为 Code、RO-data、RW-data、 ZI-data 四部分。接下来是老生常谈的问题,每个区都是干嘛的呢? CODE: 代码区,指程序中代码即函数体的大小,注意程序中未使用的函数也会算在CODE中,也即会占用FLASH空间,因此不用的函数最好删除掉,以免占用过多FLASH空间; RO-DATA: RO就是只读的意思,程序中只读的变量(也就是带Const的)和已初始化的字符串等; RW-DATA: 特指已初始化的可读可写全局/静态变量; ZI-DATA: 未初始化的可读可写全局/静态变量,注意初始化为0也算做未初始化,用到的堆空间和栈空间也会被算入这里面;   之前我一直在想的一个问题是我的局部变量存放在哪里,其实是这样的

【转】DDR3和eMMC区别

偶尔善良 提交于 2019-11-28 05:13:14
转自:https://www.cnblogs.com/debruyne/p/9186619.html DDR3内存条和eMMC存储器区别: 1. 存储性质不同; 2. 存储容量不同; 3. 运行速度不同; 4. 用途不同。 具体区别如下: 1、存储性质不同:eMMC是非易失性存储器,不论在通电或断电状态下,数据都是可以存储的,而DDR3内存是易失性存储器,断电同时,数据即丢失。 2、存储容量不同:eMMC的存储容量要比DDR3内存大3-4倍,常见有32G,而DDR3内存容量相对较小,常见有2-8G。 3、运行速度不同:DDR3内存运行速度要比eMMC快得多。 4、用途不同:eMMC主要用于数据存储,而DDR3内存主要用于数据运算。eMMC 主要是针对手机或平板电脑等产品的内嵌式存储器标准规格。用来提供标准接口并管理闪存。在手机或平板电脑中,DDR3内存可称之为运行内存,而eMMC可称之为存储内存。 ADD eMMC: eMMC(Embedded Multi Media Card)也是一种使用兼容MMC协议的芯片,和MMC的区别如其名,eMMC经常被用于嵌入式环境中,而MMC一般用作外接设备的标准。eMMC = NAND flash + 控制器 + 标准封装接口。 很多卡内部的存储设备用的都是NAND flash, 单纯nand flash和这些卡的区别,就是nand

【转】SPI FLASH与NOR FLASH的区别 详解SPI FLASH与NOR FLASH的不一样

旧城冷巷雨未停 提交于 2019-11-28 05:12:40
转自:http://m.elecfans.com/article/778203.html 本文主要是关于SPI FLASH与NOR FLASH的相关介绍,并着重对SPI FLASH与NOR FLASH的区别进行了详细的区分。   SPI FLASH   首先它是个Flash,Flash是什么东西就不多说了(非易失性存储介质),分为NOR和NAND两种(NOR和NAND的区别本篇不做介绍)。SPI一种通信接口。那么严格的来说SPI Flash是一种使用SPI通信的Flash,即,可能指NOR也可能是NAND。但现在大部分情况默认下人们说的SPI Flash指的是SPI NorFlash。早期Norflash的接口是parallel的形式,即把数据线和地址线并排与IC的管脚连接。但是后来发现不同容量的Norflash不能硬件上兼容(数据线和地址线的数量不一样),并且封装比较大,占用了较大的PCB板位置,所以后来逐渐被SPI(串行接口)Norflash所取代。同时不同容量的SPI Norflash管脚也兼容封装也更小。,至于现在很多人说起NOR flash直接都以SPI flash来代称。      NorFlash根据数据传输的位数可以分为并行(Parallel,即地址线和数据线直接和处理器相连)NorFlash和串行(SPI,即通过SPI接口和处理器相连)NorFlash

STM32内部FLASH介绍

China☆狼群 提交于 2019-11-28 04:51:52
一、介绍 首先我们需要了解一个内存映射: stm32的flash地址起始于0x0800 0000,结束地址是0x0800 0000加上芯片实际的flash大小,不同的芯片flash大小不同。 RAM起始地址是0x2000 0000,结束地址是0x2000 0000加上芯片的RAM大小。不同的芯片RAM也不同。 Flash中的内容一般用来存储代码和一些定义为const的数据,断电不丢失, RAM可以理解为内存,用来存储代码运行时的数据,变量等等。掉电数据丢失。 STM32将外设等都映射为地址的形式,对地址的操作就是对外设的操作。 stm32的外设地址从0x4000 0000开始,可以看到在库文件中,是通过基于0x4000 0000地址的偏移量来操作寄存器以及外设的。 一般情况下,程序文件是从 0x0800 0000 地址写入,这个是STM32开始执行的地方,0x0800 0004是STM32的中断向量表的起始地址。 在使用keil进行编写程序时,其编程地址的设置一般是这样的: 程序的写入地址从0x08000000(数好零的个数)开始的,其大小为0x80000也就是512K的空间,换句话说就是告诉编译器flash的空间是从0x08000000-0x08080000,RAM的地址从0x20000000开始,大小为0x10000也就是64K的RAM。这与STM32的内存地址映射关系是对应的