前段时间需要另外规划Mboot的一些配置和功能,折腾了好一会Spi Flash 记录一下。
一.概念:
SPI:serial peripheral interface
串行接口设备,spi flash 就是通过串行的接口进行操作的flash存储设备
flash按照内部存储结构不同,分为两种:nor flash和nand flash。这里spi flash 属于 nor flash!
spi flash 读写较慢,次数有限制,一般用于不经常更改的存储。
二.操作:
我这边用于存储Mboot的spi flash 只有2M大小,十六进制表示大小为:0x200000
操作之前需要进行spi flash的初始化,这个一般在Mboot 起来的时候初始化设备的时候执行。
会将flash 分为多少block,每个block的size设置,以及起始的地址。
我这边是把2M分为了32块,每块64K,起始地址为0x00
spi flash 的读操作一般没有什么问题。主要是写操作。在对flash写之前必须要进行擦除,
因为spi flash 是 nor flash ,所以写操作只能把bit 1 变成 0 .
所以需要往哪个位置写入数据的时候,就要保证目标位置的byte为0xFF 。
一般的spi flash 都是支持扇区擦除的,意思就是一次只擦除一个扇区,全部置为0xFF,nor flash的页编程大小为256bytes, 16个page 为一个扇区 也就是4K的大小!
需要注意的是,flash 还会有protect status,想写入就得关掉保护。