Run the following to checkout the project:
git clone --recursive https://github.com/trezor/trezor-core.git
cd trezor-core
If you are building from an existing checkout, don't forget to use the following to refresh the submodules:
make vendor
Install the required packages, depending on your operating system.
-
Debian/Ubuntu:
sudo apt-get install scons libsdl2-dev libsdl2-image-dev
-
Fedora:
sudo yum install scons SDL2-devel SDL2_image-devel
-
OpenSUSE:
sudo zypper install scons libSDL2-devel libSDL2_image-devel
-
Arch:
sudo pacman -S scons sdl2 sdl2_image
-
Mac OS X:
brew install scons sdl2 sdl2_image pkg-config
-
Windows: not supported yet, sorry.
Run the build with:
make build_unix
Now you can start the emulator:
./emu.sh
You will need the GCC ARM toolchain for building and OpenOCD for flashing to a device. You will also need Python dependencies for signing.
sudo apt-get install scons gcc-arm-none-eabi libnewlib-arm-none-eabi
- Download gcc-arm-none-eabi
- Follow the install instructions
- To install OpenOCD, run
brew install open-ocd
- Run
make vendor build_boardloader build_bootloader build_firmware
sudo pip3 install pipenv
pipenv install
pipenv run make vendor build_boardloader build_bootloader build_firmware
Use make upload
to upload the firmware to a production device (with a bootloader).
For flashing firmware to blank device (without bootloader) use make flash
,
or make flash STLINK_VER=v2-1
if using a ST-LINK/V2.1 interface.
You need to have OpenOCD installed.
Build the debuggable unix binary so you can attach the gdb or lldb. This removes optimizations and reduces address space randomizaiton. Beware that this will significantly bloat the final binary and the firmware runtime memory limit HEAPSIZE may have to be increased.
DEBUG_BUILD=1 make build_unix