树莓派做编程器刷写ROM

九年吃菜粥 38.85m2021-02-061802 次点击1 人收藏2 人感谢
事情的起因是因为手贱,把家中无线路由器刷上了国际版固件,结果是无法开机

无奈拆开,发现有一块类似于BIOS的8引脚芯片,就想到通过编程器刷这个“BIOS”不就解决问题了吗?可是BIOS的损坏是很少发生的,不会谁专门去准备一个编程器预防这类事情,这可咋办啊。

编程器无非就是拿线接到芯片的引脚上,通过某一种规则的电信号写入信息,这样的话我直接用烙铁把线焊到引脚上,通过树莓派的GPIO理论上就做编程器。这种想法还真在网上找到了资料。

就是把每个引脚按照定义接到树莓派的SPI的输出上,配合`flashrom`命令就可以进行flash芯片的读写

SPI Flash引脚定义:

![SPI Flash引脚定义](https://ppmm.org/images/2021/02/06/5dc32dc26fe1f8423fc9fea4fad147ac.png)

树莓派GPIO定义:

![](https://shumeipai.nxez.com/wp-content/uploads/2015/03/rpi-pins-40-0.png)

焊好之后是这个样子:

![](https://ppmm.org/images/2021/02/06/5531eed4c4f1df72b4cec7dce5edf4fb.jpg)

树莓派有两组SPI口,按照下面的表格选择其中一个接口接好线(我选的是SPI0)

| 引脚 | 定义 | 接脚 |
| :--: |:--:| ---- |
| 1 脚 | cs(片选脚) | cs0 |
| 2 脚 | DO(IO~1~) | MISO |
| 3 脚 | WP(IO~2~) | 3.3v |
| 4 脚 | GND(地线) | GND |
| 5 脚 | VCC(3.3V) | MOSI |
| 6 脚 | HOLD(IO~3~) | SCLK |
| 7 脚 | CLK(时钟) | 3.3v |
| 8 脚 | DI(IO~0~) | 3.3v |

然后安装`flashrom`

```shell
sudo pacman -S flashrom
```
### 进行flash读写操作

写Flash命令:

```shell
flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=2000 -w flash.bin
```

> 如果线接好了,在执行的时候会显示出芯片的信息,如果说检测不到芯片,那就是接线错误或者是引脚处的线焊到有问题
> 在进行写操作时,不同的flash芯片可能会提示你让你选择芯片的具体型号,这时要看一下芯片上的字,选错了有可能导致flash刷写失败

读取Flash命令:

```shell
flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=2000 -r flash.bin
```

> 刷完路由器是可以开机了,但是因为路由器本身太烂,各种断流,最后买了个新的路由器,真是出力不讨好
收藏 ♥ 感谢
Spoony 小组长 2021-02-06 
折腾一下学到经验也值了
RaspiSQH 117.65m 2021-02-06 
dalao
ps.现在电信光猫都是openwrt的2333 你那个应该有年头了

登录注册 后可回复。




› 相关内容关注微信公众号