tls_fls_write()和tls_fls_fast_write()都好坑啊,一个写一次擦一次毁寿命,一个掉电不保证数据不丢失

发布于 2019-06-25 12:04:38

tls_fls_write()每写一次都要读整个扇区,擦整个扇区,再写整个扇区一次...只适合频率不高的情况。
tls_fls_fast_write()写完后缓存到内存,只有换扇区或数据溢出后才会擦扇区写扇区,如果中间掉电,这个扇区的数据相当于丢了。如果手动tls_fls_flush_sector(),又要时时刻刻擦扇区了(而且擦扇区再存也会有掉电丢数据的概率)...
W600的Flash寿命很高吗,怎么这么喜欢擦扇区?

programPage()重写一个满足底层flash要求的api怎么样?擦扇区这活让用户自己干,只要说明0写不成1就行了。

2019-06-26 09:51:

经过测试,W600使用的QFLASH可以使用0xFF补缺。也就是说,在programSR使用常量0xFF解决addr可能不能整除INSIDE_FLS_PAGE_SIZE的问题(或者提升到tls_fls_write里,使用256字节的cache解决,这样可以让tls_spifls_write使用同一方案),在tls_fls_write使用cache解决addrlen可能不能整除4的问题(或者在programSR里用个4字节的cache,然后memcpy伺候)是可行的。
希望能加个更好的write API。

SPI flash也是一样的套路。

查看更多

关注者
0
被浏览
140
2 个回答
armink
armink 认证专家 2019-06-25
https://github.com/armink

帮顶,对于用户这边确实需要更加灵活的 flash 读/写/擦接口,用户自己也好基于灵活的 flash 驱动实现更多的 flash 应用

wch
wch 2019-06-25
你有困难我帮忙,我住隔壁我姓王

@yichen 李老师来发表一下高见啊~

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览