起因
还是经典的摸鱼?不是的,是我公司的一个工程师,让我帮他搞一下治具,突然发现,烧不了代码了,所以,我经过j-flash的测试,才知道加读保护了。而且用的还是APM32这个芯片,我没想到是APM32是直接照抄STM32的,甚至我的STM32的bin代码都可以直接跑哦,真合着寄存器,外设引脚,内部完全一模一样呗。所以,我想到做一期关于flash的博客。来巩固一下知识点。
FLASH是什么
FLASH就是一种掉电不丢失的储存单元,特性就是成本低,但是不能按位操作,空间大,结构简单。
为什么,不能按位呢?因为FLASH本身就是一个半导体一样的东西,我们看到刷新flash全是置为FF,为什么是FF,是因为此时单元束缚了一个电荷单元,旁边的高阻抗的传感器识别到,这个位置有电势差,所以就知道这个位bit里面有数据的。此时,就是把电子拿出来简单,放回去就难了,所以需要刷新才能重写。为什么拿出来和放回去难度不一样呢?因为上下结构不一样的。
上面是一个flash单元,因为flash下面的所有单元衬底其实是一整块的,所以,无法做到,按位进行操作,因为一操作就会导致所有数据都归零,所以,只能操作上面部分的电荷来实现放电操作。刷新过程,其实就是衬底清空,此时就会对上面的浮栅进行充电,然后,电压一走电荷就会被束缚在栅极之中。
还有那些颗粒类型什么的,我就不太了解了,因为我是一个臭写代码的,这个FLASH设计,要专业人士才能操作。当前存储颗粒主要分类:SLC、MLC、TLC、QLC
可以认为那些储存都是这些FLASH颗粒组成的哦。上面这个只是一个二维的设计,因为这个衬底可以设计成3维的,所以,3维的flash成本更低,同时擦除的块也变大了,这个是厂商设计的哦。
为什么设计简单,我们可以举例子,比如eemprom,这个其实就是内部类似矩阵一样,可以知道横纵就知道位置和操作了,因为没有采用统一衬底的设计,所以可以对任意位置操作,带来的布线、设计成本、生产成本,容量大小等诸多问题,都是限制它的原因。
还有就是速率啦,FLASH一般是SRAM或者SPI的,eemprom一般都是iic
FLASH类型
目前市面上常见的集成存储芯片类型:eMMC、UFS、SPI-Flash、QSPI-Flash、各尺寸的SD卡等。
我这里就分为2大类:第一个是NORFlash,第二个是NANOFlash
怎么理解呢?
NORFlash就是扩容的一个Flash,我们可以修改MCU的内存大小和BANK来使用外部的SRAM或者NORFlash,在外部上面跑代码就是指针直接指向,把外部的也当成SRAM跑,而且还是很可靠的,掉电不丢失,突发情况说不定还能查看内部bit来还原数据呢。读速度还行,写速度慢,每次使用都要刷新,擦写次数比NANOFlash少太多了。它的接口是SRAM的接口,同MCU的引脚连接。
NANOFlash就是纯纯的存储空间啦,一般都是有一个FLash芯片来实现对这写Flash单元的控制的,此时一般都是SPI,也有很多使用QSPI,一般是好的FLASH芯片都是有QSPI支持的,然后希望手册多一些有用的指令,便宜的FLash确实可以用,但是它的功能和指令都被阉割了。如果想要实现QSPI和文件系统等一些操作就比较麻烦了。读写速率都很快,但是不可靠,寿命高,可以擦写很多很多次。
内部FLASH
回到上面提到的读保护吧,确实一般在mcu中,只有写保护,就是想要修改FLASH,需要解除锁,才能刷新再写,读的话,一般是直接地址指过去了。那么读保护是干嘛的?我这内部完全没有限制我读取啊?
读保护是防外人的,那些狗东西最喜欢逆向和偷别人代码了,此时我开启读保护等级1,他们就不能通过调试来获取我的代码了。但是此时MCU是可以恢复到读保护等级0,只需要选择使用boot0 boot1都为1的SRAM启动,我们修改运行地址到SRAM中,修改映射,就可以在SRAM中把读保护等级修改了。但是如果读保护等级为2的时候,就把SRAM也禁用了,此时就gg了。
此时,不能更新了吗?不是的,我们此时是禁用了外部的操作啊,但是我们可以ota啊,我们程序还是可以通过内部的开锁关锁来实现对flash的更新,这个是内部的操作,不是来自外部的哦[doge]
SRAM FLASH ROM区别
SRAM和NORFlash都可以运行代码,他们的区别就是SRAM肯定更快啊,想都不用想的,而且不用担心丢失,掉电就没了,固态使用的DRAM,还需要定期充电呢维持呢,速度也快,成本贼低。
ROM和NANOFlash的区别呢?都想是存储的东西,但是,本质还是不一样的。ROM是一种只读的统称,可以认为是PROM(可编程ROM)、EPROM(可擦除可编程ROM,通过紫外线擦除)、EEPROM。ROM也是可以编程的,但是更少,Flash就擦除写入的多了,一般的固态SSD都是FLASH,因为便宜快速高效可以反复擦除。
感想
FLASH真的一个跨时代的发明。我想到了,最近要搞一个NAS玩玩,先玩黑群晖吧,刚好有一个闲置的垃圾笔记本,我看了一下群晖裸机也要1300呢,有点贵的,用的是机械盘,本质,是中间那个磁盘来着,怎么说呢。那个东西可以修复确实好,不过固态确实越来越好用。服务器还是机械吧,固态坏了真的修不了,都是电子和位,怎么恢复啊。FLASH带来的便利,也带来一些麻烦,比如固态涨价涨疯了,我都买不起了,呜呜呜。