add new programmer: raspberry pi pico
Signed-off-by: Riku Viitanen <riku.viitanen@protonmail.com>master
parent
91726b4ad8
commit
645066369b
|
@ -19,7 +19,8 @@ dump, erase and rewrite these flash chips.
|
||||||
|
|
||||||
libreboot currently documents how to use these SPI programmers:
|
libreboot currently documents how to use these SPI programmers:
|
||||||
|
|
||||||
* Raspberry Pi (RPi)
|
* Raspberry Pi Pico
|
||||||
|
* Raspberry Pi (RPi) single-board computers
|
||||||
* BeagleBone Black (BBB)
|
* BeagleBone Black (BBB)
|
||||||
* Libre Computer 'Le Potato'
|
* Libre Computer 'Le Potato'
|
||||||
|
|
||||||
|
@ -40,6 +41,55 @@ from Linux, with flashrom.
|
||||||
*This* guide that you're reading now is for using an *external* programmer. It
|
*This* guide that you're reading now is for using an *external* programmer. It
|
||||||
is called *external* because it's not the *internal* one on your mainboard.
|
is called *external* because it's not the *internal* one on your mainboard.
|
||||||
|
|
||||||
|
Raspberry Pi Pico
|
||||||
|
=================
|
||||||
|
|
||||||
|
![Left to right: Raspberry Pi Pico and Pico H](https://av.libreboot.org/rpi_pico/two_picos.webp)
|
||||||
|
|
||||||
|
If you don't already have a programmer, get this one! It's well engineered,
|
||||||
|
safe, and costs just $5 with headers pre-soldered (Raspberry Pi Pico H).
|
||||||
|
Additionally, all the software running on it is free, down to the full
|
||||||
|
[Boot ROM](https://github.com/raspberrypi/pico-bootrom). The wireless
|
||||||
|
versions (Pico W & Pico WH) need non-free firmware to use the Wi-Fi chip,
|
||||||
|
which is not needed for following this guide.
|
||||||
|
|
||||||
|
A Pico has proper 3.3V logic levels, unlike a ch341a. Which means it won't
|
||||||
|
destroy your board by sending 5V to it. If you have a 1.8V flash chip,
|
||||||
|
you need to add a logic level converter.
|
||||||
|
|
||||||
|
First, connect just the Pico to your computer with a micro-USB cable.
|
||||||
|
Mount it like any other USB flash drive. If it isn't detected, you might need
|
||||||
|
to press the BOOTSEL button while you plug it in (this forces it into the
|
||||||
|
bootloader mode).
|
||||||
|
|
||||||
|
Now download the serprog
|
||||||
|
[firmware](https://viitanen.xyz/pico-serprog-20230827.tar.lz).
|
||||||
|
Copy the file `pico_serprog.uf2` into your Pico.
|
||||||
|
Disconnect the Pico and proceed to wire it to your
|
||||||
|
[flash chip](/docs/install/spi.html#identify-which-flash-type-you-have).
|
||||||
|
|
||||||
|
![Raspberry Pi Pico pinout, when using the firmware linked above](https://av.libreboot.org/rpi_pico/pinout_serprog.png)
|
||||||
|
|
||||||
|
![A Raspberry Pi Pico connected to a SOIC16 flash chip](https://av.libreboot.org/rpi_pico/soic16_x200.webp)
|
||||||
|
|
||||||
|
Headers were manually soldered on the top side, and the plastic packaging
|
||||||
|
was repurposed as an insulating base. These might be nice to have, but by no
|
||||||
|
means necessary. If your headers are on the other side, just keep in mind
|
||||||
|
that the pinouts are as seen from above.
|
||||||
|
|
||||||
|
Now run (as root) `dmesg -wH`. When you plug in the Pico, a line like this
|
||||||
|
will appear:
|
||||||
|
|
||||||
|
[453876.669019] cdc_acm 2-1.2:1.0: ttyACMx: USB ACM device
|
||||||
|
|
||||||
|
Take note of the ttyACMx. Flashrom is now usable
|
||||||
|
(substitute ttyACMx with what you observed earlier).
|
||||||
|
|
||||||
|
flashrom -p serprog:dev=/dev/ttyACMx,spispeed=16M
|
||||||
|
|
||||||
|
spispeed=32M usually works, but since it's not much faster it's probably
|
||||||
|
not worth it. The 12Mbps USB port is limiting the actual speed here.
|
||||||
|
|
||||||
Do not use CH341A!
|
Do not use CH341A!
|
||||||
==================
|
==================
|
||||||
|
|
||||||
|
@ -118,11 +168,33 @@ SOIC8
|
||||||
|
|
||||||
![](https://av.libreboot.org/chip/soic8.jpg)
|
![](https://av.libreboot.org/chip/soic8.jpg)
|
||||||
|
|
||||||
|
| Pin | Function |
|
||||||
|
|-----|----------|
|
||||||
|
| 1 | CS |
|
||||||
|
| 2 | MISO |
|
||||||
|
| 3 | WP |
|
||||||
|
| 4 | GND |
|
||||||
|
| 5 | MOSI |
|
||||||
|
| 6 | CLK |
|
||||||
|
| 7 | HOLD |
|
||||||
|
| 8 | VCC |
|
||||||
|
|
||||||
SOIC16
|
SOIC16
|
||||||
------
|
------
|
||||||
|
|
||||||
![](https://av.libreboot.org/chip/soic16.jpg)
|
![](https://av.libreboot.org/chip/soic16.jpg)
|
||||||
|
|
||||||
|
| Pin | Function |
|
||||||
|
|-----|----------|
|
||||||
|
| 2 | VCC |
|
||||||
|
| 3 | HOLD |
|
||||||
|
| 7 | CS |
|
||||||
|
| 8 | MISO |
|
||||||
|
| 9 | WP |
|
||||||
|
| 10 | GND |
|
||||||
|
| 15 | MOSI |
|
||||||
|
| 16 | CLK |
|
||||||
|
|
||||||
SOIC8 and SOIC16 are the most common types, but there are others:
|
SOIC8 and SOIC16 are the most common types, but there are others:
|
||||||
|
|
||||||
WSON8
|
WSON8
|
||||||
|
@ -131,16 +203,19 @@ WSON8
|
||||||
It will be like this on an X200S or X200 Tablet:\
|
It will be like this on an X200S or X200 Tablet:\
|
||||||
|
|
||||||
![](https://av.libreboot.org/x200t_flash/X200T-flashchip-location.jpg)
|
![](https://av.libreboot.org/x200t_flash/X200T-flashchip-location.jpg)
|
||||||
|
Pinout is the same as SOIC8 above.
|
||||||
|
|
||||||
On T400S, it is in this location near the RAM:\
|
On T400S, it is in this location near the RAM:\
|
||||||
![](https://av.libreboot.org/t400s/soic8.jpg)\
|
![](https://av.libreboot.org/t400s/soic8.jpg)\
|
||||||
NOTE: in this photo, the chip has been replaced with SOIC8
|
NOTE: in this photo, the chip has been replaced with SOIC8.
|
||||||
|
|
||||||
DIP8
|
DIP8
|
||||||
----
|
----
|
||||||
|
|
||||||
![](https://av.libreboot.org/dip8/dip8.jpg)
|
![](https://av.libreboot.org/dip8/dip8.jpg)
|
||||||
|
|
||||||
|
Pinout is the same as SOIC8 above.
|
||||||
|
|
||||||
Supply Voltage
|
Supply Voltage
|
||||||
--------------
|
--------------
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,7 @@ x-toc-enable: true
|
||||||
|
|
||||||
libreboot 目前记录了这些 SPI 编程器的使用方法:
|
libreboot 目前记录了这些 SPI 编程器的使用方法:
|
||||||
|
|
||||||
|
* Raspberry Pi Pico
|
||||||
* 树莓派(Raspberry Pi,RPi)
|
* 树莓派(Raspberry Pi,RPi)
|
||||||
* BeagleBone Black(BBB)
|
* BeagleBone Black(BBB)
|
||||||
* Libre Computer 'Le Potato'
|
* Libre Computer 'Le Potato'
|
||||||
|
@ -23,6 +24,55 @@ libreboot 目前记录了这些 SPI 编程器的使用方法:
|
||||||
|
|
||||||
你在读的*这个*教程,使用的是*外部*编程器。之所以叫*外部*,是因为用的不是主板上的*内部*编程器。
|
你在读的*这个*教程,使用的是*外部*编程器。之所以叫*外部*,是因为用的不是主板上的*内部*编程器。
|
||||||
|
|
||||||
|
Raspberry Pi Pico
|
||||||
|
=================
|
||||||
|
|
||||||
|
![Left to right: Raspberry Pi Pico and Pico H](https://av.libreboot.org/rpi_pico/two_picos.webp)
|
||||||
|
|
||||||
|
If you don't already have a programmer, get this one! It's well engineered,
|
||||||
|
safe, and costs just $5 with headers pre-soldered (Raspberry Pi Pico H).
|
||||||
|
Additionally, all the software running on it is free, down to the full
|
||||||
|
[Boot ROM](https://github.com/raspberrypi/pico-bootrom). The wireless
|
||||||
|
versions (Pico W & Pico WH) need non-free firmware to use the Wi-Fi chip,
|
||||||
|
which is not needed for following this guide.
|
||||||
|
|
||||||
|
A Pico has proper 3.3V logic levels, unlike a ch341a. Which means it won't
|
||||||
|
destroy your board by sending 5V to it. If you have a 1.8V flash chip,
|
||||||
|
you need to add a logic level converter.
|
||||||
|
|
||||||
|
First, connect just the Pico to your computer with a micro-USB cable.
|
||||||
|
Mount it like any other USB flash drive. If it isn't detected, you might need
|
||||||
|
to press the BOOTSEL button while you plug it in (this forces it into the
|
||||||
|
bootloader mode).
|
||||||
|
|
||||||
|
Now download the serprog
|
||||||
|
[firmware](https://viitanen.xyz/pico-serprog-20230827.tar.lz).
|
||||||
|
Copy the file `pico_serprog.uf2` into your Pico.
|
||||||
|
Disconnect the Pico and proceed to wire it to your
|
||||||
|
[flash chip](/docs/install/spi.html#identify-which-flash-type-you-have).
|
||||||
|
|
||||||
|
![Raspberry Pi Pico pinout, when using the firmware linked above](https://av.libreboot.org/rpi_pico/pinout_serprog.png)
|
||||||
|
|
||||||
|
![A Raspberry Pi Pico connected to a SOIC16 flash chip](https://av.libreboot.org/rpi_pico/soic16_x200.webp)
|
||||||
|
|
||||||
|
Headers were manually soldered on the top side, and the plastic packaging
|
||||||
|
was repurposed as an insulating base. These might be nice to have, but by no
|
||||||
|
means necessary. If your headers are on the other side, just keep in mind
|
||||||
|
that the pinouts are as seen from above.
|
||||||
|
|
||||||
|
Now run (as root) `dmesg -wH`. When you plug in the Pico, a line like this
|
||||||
|
will appear:
|
||||||
|
|
||||||
|
[453876.669019] cdc_acm 2-1.2:1.0: ttyACMx: USB ACM device
|
||||||
|
|
||||||
|
Take note of the ttyACMx. Flashrom is now usable
|
||||||
|
(substitute ttyACMx with what you observed earlier).
|
||||||
|
|
||||||
|
flashrom -p serprog:dev=/dev/ttyACMx,spispeed=16M
|
||||||
|
|
||||||
|
spispeed=32M usually works, but since it's not much faster it's probably
|
||||||
|
not worth it. The 12Mbps USB port is limiting the actual speed here.
|
||||||
|
|
||||||
不要使用 CH341A!
|
不要使用 CH341A!
|
||||||
==================
|
==================
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue