kay e75e3a20e6 Fix undefined `cs` variable | 9 mesi fa | |
---|---|---|
.gitignore | 3 anni fa | |
99-serprog.rules | 1 anno fa | |
CMakeLists.txt | 1 anno fa | |
COPYING | 3 anni fa | |
COPYING.CC-BY-SA | 1 anno fa | |
main.c | 9 mesi fa | |
pico_sdk_import.cmake | 3 anni fa | |
pinout.png | 1 anno fa | |
readme.md | 9 mesi fa | |
serprog.h | 10 mesi fa | |
tusb_config.h | 3 anni fa | |
usb_descriptors.c | 1 anno fa |
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 |
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.
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
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.