spi nor flash使用汇总

Overview

SPI flash, 分为spi flash, DUAL spi flash, QUAD spi flash,

3-wire spi, 4-wire spi, 6-wire spi. 在clock一定的情况下, 理论上线数越多速度越快

NOR flash和Nand flash相比

  • NOR缺点: 价格贵, 容量小, 擦除块大, 擦除速度慢, NOR flash擦出寿命为100,000次, 远小于NAND flash的一百万次. NOR可以单字节编程, 也就是说一次只更新一个byte
  • NOR优点: 读速度快, 稳定不会出现位反转, 不需要EDC和ECC,  不需要坏块管理
  • NOR flash通常一次可以写一个字节, NAND flash内存必须一次写多个字节(通常为512字节)

NOR flash的优缺点决定了它的应用场: 适合存储关键很少修改的数据, 比如bootloader kernel等代码;不适合尺寸较大经常修改的数据,比如用户地图, 库文件等

3 wire SPI

正常的SPI使用四根线: clock, cs, MOSI, MISO. 可以把MOSI MISO合并为一根线(slave out/slave in SISO)上实现半双工. 主要用来实现低速传输

DUAL SPI

对于SPI flash来说, 全双工并不常用, 因此扩展这两根数据线, 使得他们支持半双工传输, 加倍数据传输速度. 可以发送一个命令字节请求进入dual mode, 然后MOSI就变成了SIO0(Serial I/O 0), MISO变成了SIO1.

这种模式主要是针对SPI ROM, SPI flash设备, 需要进行大数据量传输

QUAD SPI

quad SPI又增加了两根I/O线(SIO2 SIO3), 可以在一个时钟周期传送四个data bits. 通过使用特殊的命令, 使能quad mode.

Double data rate

除了使用多根I/O线, 某些设备还通过DDR技术增加传输速率

SPI NOR flash文件系统支持

NOR flash和普通机械硬盘, SSD, EMMC的最大区别就是NOR flash在写之前,需要确保写的位置是已经擦除过的, 因此并不适合使用传统的Ext2/3/4, FAT/NTFS等文件系统

甚至YAFFS类的文件系统也不适合NOR flash

JFFS和JFFS2

这两个文件系统都可以支持NOR flash, 并且提供了垃圾回收, 坏块管理, 磨损平衡. 二者都存在文件系统mount速度较慢的问题, 不适合大容量flash

YAFFS/YAFFS2

已经被踢出主线内核了, 基本废弃了.

Cramfs/Squashfs

常规的只读文件系统, 都支持数据压缩, 实现简单, 速度快, 如果NOR flash存放的文件系统是只读的, 尽量使用他们. 这些常规文件系统工作在传统块设备上, 需要内核支持

CONFIG_MTD_BLKDEVS=y
CONFIG_MTD_BLOCK=y

Ext2/3/4 FAT/NTFS

支持读写的块设备文件系统不适合工作用在NOR flash上, 因为NOR flash写操作会导致擦除操作, 速度慢, 影响寿命.

MTD模拟block device

打开CONFIG_MTD_BLOCK和CONFIG_MTD_BLKDEVS

启动后/dev/下会增加几个block设备

[cpp] view plain copy

  1. [email protected]:~# ls /dev/mtd
  2. mtd0       mtd1       mtd2       mtd3       mtdblock0  mtdblock2
  3. mtd0ro     mtd1ro     mtd2ro     mtd3ro     mtdblock1  mtdblock3

使用mkfs.ext4, 格式化mtdblock,

[cpp] view plain copy

  1. [email protected]:~# mkfs.ext4 /dev/mtdblock3
  2. mke2fs 1.42.9 (28-Dec-2013)
  3. Filesystem label=
  4. OS type: Linux
  5. Block size=1024 (log=0)
  6. Fragment size=1024 (log=0)
  7. Stride=0 blocks, Stripe width=0 blocks
  8. 1856 inodes, 7424 blocks
  9. 371 blocks (5.00%) reserved for the super user
  10. First data block=1
  11. Maximum filesystem blocks=7602176
  12. 1 block group
  13. 8192 blocks per group, 8192 fragments per group
  14. 1856 inodes per group
  15. Allocating group tables: done
  16. Writing inode tables: done
  17. Creating journal (1024 blocks): done
  18. Writing superblocks and filesystem accounting information: done

使用dd命令, 写入cramfs镜像

首先, 在Host创建cramefs镜像

[cpp] view plain copy

  1. mkfs.cramfs rootfs/ cramfs.img

dd命令导入镜像

[cpp] view plain copy

  1. [email protected]:~# dd if=/dev/mtdblock3 of=cramfs.img
  2. 14848+0 records in
  3. 14848+0 records out
  4. [email protected]:~# ls -l
  5. -rw-r--r--    1 root     root       7602176 Jan  1 00:24 kaka.img
  6. [email protected]:~#

NOR flash使用JFFS2

NOR flash上运行JFFS2, JFFS2通过MTD接口操作NOR flash

创建JFFS2镜像

mkfs.jffs2工具在mtd-utils工具包中

[cpp] view plain copy

  1. sudo apt-get install mtd-utils
  2. mkfs.jffs2 -r rootfs/ -o jffs2.img --pad=0x800000

--pad=0x800000 如果不加这个参数, 生成的镜像尺寸(文件系统大小)是按照rootfs/小内容大小决定的;通过这个参数我们可以强制指定文件系统大小

烧写JFFS2镜像

有两种烧写方法:

1. 在uboot中把jffs2.img下载到DRAM中, 然后使用sf write命令把DRAM内容烧写到nor flash上

2. 进入系统后使用 dd if=jffs2.img of=/dev/mtdblock4

二者性质上实际相同, 都是直接把镜像烧到NOR flash某段内存中

挂载JFFS2文件系统

首先kernel要支持jffs2文件系统, 执行如下命令

[cpp] view plain copy

  1. mount -t jffs2 /dev/mtdblock4 /mnt

文件系统挂载速度

由于JFFS2在挂载过程中需要执行扫描, 构造文件系统, 因此在同样大小的mtdblock上, JFFS2挂载时间远大于EXT4文件系统

文件系统尺寸为0x740000(7.25MB)

[cpp] view plain copy

  1. Ext4挂载时间
  2. [email protected]:~# time mount -t ext4 /dev/mtdblock3 /mnt
  3. real    0m 0.06s
  4. user    0m 0.00s
  5. sys     0m 0.00s

[cpp] view plain copy

  1. JFFS2挂载时间
  2. [email protected]:~# time mount -t jffs2 /dev/mtdblock3 /mnt
  3. real    0m 0.34s
  4. user    0m 0.00s
  5. sys     0m 0.33s

原文地址:https://www.cnblogs.com/Ph-one/p/8650556.html

时间: 2024-11-04 22:08:48

spi nor flash使用汇总的相关文章

STM32F10X SPI操作flash MX25L64读写数据(转)

源:STM32F10X SPI操作flash MX25L64读写数据 前一段时间在弄SPI,之前没接触过嵌入式外围应用,就是单片机也只接触过串口通信,且也是在学校的时候了.从离开手机硬件测试岗位后,自己一直想在嵌入式方面发展,在1月4号开始自己的第二份工作后,首先接触到的是为STM32F103写SPI控制flash读写操作,现记下曾经的脚印,希望以后能少走弯路!心得:细心活! 简单的一种应用,ARM芯片作为master,flash为slaver,实现单对单通信.ARM主控芯片STM32F103,

SPI Nor Flash多核程序烧写

经过一段时间的研究终于把TMS320C6657单核和双核的SPI Nor Flash的程序烧写调通了.工具都是前辈的工作,有需要的可以留下邮箱,我有空可以发. 原理参考钱丰的<TI c66x 系列DSP 多核BOOT 的研究>论文. 通过Nor flash 烧写加载程序的全部流程:(在no-boot模式下) 一.首先讲讲工具链: hex6x 配合.rmd文件(有几个.out文件就需要几个.rmd文件,描述输出控制.引导选项.存储器选项等内容)生成片上引导加载器加载程序所需的引导表,输出文件为*

宏旺半导体科普SPI NAND Flash和SPI NOR Flash的区别

我们在购买电子产品时,常常听到FLASH闪存这个词.但对于基础小白来说,可能常常搞不清楚SPI Flash.Nand Flash.Nor Flash等都是指什么,今天宏旺半导体就跟大家通俗易懂地讲解一下. 首先,我们了解一下Flash闪存本身,它则是一种非易失性存储,在没有电流供应的条件下也能够长久地保持数据,其存储特性相当于硬盘,这项特性正是闪存得以成为各类便携型数字设备的存储介质的基础.Flash按照内部存储结构的不同,可以分为两种:Nor Flash和Nand Flash. 宏旺半导体打个

Jlink使用技巧之烧写SPI Flash存储芯片

前言 大多数玩单片机的人都知道Jlink可以烧写Hex文件,作为ARM仿真调试器,但是知道能烧写SPI Flash的人应该不多,本篇文章将介绍如何使用JLink来烧写或者读取SPI Flash存储器,JLink软件包含的工具中,有一个是JFlashSPI工具,这就是一个烧写和读取SPI存储器的工具了. 准备 要烧写程序或读取程序的的Flash芯片:SPI协议的Flash都可以,如W25Q128. JFlashSPI软件工具:在Jlink系列软件的安装目录下 JLink V9仿真器 要烧写的文件:

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

转自: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也可能是NAN

cortex_m3_stm32嵌入式学习笔记(二十一):SPI实验(通信总线)

SPI 是英语 Serial Peripheral interface 的缩写,顾名思义就是串行外围设备接口.是 Motorola首先在其 MC68HCXX 系列处理器上定义的. SPI 接口主要应用在 EEPROM, FLASH,实时时钟, AD 转换器,还有数字信号处理器和数字信号解码器之间. SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为 PCB 的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信

新内核 中关于spi nor的注册

3.X的内核,对于platform_device的注册和platform data,全都放在dts文件中指定,对于spi nor来说,它的整个驱动 包括了master  driver,master device,spi nor driver 和spi nor device. 对于spi master的驱动是在driver/spi/下有相关的文件来完成,而spi master device是在dts中来指定, 对于zynq板子来说,我们在driver/spi/可以找到相关的spi master的驱

STM32_SPI读写Flash

今天讲解"STM32F103 SPI读写Flash",其实这第一阶段主要是讲解STM32的SPI功能,所有今天的重点是SPI,关于FLASH我应该要在后面再次讲述. 今天提供并讲解的软件工程,基于软件工程"A0.0.0(STM32F10x_TIM延时)"修改而来.若不知道如何而来,请关注微信公众号"EmbeddDeveloper"获取更多信息. 本着免费分享的原则,将讲解的工程源代码分享给大家,还望看到的朋友关注和推广一下微信公众号,增加一下人气

nrf51822 --- spi 通信

1.目的 nrf51822 spi通信 2.分析 在实际应用中经常要用到spi通信,比如度flash 3.平台: 协议栈版本:SDK10.0.0 编译软件:keil 5.12 硬件平台:微雪开发板nrf51822 例子:SDK 10.0.0\examples\ble_peripheral\ble_app_hrs\pca10028\s110\arm4 4.步骤 1.打开\SDK10.0\components\drivers_nrf\twi_master\deprecated目录 2.把nrf_dr