mirror of https://github.com/wolfSSL/wolfBoot.git
89 lines
2.1 KiB
Markdown
89 lines
2.1 KiB
Markdown
# wolfBoot Setup Instructions
|
||
|
||
## Gathering Sources
|
||
|
||
### Git Command Line
|
||
|
||
```sh
|
||
git clone https://github.com/wolfSSL/wolfBoot.git
|
||
cd wolfBoot
|
||
git submodule init
|
||
git submodule update
|
||
```
|
||
|
||
### Using browser only
|
||
|
||
Download these:
|
||
https://github.com/wolfSSL/wolfBoot/archive/master.zip
|
||
https://github.com/wolfSSL/wolfssl/archive/master.zip
|
||
|
||
1. Extract wolfBoot
|
||
2. `cd wolfBoot/lib`
|
||
3. Extract wolfSSL (should be named `lib/wolfssl`)
|
||
|
||
Directory should look like:
|
||
|
||
```
|
||
wolfBoot
|
||
-> config
|
||
-> examples (sample configurations)
|
||
-> docs (markdown docs)
|
||
-> hal (Hardware target abstractions)
|
||
-> spi
|
||
-> uart
|
||
-> IDE
|
||
-> include
|
||
-> lib (wolfSSL and wolfTPM submodules)
|
||
-> wolfssl
|
||
-> src
|
||
-> wolfcrypt/src
|
||
-> src
|
||
-> image.c (crypto verify/hash)
|
||
-> loader.c (main)
|
||
-> libwolfboot.c (User application API’s)
|
||
-> update_*.c (flash/ram wolfBoot_start)
|
||
-> test-app (example applications)
|
||
-> tools
|
||
-> keytools (signing and key generation tools)
|
||
```
|
||
|
||
## Configuration
|
||
|
||
Use `make config` to walk-through setting up the platform, architecture and partition settings.
|
||
OR
|
||
Use the `config/examples` as a template to wolfBoot root as `.config`.
|
||
Example: `cp ./config/examples/zynqmp.config .config`
|
||
|
||
## Setup the Key
|
||
|
||
Build the key tools: `make keytools`
|
||
|
||
The key generation is handled the first time you use `make`, however we do provide some tools to help use existing keys.
|
||
See tools in `tools/keytool`. Public key(s) are populated into the `src/keystore.c`.
|
||
The signing key used goes into wolfBoot root (example `rsa4096.der`).
|
||
|
||
## Building
|
||
|
||
```sh
|
||
make
|
||
```
|
||
|
||
The “make [target]”
|
||
* `keytools`: Build the C version of the key tools
|
||
* `wolfboot.bin`: Build the .elf and .bin version of the bootloader only
|
||
* `test-app/image.bin`: Builds the test application
|
||
* `test-app/image_v1_signed.bin`: Builds the test application signed with version 1
|
||
* `factory.bin`: Builds bootloader and test application signed and appended together
|
||
|
||
Note: Default is “factory.bin”
|
||
|
||
|
||
## Building with Cross Compile
|
||
|
||
QNX Example:
|
||
|
||
```sh
|
||
source ~/qnx700/qnxsdp-env.sh
|
||
make CROSS_COMPILE=aarch64-unknown-nto-qnx7.0.0-
|
||
```
|