MicroPython Bitcoin bundle for microcontrollers
July 4, 2023 ยท View on GitHub
Focusing on F469-Discovery board from STMicroelectronics, planning to add other boards later as well.
Build includes: secp256k1 bindings, embit bitcoin python library, LittlevGL GUI library
Quick start
Check out the documentation folder for a tutorial and API of crypto modules.
Some examples are located in the examples folder.
To get micropython running on the board:
- Download the latest
upy-f469disco.binfile from releases - Make sure your power jumper on the board is set to STLK position
- Connect the board to your computer with miniUSB cable
- Copy the
upy-f469disco.binfile to mountedF469NI_DISCOvolume - Wait until it unmounts
- Connect the board with microUSB cable (on the other side of the board)
- Use
screenorminitermor whatever you like to connect to a virtual serial port that appears on your system - Have fun with MicroPython on the board! Type
help('modules')there to get information about installed modules.
Build
Clone this repo recursively - we have many submodules. If you forgot - makefile will do it for you, but be patient, submodules are pretty large.
Prerequisities: Board
To compile the firmware for the board you will need arm-none-eabi-gcc compiler.
On MacOS install it using brew:
brew tap ArmMbed/homebrew-formulae
brew install arm-none-eabi-gcc
On Linux:
sudo apt-get install gcc-arm-none-eabi binutils-arm-none-eabi gdb-multiarch openocd
On Windows: Install linux subsystem and follow Linux instructions.
Prerequisities: Simulator
You may need to install SDL2 library to simulate the screen of the device.
Linux:
sudo apt install libsdl2-dev
MacOS:
brew install sdl2
Windows:
sudo apt install libsdl2-devon Linux side- install and launch Xming on Windows side
- set
export DISPLAY=:0on linux part
Compilation
We use makefiles. All resulting binaries will end up in the bin folder.
make disco- firmware for the board with frozen bitcoin librarybin/upy-f469disco.binmake empty- firmware for the board without frozen library -bin/upy-f469disco-empty.binmake unix- compiles a simulator for mac/unix -bin/micropython_unix
To launch a simulator either run bin/micropython_unix or simly run make simulate.
If something is not working you can clean up with make clean
Run Unittests
Currently unittests work only on linuxport, and there are... not many... Contributions are very welcome!
make test