STM32的flash的读写次数是1万次。这个香水城在21IC专门有帖子说明:
ST在2008年3月21日更新了STM32增强型(STM32F103)和STM32基本型(STM32F101)的数据手册。在最新的数据手册中,再次确认STM32的闪存存储器的擦写次数指标,在整个工作温度范围超过10,000次,即STM32F101基本型的-40摄氏度至+85摄氏度,STM32F103增强型的-40摄氏度至+85摄氏度,或部分型号的-40摄氏度至+105摄氏度。(关于芯片的工作温度范围请参考下述数据手册的第七章) 新手册给出了更多数据保存期限的测试条件。因为数据保存期限是一个非常重要的指标,客户需要了解更加全面的信息,因此ST比其他MCU厂家给出了更多的细节。 闪存存储器的数据保存期限随擦写次数的增加而变化,手册中数据保存期限是指1000次和10,000次闪存擦写后的保存期限。在所有的工作温度范围内经1000次擦写后,在+85摄氏度的保存环境下,STM32的数据保存期限可达业界领先的30年;在所有的工作温度范围内经10,000次擦写后,在+55摄氏度的保存环境下(通常这是汽车工业要求的保存环境),STM32的数据保存期限可惊人地达到20年。 当与其他MCU产品比较时,十分必要去检查闪存擦写周期是在什么温度环境下检测的数据保存期限。例如,“在+85摄氏度时数据保存期限为10年”,因为没有给出闪存擦写周期,这样的描述是不完整的。 |
1万次!!不多啊!!! 也就意味着不可以频繁读写,否则flash可能会报废。当时是整个报废,还是部分报废,还是部分报废后引起什么其他问题就不得而知了。假设系统运行了3、5年后,芯片flash批量出问题,那可就麻烦了,不是小麻烦,是大麻烦。
另外,如果程序不小心跑飞,flash读写误操作,导致把正常的代码区也给读写了,那么只能到现场刷程序或者把板子替换回来。
ST公司为了防止程序跑飞引起flash误操作,所以就设置了读写保护功能。
但是读写保护,也不是那么人人都能搞定的,常在河边走, 哪能不湿鞋!
所以21IC不少网友说,保护了后,连JTAG编程都用不了了。
=============
博主总结:
ST的flash读写可能初衷是为了民用之类的吧,并不一定适用于对安全较高的工业场合。
所以这样想来,不要因小失大。正式项目还是不用的好。
可以在弄测试程序的时候用不用,存个参数检查一些程序稳定性啥的,比如是否进入了看门狗复位之类的。
=========================================
2015年12月04日本博主更新此博客:
以前标题为《STM32的读写flash功能在正式项目还是不要用了》?现在改为《STM32的读写flash功能在正式项目还是不要用了。?????还是要用的。》
因为我要弄bootloader所以必须使用读写flash功能了。
由于以前有个问题一直没有解决,就是把读写flash的驱动放到ram里面,不过目前已经解决了这个难题,在我博客的几个文章里面有描述。
技术总是要有冒险的,前进就会有代价。已经尽力了。
设备等做完电磁兼容啥的考验后,如果还是OK,那就姑且可以认为读写flash是靠谱的。
如果几年内一直好用,不丢程序,那大概就可以认为flash是靠谱的。
不管怎样,理论上已经没有问题了。
我已将把写入的hex与直接编译的hex比较了,是一模一样的。