提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、Flash是什么?
- 二、Flash的分类
- 1、内部结构(接口)区分:
- 2、外部接口区分:
- SPI
- QPSI Flash:
- QSPI 控制器
- flash 控制器和flash存储器的连接方式:
前言
本文主要用于记录对flash读写操作的学习。文章内容基于正点原子系列视频:
正点原子手把手教你学ZYNQ之嵌入式开发
一、Flash是什么?
Flash存储器(又称为闪存)是一种非易失性存储器。具有操作方便、读写速度快等优点。一般用于存储操作系统和程序代码,例如程序固化的操作通常都是把程序存储在flash里面,设置启动后去读取里面存储的程序。
Flash的存储单元为块阵列-块是擦除操作的最小单位,擦除操作会将块内所有位置“1”。页是读和写的基本单位。在对页进行写操作之前,需要判断该页内所有的位是否为“1”,如果全部为1,可以进行写操作;否则,需要对整个块进行擦除操作。
Flash的特性是写操作只能从1翻转到0 ,从0到 1是由擦除来进行的
因此,当要对Flash进行写操作时通常先要进行擦除。
二、Flash的分类
1、内部结构(接口)区分:
2、外部接口区分:
SPI串行的速度会更慢一些但是他所需要的引脚数目是按照标准固定的,当发现容量过小时可以替换更大的,不需要增加额外的引脚。
ZYNQ使用的flash为SPI类型的。
SPI
SPI(Serial Peripheral Interface)串行外设接口,高速、全双工、同步的通信总线。
缺点是没有应答机制来确认是否收到数据,可以写完之后再读出来确认没有出错。
标准通信:
SS:片选信号
QPSI Flash:
XIP:芯片内执行代码
QSPI 控制器
本部分内容参见技术手册 ug585-zynq7000
控制器有三种模式:
-
I/O模式
软件通过写TXD(4个)寄存器 把数据和控制命令写到控制器中;通过读RXD寄存器把flash的数据读取出来 -
线性地址模式
用硬件发起命令到flash memory,控制数据流从flash memory 到AXI interface。
比I/O模式快 -
传统SPI模式
控制器内部:
flash 控制器和flash存储器的连接方式: