uboot启动时flash擦除大小问题

之前遇到问题,网上有人说flash最小擦除单位是块大小,有人说最小擦除单位是扇区大小…
某flash块大小64k,扇区大小4k,但是你的分区有的才8k,如果擦除flash必须是块大小的整数倍,那别想对这么小的分区进行正确的操作了。
flash的芯片手册,明确说明了块和扇区都是可以被独立擦除的。当然,手册没说明支持的话就不用徒劳了。
• 2048 Equal Sectors with 4K byte each - Any Sector can be erased individually
• 128 Equal Blocks with 64K byte each - Any Block can be erased individually

在这前提下,若实际操作中发现sf erase 0x00 0xn 只能擦除块,那原因基本就是flash支持扇区擦除,但是产品集成商没提供方法。实际上块擦除和扇区擦除只不过一个命令的差别而已。

从cmd_sf.c 一层层剥茧抽丝,会找到一个结构体数组,uboot就是从这个数组成员中找到属于自己的flash并匹配,获取相关信息。如海思的 struct spi_info hisfc350_spi_info_table [ ] = { … }; 找到你的flash型号,直接修改erasesize就可以了。erasesize直接决定了sf erase命令是支持块擦除还是扇区擦除。如果erasesize=64k,但是你sf erase 0x00 0x1000,明显是会报错的。


python&C语言QQ技术群:731202520
欢迎来交流技术问题~

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值