|
路由宝L1刷PandoraBox固件(PandoraBox-ralink-mt7620-yk-l1-2018-12-31),刷机成功,正常使用,并且设置计划了每周三0点自重新系统。然后就变砖。接TTL,但没有显示信息。不知如何操作恢复,请大侠指点。谢谢
网上找了点信息,如下
优酷路由宝有几个不同的版本,其中有一部分的闪存是16MB,有一部分的闪存是32MB,使用起来没任何区别。而且32M闪存的路由宝在刷第三方固件时,还可能有自动重启卡死的故障,这是因为OpenWrt的最新kernel(3.14.28)已经能够支持32M SPI Flash的读写以及擦除操作。然而,可能是系统考虑不周,亦或是MT7620系统的BUG,在配置了W25Q256的MT7620开发板系统上,无法soft reset!经过查阅相关资料,发现MT7620默认支持24bit(3byte)的spi地址模式,而要支持32M以上的spi flash,则必须切换到32bit(4byte)地址模式!在soft reset的时候spi停留在了32bit模式,没有切换回默认的24bit模式,导致reset后MT7620在默认的24bit模式,无法和32bit模式的spi通讯,系统就出现死机的情况。
解决办法就不多说了,需要给m25p80.c打一个补丁,有兴趣探究bug解决原理的朋友可以看下面的代码了解下,当然在这里不是我们探讨的范围。
static int m25p_remove(struct spi_device *spi)
{
struct m25p *flash = spi_get_drvdata(spi);
// manfeel note: add spi flash reset code
flash->command[0] = 0x66;
spi_write(flash->spi, flash->command, 1);
flash->command[0] = 0x99;
spi_write(flash->spi, flash->command, 1);
return mtd_device_unregister(&flash->mtd);
}
static struct spi_driver m25p80_driver = {
.driver = {
.name = “m25p80”,
.owner = THIS_MODULE,
},
.id_table = m25p_ids,
.probe = m25p_probe,
.remove = m25p_remove,
// manfeel, add shutdown method to reset spi flash
.shutdown = m25p_remove,
};
|
|