2017-11-05 03:00:05 +00:00
|
|
|
# Build instructions
|
|
|
|
|
|
|
|
## Build instructions for Emulator (Unix port)
|
|
|
|
|
|
|
|
Run the following to checkout the project:
|
|
|
|
|
|
|
|
```sh
|
|
|
|
git clone --recursive https://github.com/trezor/trezor-core.git
|
|
|
|
cd trezor-core
|
|
|
|
```
|
|
|
|
|
2018-05-04 14:56:32 +00:00
|
|
|
If you are building from an existing checkout, don't forget to use the following to refresh the submodules:
|
2018-03-02 15:36:19 +00:00
|
|
|
|
|
|
|
```sh
|
2018-03-05 12:08:42 +00:00
|
|
|
make vendor
|
2018-03-02 15:36:19 +00:00
|
|
|
```
|
|
|
|
|
2018-05-04 14:56:32 +00:00
|
|
|
Install the required packages, depending on your operating system.
|
2018-06-05 21:42:26 +00:00
|
|
|
|
2018-05-04 14:56:32 +00:00
|
|
|
* __Debian/Ubuntu__:
|
2018-06-05 21:42:26 +00:00
|
|
|
|
2018-05-04 14:56:32 +00:00
|
|
|
```sh
|
2018-06-05 21:30:43 +00:00
|
|
|
sudo apt-get install scons libsdl2-dev libsdl2-image-dev
|
2018-05-04 14:56:32 +00:00
|
|
|
```
|
2018-06-05 21:42:26 +00:00
|
|
|
|
2018-05-04 14:56:32 +00:00
|
|
|
* __Fedora__:
|
2018-06-05 21:42:26 +00:00
|
|
|
|
2018-05-04 14:56:32 +00:00
|
|
|
```sh
|
2018-06-05 21:30:43 +00:00
|
|
|
sudo yum install scons SDL2-devel SDL2_image-devel
|
2018-05-04 14:56:32 +00:00
|
|
|
```
|
2018-06-05 21:42:26 +00:00
|
|
|
|
2018-05-04 14:56:32 +00:00
|
|
|
* __OpenSUSE__:
|
2018-06-05 21:42:26 +00:00
|
|
|
|
2018-05-04 14:56:32 +00:00
|
|
|
```sh
|
2018-06-05 21:30:43 +00:00
|
|
|
sudo zypper install scons libSDL2-devel libSDL2_image-devel
|
2018-05-04 14:56:32 +00:00
|
|
|
```
|
2018-06-05 21:42:26 +00:00
|
|
|
|
2018-05-04 14:56:32 +00:00
|
|
|
* __Arch__:
|
2018-06-05 21:42:26 +00:00
|
|
|
|
2018-05-04 14:56:32 +00:00
|
|
|
```sh
|
2018-06-05 21:30:43 +00:00
|
|
|
sudo pacman -S scons sdl2 sdl2_image
|
2018-05-04 14:56:32 +00:00
|
|
|
```
|
2018-06-05 21:42:26 +00:00
|
|
|
|
2018-05-04 14:56:32 +00:00
|
|
|
* __Mac OS X__:
|
2018-06-05 21:42:26 +00:00
|
|
|
|
2018-05-04 14:56:32 +00:00
|
|
|
```sh
|
|
|
|
brew install scons sdl2 sdl2_image
|
|
|
|
```
|
|
|
|
|
2018-06-05 21:42:26 +00:00
|
|
|
* __Windows__: not supported yet, sorry.
|
2018-05-04 14:56:32 +00:00
|
|
|
|
|
|
|
Run the build with:
|
2018-06-05 21:42:26 +00:00
|
|
|
|
2017-11-05 03:00:05 +00:00
|
|
|
```sh
|
|
|
|
make build_unix
|
|
|
|
```
|
|
|
|
|
2018-05-04 14:56:32 +00:00
|
|
|
Now you can start the emulator:
|
2018-06-05 21:42:26 +00:00
|
|
|
|
2017-11-05 03:00:05 +00:00
|
|
|
```sh
|
2018-05-04 14:56:32 +00:00
|
|
|
./emu.sh
|
2017-11-05 03:00:05 +00:00
|
|
|
```
|
|
|
|
|
2018-05-04 14:56:32 +00:00
|
|
|
## Build instructions for Embedded (ARM port)
|
2017-11-05 03:00:05 +00:00
|
|
|
|
2018-05-04 14:56:32 +00:00
|
|
|
### Requirements
|
2017-11-05 03:00:05 +00:00
|
|
|
|
2018-05-04 14:56:32 +00:00
|
|
|
You will need the GCC ARM toolchain for building and OpenOCD for flashing to a device.
|
|
|
|
You will also need Python dependencies for signing.
|
2017-11-05 03:00:05 +00:00
|
|
|
|
2018-05-04 14:56:32 +00:00
|
|
|
#### Debian/Ubuntu
|
2017-11-05 03:00:05 +00:00
|
|
|
|
|
|
|
```sh
|
2018-06-02 11:06:24 +00:00
|
|
|
sudo apt-get install scons gcc-arm-none-eabi libnewlib-arm-none-eabi
|
2017-11-05 03:00:05 +00:00
|
|
|
```
|
|
|
|
|
2018-05-04 14:56:32 +00:00
|
|
|
#### OS X
|
2017-11-05 03:00:05 +00:00
|
|
|
|
2018-07-12 11:25:12 +00:00
|
|
|
1. Download [gcc-arm-none-eabi](https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads)
|
2018-05-04 14:56:32 +00:00
|
|
|
2. Follow the [install instructions](https://launchpadlibrarian.net/287100883/readme.txt)
|
|
|
|
3. To install OpenOCD, run `brew install open-ocd`
|
|
|
|
4. Run `make vendor build_boardloader build_bootloader build_firmware`
|
2017-11-05 03:00:05 +00:00
|
|
|
|
2018-05-04 14:56:32 +00:00
|
|
|
### Building
|
2017-11-05 03:00:05 +00:00
|
|
|
|
2018-05-04 14:56:32 +00:00
|
|
|
```sh
|
|
|
|
sudo pip3 install pipenv
|
|
|
|
pipenv install
|
|
|
|
pipenv run make vendor build_boardloader build_bootloader build_firmware
|
2017-11-05 03:00:05 +00:00
|
|
|
```
|
|
|
|
|
2018-05-30 09:41:41 +00:00
|
|
|
### Uploading
|
|
|
|
|
|
|
|
Use `make upload` to upload the firmware to a production device (with a bootloader).
|
|
|
|
|
2018-05-04 14:56:32 +00:00
|
|
|
### Flashing
|
2017-11-05 03:00:05 +00:00
|
|
|
|
|
|
|
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.
|
2018-10-09 12:35:52 +00:00
|
|
|
|
|
|
|
|
|
|
|
## 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.
|
|
|
|
|
|
|
|
```sh
|
|
|
|
DEBUG_BUILD=1 make build_unix
|
|
|
|
```
|