Openwrt 我们原先使用的是16M 的flash,但是需要扩容量,使用32M 的flash,16M 和32 M 的地址模式是不一样的,16M flash 只需要3Byte 地址寻址,但是32M flash 需要4地址寻址。
现在7628 上默认是3byte 地址寻址方式,并且32M 的flash 不清楚使用的是什么地址模式,但是现在能够正常使用。但是将硬件拉成4byte 模式的时候发现无法正常启动了。
硬件上将该管脚设置为了 0x011,既4-byte 模式,但是为啥拉了之后无法正常启动呢。找了一堆资料后发现如下:
FLASH地址模式
-
启动的SPI总线寻址地址格式分为3Byte和4Byte两种,3Byte最大寻址16MB。(以前一些路由器使用的3B地址模式能依靠扩展指令达到寻址32MB FLASH的目的,但这种方法有弊端)
-
winbond的W25Q256 SPI-FLASH默认3B寻址,但可以通过设置ADP位为1将寻址改为4B模式,不受断电的影响。
-
同理,7688启动CS1拉低是3B,拉高是4B,不管如何选择,FLASH地址模式和7688启动地址模式必须有对应,即3B对应3B,4B对应4B,否则启动失败。
所以从这个描述来看,7688/7628 拉高为4B 模式后,FLASH 肯定没有处于4B模式,所以启动失败