Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ jobs:
build:
[
{ screen: 'mono', suffix: '-founders-passport', hash_suffix: '-founders'},
{ screen: 'color', suffix: '-passport', hash_suffix: ''},
{ screen: 'color', colorway: 'light', suffix: '-passport-light', hash_suffix: '-light'},
{ screen: 'color', colorway: 'dark', suffix: '-passport-dark', hash_suffix: '-dark'},
]

services:
Expand Down Expand Up @@ -131,15 +132,16 @@ jobs:
- run: |
echo "DOCKER_IMAGE=localhost:5000/foundation-devices/passport2:latest" >> $GITHUB_ENV
echo "SCREEN_MODE=$(echo ${{ matrix.screen }} | tr a-z A-Z)" >> $GITHUB_ENV
echo "COLORWAY=$(echo ${{ matrix.colorway }} | tr a-z A-Z)" >> $GITHUB_ENV

- name: Build
run: just build-bootloader ${{ matrix.screen }}

- name: Upload bootloader
uses: actions/upload-artifact@v4
with:
name: bootloader-${{ env.SCREEN_MODE }}.bin
path: ports/stm32/boards/Passport/bootloader/arm/release/bootloader-${{ env.SCREEN_MODE }}.bin
name: bootloader-${{ env.SCREEN_MODE }}-${{ env.COLORWAY }}.bin
path: ports/stm32/boards/Passport/bootloader/arm/release/bootloader-${{ env.SCREEN_MODE }}-${{ env.COLORWAY }}.bin

simulator:
name: Simulator
Expand Down
33 changes: 15 additions & 18 deletions ports/stm32/boards/Passport/bootloader/Justfile
Original file line number Diff line number Diff line change
Expand Up @@ -11,26 +11,23 @@ openocd_cfg := join(contribdir, "openocd.cfg")

# Build the bootloader (debug, release, locked or production)
# NOTE: Pass "factory_test" for factory_test to enable it.
build screen="mono" rel="release" factory_test="": clean
build screen="mono" colorway="light" rel="release" factory_test="": clean
#!/usr/bin/env bash
set -e
echo -e "\nBuilding Bootloader..."

echo {{ if screen == "mono" { "Building with SCREEN_MODE=MONO" } else if screen == "color" { "Building with SCREEN_MODE=COLOR" } else { error("Unsupported screen type. Use 'mono' or 'color'") } }}

make {{rel}} SCREEN_MODE={{uppercase(screen)}} FACTORY_TEST={{factory_test}}
echo {{ if screen == "mono" { "Building for MONO screen" } else if screen == "color" { "Building for COLOR screen" } else { error("Invalid screen type '" + screen + "'. Must be 'mono' or 'color'") } }}
if [[ "{{screen}}" == "color" ]]; then
echo {{ if colorway == "light" { "Building LIGHT colorway" } else if colorway == "dark" { "Building DARK colorway" } else { error("Invalid colorway type '" + colorway + "'. Must be 'light' or 'dark'") } }}
fi
make {{rel}} SCREEN_MODE={{uppercase(screen)}} COLORWAY={{uppercase(colorway)}} FACTORY_TEST={{factory_test}}

if [[ "{{rel}}" == "debug" ]]; then
FOLDER=debug
else
FOLDER=release
fi

# if test -f "secrets"; then
# echo -e "\nAppending secrets to the end..."
# add-secrets -b arm/${FOLDER}/bootloader-{{uppercase(screen)}}.bin -s secrets
# fi

echo -e "\nBootloader Build Complete"

# Clean the bootloader build
Expand All @@ -41,7 +38,7 @@ clean:

# Build and flash the bootloader, appending the existing secrets, if any.
# If no secrets are present in the device, then just flash the raw bootloader.
flash screen="mono" rel="release" factory_test="": (build screen rel factory_test) && (reset)
flash screen="mono" colorway="light" rel="release" factory_test="": (build screen colorway rel factory_test) && (reset)
#!/usr/bin/env bash
set -euo pipefail

Expand All @@ -54,13 +51,13 @@ flash screen="mono" rel="release" factory_test="": (build screen rel factory_tes
if cmp -s ${DEVICE_SECRETS_BIN} ${EMPTY_SECRETS_BIN};
then
echo "Board doesn't have secrets, flashing raw firmware"
just run-ocd-command "flash write_image erase arm/{{rel}}/bootloader-{{uppercase(screen)}}.bin 0x8000000"
just run-ocd-command "flash write_image erase arm/{{rel}}/bootloader-{{uppercase(screen)}}-{{uppercase(colorway)}}.bin 0x8000000"
else
echo "Appending existing secrets to the bootloader"
add-secrets -b "arm/{{rel}}/bootloader-{{uppercase(screen)}}.bin" -s ${DEVICE_SECRETS_BIN}
add-secrets -b "arm/{{rel}}/bootloader-{{uppercase(screen)}}-{{uppercase(colorway)}}.bin" -s ${DEVICE_SECRETS_BIN}

echo "Flashing bootloader with secrets"
just run-ocd-command "flash write_image erase arm/{{rel}}/bootloader-{{uppercase(screen)}}-secrets.bin 0x8000000"
just run-ocd-command "flash write_image erase arm/{{rel}}/bootloader-{{uppercase(screen)}}-{{uppercase(colorway)}}-secrets.bin 0x8000000"
fi

# Remove the tmp files
Expand All @@ -69,13 +66,13 @@ flash screen="mono" rel="release" factory_test="": (build screen rel factory_tes


# Build and flash the bootloader with no secrets (use to setup a new Secure Element)
flash-only screen="mono" rel="release": && (reset)
just run-ocd-command "flash write_image erase arm/{{rel}}/bootloader-{{uppercase(screen)}}.bin 0x8000000"
flash-only screen="mono" colorway="light" rel="release": && (reset)
just run-ocd-command "flash write_image erase arm/{{rel}}/bootloader-{{uppercase(screen)}}-{{uppercase(colorway)}}.bin 0x8000000"

# Build and flash the bootloader with saved secrets (use to restore the bootloader of a bricked device)
flash-with-secrets screen="mono" rel="release": && (reset)
add-secrets -b "arm/{{rel}}/bootloader-{{uppercase(screen)}}.bin" -s secrets
just run-ocd-command "flash write_image erase arm/{{rel}}/bootloader-{{uppercase(screen)}}-secrets.bin 0x8000000"
flash-with-secrets screen="mono" colorway="light" rel="release": && (reset)
add-secrets -b "arm/{{rel}}/bootloader-{{uppercase(screen)}}-{{uppercase(colorway)}}.bin" -s secrets
just run-ocd-command "flash write_image erase arm/{{rel}}/bootloader-{{uppercase(screen)}}-{{uppercase(colorway)}}-secrets.bin 0x8000000"

# Reset the Passport
reset: (run-ocd-command "reset")
Expand Down
15 changes: 12 additions & 3 deletions ports/stm32/boards/Passport/bootloader/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

include constants.mk

BOOTLOADER_VERSION = 2.1
BOOTLOADER_VERSION = 2.2

# Toolchain
TOOLCHAIN = arm-none-eabi-
Expand Down Expand Up @@ -43,7 +43,7 @@ VPATH += $(PASSPORT_PATH)/common/micro-ecc
VPATH += $(CURDIR)/images/$(shell echo $(SCREEN_MODE) | tr A-Z a-z)

# Basename of all targets
TARGET_NAME = bootloader-$(SCREEN_MODE)
TARGET_NAME = bootloader-$(SCREEN_MODE)-$(COLORWAY)
TARGETDIR = arm

# Source files. Important: Add them also to link-script.ld to control placement.
Expand All @@ -63,7 +63,11 @@ SOURCES += printf.c
SOURCES += passport_fonts.c

# Graphics
SOURCES += SPLASH.c
ifeq ($(COLORWAY),LIGHT)
SOURCES += SPLASH_LIGHT.c
else
SOURCES += SPLASH_DARK.c
endif
SOURCES += BACKGROUND.c
SOURCES += ICON_ABOUT.c
SOURCES += ICON_BACK.c
Expand Down Expand Up @@ -155,6 +159,11 @@ CFLAGS += -mtune=cortex-m7 -mcpu=cortex-m7 -DSTM32H753xx
CFLAGS += -I. -I$(PASSPORT_PATH)/include -I$(PASSPORT_PATH)/common/micro-ecc -I$(CURDIR)/images
CFLAGS += -DPASSPORT_BOOTLOADER
CFLAGS += -DSCREEN_MODE_$(SCREEN_MODE)=1
ifeq ($(COLORWAY),LIGHT)
CFLAGS += -DCOLORWAY_LIGHT=1
else
CFLAGS += -DCOLORWAY_DARK=1
endif
CFLAGS += -DLV_LVGL_H_INCLUDE_SIMPLE
ifeq ($(findstring production,$(MAKECMDGOALS)),production)
CFLAGS += -DPRODUCTION_BUILD
Expand Down
Loading
Loading