Sen descrición

kay e75e3a20e6 Fix undefined `cs` variable hai 9 meses
.gitignore 57e5f20c2f Improve performance %!s(int64=3) %!d(string=hai) anos
99-serprog.rules f9be0c789c Add udev rule to create /dev/serprog0, 1, 2, ... hai 1 ano
CMakeLists.txt 030bfdfa94 Make USB descriptor less generic hai 1 ano
COPYING b5d9c3a720 Init %!s(int64=3) %!d(string=hai) anos
COPYING.CC-BY-SA c8c16e9c11 Add CC-BY-SA 4.0 International license hai 1 ano
main.c e75e3a20e6 Fix undefined `cs` variable hai 9 meses
pico_sdk_import.cmake b5d9c3a720 Init %!s(int64=3) %!d(string=hai) anos
pinout.png 51a50ac9db Add pinout.png hai 1 ano
readme.md bdcb6f6f55 update readme hai 9 meses
serprog.h 6301fbf3ed add support for multiple chip selects hai 10 meses
tusb_config.h 14d004ca02 Use TinyUSB directly instead of the SDK's stdio layer %!s(int64=3) %!d(string=hai) anos
usb_descriptors.c 36bc681dc2 Include board name in product string hai 1 ano

readme.md

pico-serprog

Slightly less terrible serprog implementation for the Raspberry Pi Pico and other RP2040 based boards. Based on pico-serprog by stacksmashing. Further improved by kukrimate here. And me (Riku_V) here.

Pre-compiled binaries binaries can be downloaded from the Libreboot project.

For a guide on how to flash a chip see this page.

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

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 by Raspberry Pi Ltd, under the Creative Commons Attribution-ShareAlike 4.0 International license.