1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2024-11-26 09:28:13 +00:00
trezor-firmware/core/docs/build.md
2019-05-28 10:24:49 +02:00

2.5 KiB

Build instructions

Build instructions for Emulator (Unix port)

Run the following to checkout the project:

git clone --recursive https://github.com/trezor/trezor-firmware.git
cd trezor-firmware/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
  • NixOS:

There is a shell.nix file in the root of the project. Just run the following before entering the core directory:

nix-shell
  • 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

Build instructions for Embedded (ARM port)

Requirements

You will need the GCC ARM toolchain for building and OpenOCD for flashing to a device. You will also need Python dependencies for signing.

Debian/Ubuntu

sudo apt-get install scons gcc-arm-none-eabi libnewlib-arm-none-eabi

OS X

  1. Download gcc-arm-none-eabi
  2. Follow the install instructions
  3. To install OpenOCD, run brew install open-ocd
  4. Run make vendor build_boardloader build_bootloader build_firmware

Building

sudo pip3 install pipenv
pipenv install
pipenv run make vendor build_boardloader build_bootloader build_firmware

Uploading

Use make upload to upload the firmware to a production device (with a bootloader).

Flashing

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.

Building for debugging and hacking in Emulator (Unix port)

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