An open API service indexing awesome lists of open source software.

https://github.com/initdc/libreboot_pico-serprog


https://github.com/initdc/libreboot_pico-serprog

Last synced: 8 months ago
JSON representation

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
![pico-serprog by stacksmashing](https://github.com/stacksmashing/pico-serprog/).
Further improved by kukrimate ![here](https://github.com/kukrimate/pico-serprog).
And me (Riku\_V) here.

Pre-compiled binaries binaries can be downloaded from the
![Libreboot project](https://libreboot.org/download.html#https).

For a guide on how to flash a chip see
![this page](https://libreboot.org/docs/install/spi.html#raspberry-pi-pico).

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 |

![Pico pinout](pinout.png)

## 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.