armink / SFUD

An using JEDEC's SFDP standard serial (SPI) flash universal driver library | 一款使用 JEDEC SFDP 标准的串行 (SPI) Flash 通用驱动库
MIT License
1.25k stars 444 forks source link

对于需要整sector擦除,然后才能随机地址写入的支持需要用户自己实现么 #43

Closed yunzhi closed 3 years ago

yunzhi commented 3 years ago

发现 sfud_write 和 sfud_erase_write 都没有这样的功能,是因为这个功能会比较耗内存么?

armink commented 3 years ago

没有太明白你的意思,能举个例子吗?

yunzhi commented 3 years ago

没有太明白你的意思,能举个例子吗?

比如说 w25q64 (1个sector=4KB),需要在0x10位置重新写入abcd四个字符.

const uint8_t test[] = "abcd";

sfud_write(flash, 0x10, 4, test) 写不成功.

sfud_erase_write(flash, 0x10, 4, test) 貌似会把 0x0 ~ 0x10 这段的数据擦除掉了.

之前通用的驱动是先读出4KB的数据,然后再擦除一个1 sector,把读出来的数据0x10的内容替换掉,再写进去.

armink commented 3 years ago

貌似没有见过这样的 API 接口,一般的 Flash 操作前都是要先擦除再写入的哦

如果想要实现你想要的这个效果,可以自己再封装一套 API 就好了

yunzhi commented 3 years ago

貌似没有见过这样的 API 接口,一般的 Flash 操作前都是要先擦除再写入的哦

如果想要实现你想要的这个效果,可以自己再封装一套 API 就好了

ok, 了解了