https://github.com/initdc/libreboot_pico-serprog
https://github.com/initdc/libreboot_pico-serprog
Last synced: 8 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/initdc/libreboot_pico-serprog
- Owner: initdc
- License: gpl-3.0
- Created: 2024-06-07T05:28:58.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-06-07T05:55:09.000Z (almost 2 years ago)
- Last Synced: 2025-03-14T05:09:49.251Z (about 1 year ago)
- Language: C
- Size: 55.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- License: COPYING
Awesome Lists containing this project
README
# pico-serprog
Slightly less terrible serprog implementation for the Raspberry Pi Pico and
other RP2040 based boards. Based on
.
Further improved by kukrimate .
And me (Riku\_V) here.
Pre-compiled binaries binaries can be downloaded from the
.
For a guide on how to flash a chip see
.
This takes about 17 seconds to read the 8MiB BIOS chip of an X200.
Pinout for the SPI lines:
| Pin | Function |
|-----|----------|
| 7 | CS |
| 6 | MISO |
| 5 | MOSI |
| 4 | SCK |

## Compiling
```
cmake .
make
```
Plug in your Pico. Mount it as you would any other USB flash drive.
Copy `pico_serprog.uf2` into it. Your programmer is now ready.
If you want to change the firwmare, you need to press the button
on the board while you plug it in.
## Usage
Substitute ttyACMx with the actual tty device corresponding to the firmware.
You can find this by running `dmesg -wH`. When you plug in the device, a line
containing something like this will appear:
```
[453876.669019] cdc_acm 2-1.2:1.0: ttyACM0: USB ACM device
```
Read chip:
```
flashprog -p serprog:dev=/dev/ttyACMx,spispeed=32M -r flash.bin
```
Write chip:
```
flashprog -p serprog:dev=/dev/ttyACMx,spispeed=32M -w flash.bin
```
Multiple chips can be connected at the same time. Pins GP5-GP8 are Chip
Selects 0-3, respectively. The firmware defaults to using Chip Select 0.
```
flashprog -p serprog:dev=/dev/ttyACMx,cs=0 -r chip0.bin
flashprog -p serprog:dev=/dev/ttyACMx,cs=1 -r chip1.bin
```
## License
As a lot of the code itself was heavily inspired/influenced by `stm32-vserprog`
this code is licensed under GPLv3.
pinout.png is based on
[pico-pinout.svg](https://www.raspberrypi.com/documentation/microcontrollers/images/pico-pinout.svg)
by Raspberry Pi Ltd, under the
[Creative Commons Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/)
license.