趣小组
[ MAKE ]
首页
节点
分享
创造
问与答
二手交易
编程
电子
树莓派
Arduino
手工
小玩意
ACG 二次元
科学
文化
电影
宠物
旅行
技术支持
登录
注册
首页
树莓派
树莓派做编程器刷写ROM
九年吃菜粥
38.85m
•
2021-02-06
•
2281 次点击
•
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 ``` > 刷完路由器是可以开机了,但是因为路由器本身太烂,各种断流,最后买了个新的路由器,真是出力不讨好
事情的起因是因为手贱,把家中无线路由器刷上了国际版固件,结果是无法开机
无奈拆开,发现有一块类似于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
120.5m
2021-02-06
dalao
ps.现在电信光猫都是openwrt的2333 你那个应该有年头了
登录
或
注册
后可回复。
›
树莓派制造
›
树莓派实验室
›
树莓派 Pico 中文站
›
Raspberry Pi Foundation
›
Raspbian
›
Adafruit
› 相关内容关注微信公众号