搜索
bottom↓
回复: 180

【开源】万能 SPI Flash 驱动库 SFUD 正式发布

  [复制链接]

出0入0汤圆

发表于 2016-7-27 10:53:52 | 显示全部楼层
感谢楼主开源了这么高质量的项目

出0入0汤圆

发表于 2016-10-11 17:12:39 | 显示全部楼层
我已经用在了项目上,FLASH是WINBOND的 W25Q64FV

因为SFUD的软件做得非常好,所以几乎没有啥移植工作,直接用就好了。实在是非常优秀的开源项目,感谢 sunnydragon

使用后有一些建议:

1、建议将 chip erase 这个函数开放出来。目前是包含在 sfud_erase 这个函数里面,通过判断起始地址为0和大小是flash的大小时就擦除整个芯片。这样感觉还不够方便。
2、在将 SFUD_DEBUG_MODE 宏定义关掉的时候,还有一个npn的变量的警告,作为一个强迫症患者,建议这个也可以顺手修改掉。
3、在说明文档中提到的那些flash型号,并没有更新到最新的代码列表中。建议增加进去。
4、建议增加更详细的函数应用说明,比如sfud_erase函数,擦除是按照地址和大小来的,实际擦除的是地址为起始,地址+大小为结束的范围,以擦除block为单位的擦除。

出0入0汤圆

发表于 2016-10-11 23:15:28 | 显示全部楼层
sunnydragon 发表于 2016-10-11 21:19
多谢你的反馈,写的非常仔细认真,我来逐条回复下:

1、这点我确实也感觉到了,大概一个月前把全片擦除  ...

第三点说的是,在说明文档 readme.md 中,有提到很多型号,但在代码的数组列表里面并没有这些型号。用户在用的时候,还需要自己再增加,比如我用的W25Q64FV。如果sunnydragon 已经做过测试了,建议把列表直接完善了。

其他的几点,我再去拜读最新版本代码去~~~

出0入0汤圆

发表于 2016-10-12 09:04:55 | 显示全部楼层
huarana 发表于 2016-10-12 08:35
spi nand应用场景还是有的。

要求可靠性的场合下,tf卡 sd卡都不是好的解决方案。 而并口的nand对单片机 ...

eMMC 不就好了吗?

坏块管理和写平衡不是那么好做的。

出0入0汤圆

发表于 2016-10-12 09:13:48 | 显示全部楼层
sunnydragon 发表于 2016-10-12 07:49
我明白你的意思了,那可能是不是我文档中写的不够明确,SFUD_FLASH_CHIP_TABLE 数组里只包含了不支持 JED ...

原来是这样

刚刚看了代码,确实是有自动读取配置的部分,之前阅读不仔细,没看到这个。

所以如果FLASH是支持SFUD的话,那根本就不需要做数组的配置,直接就可以用啦?如果从应用逻辑上是兼容的话,不修改代码直接换芯片也是不影响的,是吗?

出0入0汤圆

发表于 2016-10-14 01:04:43 | 显示全部楼层
sunnydragon 发表于 2016-10-13 21:11
新改的文档看了吗?  https://www.zybuluo.com/armink/note/363414

看啦

新的文档详细很多。很多细节都讲清楚了。这样更容易上手了

不过有一个地方我没看明白

sfud_write_status 这个函数,有一个 is_volatile 参数,这个具体是什么意义?


从这个函数也引发了一个思考。FLASH的写保护,目前默认是初始化就关闭的。从SPI FALSH的角度来说,这样是否存在数据风险?是否考虑这个开放一个接口出来给客户控制?

因为很多用SPI FLASH的用户,是只读的应用。并不需要写操作。

还有一个问题,兼容SFDP 标准的FLASH,对用户来说,主要区别就在于block的大小不同吧?(目前我用的好像都是一样的)这个是否也考虑做一个接口,给用户层调用,知道当前用的FLASH的最小擦除单位是多少,从而正确处理数据读写。

出0入0汤圆

发表于 2016-10-14 10:12:22 | 显示全部楼层
sunnydragon 发表于 2016-10-14 08:30
1、is_volatile 的参数含义为该状态写入以后是否需要设置为易闪失的,即设置完的状态掉电后保不保存,tru ...

1、哦,那个状态是可以保存在FLASH里面,掉电不丢失的。是吧?也可以写寄存器的方式,但掉电就会丢失?嗯,如果是这样,这个描述应该是要针对状态寄存器的。开始我还以为是针对整个FLASH的

2、写保护统一接口那这个确实没有太好的办法。不过,是否提供给客户一个变量来控制目前是否需要写入数据的需求?
     比如一个应用场景,客户用FLASH来存储字库,基本上是只读的。只有系统更新的时候才可能会刷新版本写进去。那正常启动的时候,应该就是只读的。在系统更新的时候,通过开放的专门函数来打开读保护,然后再写。这样是否会更安全?有没有这个必要?
     因为我之前用EEPROM的时候,发现在上电或掉电的瞬间,如果没有读保护,容易造成里面的内容被错误改写的情况。不知道SPI FLASH有没有这个问题。

3、我说的就是 erase_gran  这个参数啦。刚刚看了一下代码,这个没有封装起来的。用户层面可以直接读取。那就ok了。

出0入0汤圆

发表于 2016-10-14 18:12:49 | 显示全部楼层
sunnydragon 发表于 2016-10-14 13:26
1、就是这样的

2、当Flash 不使用时,打开写保护是最好的,避免的外部信号干扰对芯片造成影响。接下来, ...

这些计划完全满足我对这个优秀的开源项目的未来展望啦

   感谢 sunnydragon~~~

出0入0汤圆

发表于 2016-10-14 18:14:35 | 显示全部楼层
关于第三点,目前已经可以直接通过flash对象读取了。我之前没仔细看代码,不确认用户是否可见。后来确认了,目前是没有封装起来的。用户可见的,我个人的看法是没有必要再用函数返回了。用户直接调用这个就好了。

出0入0汤圆

发表于 2017-5-29 12:52:19 | 显示全部楼层
这两天一个新项目又用上了SFUD,真的非常好用,快速开发。再次感谢  sunnydragon

再反馈一个细节:

SUFD_INFO 这个输出没有用宏定义管理,建议在cfg里面增加一个。这样跟debug信息一样可以配置是否输出了。

出0入0汤圆

发表于 2017-5-31 09:54:52 | 显示全部楼层
sunnydragon 发表于 2017-5-30 18:25
什么场景下不需要 info 日志的输出呢?目前我们产品出货时,info 日志也是必须开启的。 ...

比如串口要用来作为其他用途的时候,这个跟调试的时候需要打印并不冲突

我是先将基础环境搭好,配置好硬件,测试好SFUD,看日志输出,初始化正常了。然后再开始调试其他部分。这个时候串口需要输出自定义帧跟PC通讯了。如果有日志输出,会造成干扰。

这个每个项目的需求不同,都是不一样的,能作为一个可选配置就最好啦

另外,我现在这个项目也用上了esaylogger    真的很好用

回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 14:56

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表