CH552的iflash到底是个啥工艺?

CH552 手册 6.2提到 

ROM 是 iFlash?工艺,对于空白 ROM 正式封装后的成品,可以在 5V 电源下进行约 200 次编程。

6.5 flash-ROM 操作步骤 也没提到擦除。


相对应的CH559

就写的是100K次擦写的Flash-ROM,6.5 flash-ROM 操作步骤要先擦再写。


我查了一下,iFlash这个关键词除了在芯片介绍里之外,我没找到任何相关资料。请问有没有更多信息?在用户的角度是否可以认为它就是一个少编程次数但不用擦的flash存储器?


理解的没问题,”iFlash“只是一个代名词而已。

特点就是:不用擦除,直接写0或1;相比常见的MCU,flash的写次数少一些。

只是尤其要注意的是,flash只能在VCC外部提供5V电压的时候进行编程。


虽然flash写次数不多,不过加上一些简单的平衡算法,也能够做到类似上万次擦写寿命的flash差不多的作用。


mm what kind of balance algorithms do you mean?. 

The WCHIspTool does always erase the flash before programming. Especially since loader 2.31 that seems a serios problem to me. I have already 2 CH552 here which fail programming the first block. 

So my advice dont flash too often.


@TECH5 感谢回复。

那是不是也可以认为,iFlash是按照字节扣除寿命,而不是像一般flash一样是按照块扣除寿命?


寿命是对最小单元而言,552上的最小单元就是字节。

在考虑flash寿命的时候,整体固件升级的情况当然是无法对擦写寿命上有什么优化。平衡算法更多的是把剩余的code flash区当作data flash区来用的情况下:

例如需要保存2byte字节数据,那一个数据单元可以由4个字节组成,1字节已写次数+数据L+数据H+检验和。程序约定起始地址A,需要获取该数据时从A开始遍历,直到遇到非零数据,读取4个;如果已写次数差不多到200了,那就把数据向后移动4字节,当前位置写0。那1K的flash空间,可以获得2字节数据的1K/4*200=51200次的存储。

当然CH552本身就有更长寿命的data flash可以用,以及还有CH546之类更更长寿命的。


@usbman

Pardon me for replying to a dead thread.

Maybe you can try wchisp(https://github.com/ch32-rs/wchisp). This tool supports skipping verifying and erasing.


只有登录才能回复,可以选择微信账号登录