Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

streamline layout definitions #4219

Merged
merged 7 commits into from
Sep 27, 2024
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
24 changes: 15 additions & 9 deletions core/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -73,33 +73,39 @@ $(error Unknown TREZOR_MODEL: $(TREZOR_MODEL))
endif


FLASH_START = $(shell layout_parser ${TREZOR_MODEL} FLASH_START)
FLASH_START = $(shell layout_parser ${TREZOR_MODEL} FLASH_START)
BOARDLOADER_START = $(shell layout_parser ${TREZOR_MODEL} BOARDLOADER_START)
BOOTLOADER_START = $(shell layout_parser ${TREZOR_MODEL} BOOTLOADER_START)
KERNEL_START = $(shell layout_parser ${TREZOR_MODEL} KERNEL_START)
FIRMWARE_START = $(shell layout_parser ${TREZOR_MODEL} FIRMWARE_START)
FIRMWARE_P2_START = $(shell layout_parser ${TREZOR_MODEL} FIRMWARE_P2_START)
STORAGE_1_OFFSET = $(shell layout_parser ${TREZOR_MODEL} STORAGE_1_OFFSET)
STORAGE_2_OFFSET = $(shell layout_parser ${TREZOR_MODEL} STORAGE_2_OFFSET)
STORAGE_1_START = $(shell layout_parser ${TREZOR_MODEL} STORAGE_1_START)
STORAGE_2_START = $(shell layout_parser ${TREZOR_MODEL} STORAGE_2_START)
STORAGE_SIZE = $(shell layout_parser ${TREZOR_MODEL} NORCOW_SECTOR_SIZE)
BOARDLOADER_MAXSIZE = $(shell layout_parser ${TREZOR_MODEL} BOARDLOADER_IMAGE_MAXSIZE)
BOOTLOADER_MAXSIZE = $(shell layout_parser ${TREZOR_MODEL} BOOTLOADER_IMAGE_MAXSIZE)
FIRMWARE_MAXSIZE = $(shell layout_parser ${TREZOR_MODEL} FIRMWARE_IMAGE_MAXSIZE)
FIRMWARE_P1_MAXSIZE = $(shell layout_parser ${TREZOR_MODEL} FIRMWARE_P1_IMAGE_MAXSIZE)
FIRMWARE_P2_MAXSIZE = $(shell layout_parser ${TREZOR_MODEL} FIRMWARE_P2_IMAGE_MAXSIZE)
BOARDLOADER_MAXSIZE = $(shell layout_parser ${TREZOR_MODEL} BOARDLOADER_MAXSIZE)
BOOTLOADER_MAXSIZE = $(shell layout_parser ${TREZOR_MODEL} BOOTLOADER_MAXSIZE)
FIRMWARE_MAXSIZE = $(shell layout_parser ${TREZOR_MODEL} FIRMWARE_MAXSIZE)
FIRMWARE_P1_MAXSIZE = $(shell layout_parser ${TREZOR_MODEL} FIRMWARE_P1_MAXSIZE)
FIRMWARE_P2_MAXSIZE = $(shell layout_parser ${TREZOR_MODEL} FIRMWARE_P2_MAXSIZE)
BOARDLOADER_SECTOR_START = $(shell layout_parser ${TREZOR_MODEL} BOARDLOADER_SECTOR_START)
BOARDLOADER_SECTOR_END = $(shell layout_parser ${TREZOR_MODEL} BOARDLOADER_SECTOR_END)
BOOTLOADER_SECTOR_START = $(shell layout_parser ${TREZOR_MODEL} BOOTLOADER_SECTOR_START)
BOOTLOADER_SECTOR_END = $(shell layout_parser ${TREZOR_MODEL} BOOTLOADER_SECTOR_END)
FIRMWARE_SECTOR_START = $(shell layout_parser ${TREZOR_MODEL} FIRMWARE_SECTOR_START)
FIRMWARE_SECTOR_END = $(shell layout_parser ${TREZOR_MODEL} FIRMWARE_SECTOR_END)
FIRMWARE_P1_SECTOR_START = $(shell layout_parser ${TREZOR_MODEL} FIRMWARE_P1_SECTOR_START)
FIRMWARE_P1_SECTOR_END = $(shell layout_parser ${TREZOR_MODEL} FIRMWARE_P1_SECTOR_END)
FIRMWARE_P2_SECTOR_START = $(shell layout_parser ${TREZOR_MODEL} FIRMWARE_P2_SECTOR_START)
FIRMWARE_P2_SECTOR_END = $(shell layout_parser ${TREZOR_MODEL} FIRMWARE_P2_SECTOR_END)
STORAGE_1_SECTOR_START = $(shell layout_parser ${TREZOR_MODEL} STORAGE_1_SECTOR_START)
STORAGE_1_SECTOR_END = $(shell layout_parser ${TREZOR_MODEL} STORAGE_1_SECTOR_END)
STORAGE_2_SECTOR_START = $(shell layout_parser ${TREZOR_MODEL} STORAGE_2_SECTOR_START)
STORAGE_2_SECTOR_END = $(shell layout_parser ${TREZOR_MODEL} STORAGE_2_SECTOR_END)


STORAGE_1_OFFSET := $(shell expr $(STORAGE_1_START) - $(FLASH_START))
STORAGE_2_OFFSET := $(shell expr $(STORAGE_2_START) - $(FLASH_START))

OPENOCD = openocd -f interface/$(OPENOCD_INTERFACE).cfg -c "transport select $(OPENOCD_TRANSPORT)" -f $(OPENOCD_TARGET)

CFLAGS += -DSCM_REVISION='\"$(shell git rev-parse HEAD | sed 's:\(..\):\\x\1:g')\"'
Expand Down Expand Up @@ -374,7 +380,7 @@ flash_erase_bootloader: ## erase bootloader

flash_erase_firmware: ## erase bootloader
ifeq ($(MCU),$(filter $(MCU),STM32F4))
$(OPENOCD) -c "init; reset halt; flash info 0; flash erase_sector 0 $(FIRMWARE_SECTOR_START) $(FIRMWARE_SECTOR_END); flash erase_sector 0 $(FIRMWARE_P2_SECTOR_START) $(FIRMWARE_P2_SECTOR_END); exit"
$(OPENOCD) -c "init; reset halt; flash info 0; flash erase_sector 0 $(FIRMWARE_P1_SECTOR_START) $(FIRMWARE_P1_SECTOR_END); flash erase_sector 0 $(FIRMWARE_P2_SECTOR_START) $(FIRMWARE_P2_SECTOR_END); exit"

else
$(OPENOCD) -c "init; reset halt; flash info 0; flash erase_sector 0 $(FIRMWARE_SECTOR_START) $(FIRMWARE_SECTOR_END); exit"
Expand Down
12 changes: 0 additions & 12 deletions core/SConscript.boardloader
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,6 @@ HW_REVISION = ARGUMENTS.get('HW_REVISION', None)
NEW_RENDERING = ARGUMENTS.get('NEW_RENDERING', '1') == '1'
MODEL_IDENTIFIER = models.get_model_identifier(TREZOR_MODEL)

if TREZOR_MODEL in ('1', ):
# skip boardloader build
env = Environment()
def build_boardloader(target,source,env):
print(f'Boardloader: nothing to build for Model {TREZOR_MODEL}')
program_bin = env.Command(
target='boardloader.bin',
source=None,
action=build_boardloader
)
Return()

FEATURES_WANTED = ["sd_card"]

if NEW_RENDERING:
Expand Down
16 changes: 1 addition & 15 deletions core/SConscript.bootloader
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,6 @@ HW_REVISION = ARGUMENTS.get('HW_REVISION', None)
NEW_RENDERING = ARGUMENTS.get('NEW_RENDERING', '1') == '1' or TREZOR_MODEL in ('T3T1',)
MODEL_IDENTIFIER = models.get_model_identifier(TREZOR_MODEL)

if TREZOR_MODEL in ('1', ):
# skip bootloader build
env = Environment()
def build_bootloader(target,source,env):
print(f'Bootloader: nothing to build for Model {TREZOR_MODEL}')
program_bin = env.Command(
target='bootloader.bin',
source=None,
action=build_bootloader
)
Return()

FEATURES_WANTED = ["input", "rgb_led", "consumption_mask", "usb", "optiga", "dma2d"]

if NEW_RENDERING:
Expand Down Expand Up @@ -258,9 +246,7 @@ def cargo_build():
profile = '--release'
else:
profile = ''
if TREZOR_MODEL in ("1",):
features = ["model_t1"]
elif TREZOR_MODEL in ("R", "T3B1"):
if TREZOR_MODEL in ("R", "T3B1"):
features = ["model_tr"]
elif TREZOR_MODEL in ("T3T1",):
features = ["model_mercury"]
Expand Down
16 changes: 2 additions & 14 deletions core/SConscript.bootloader_ci
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,6 @@ HW_REVISION = ARGUMENTS.get('HW_REVISION', None)
NEW_RENDERING = ARGUMENTS.get('NEW_RENDERING', '1') == '1' or TREZOR_MODEL in ('T3T1',)
MODEL_IDENTIFIER = models.get_model_identifier(TREZOR_MODEL)

if TREZOR_MODEL in ('1', 'DISC1', 'DISC2'):
# skip bootloader_ci build
env = Environment()
def build_bootloader_ci(target,source,env):
print(f'Bootloader_ci: nothing to build for Model {TREZOR_MODEL}')
program_bin = env.Command(
target='bootloader.bin',
source=None,
action=build_bootloader_ci
)
Return()

FEATURES_WANTED = ["input", "rgb_led", "consumption_mask", "usb", "optiga"]

if NEW_RENDERING:
Expand All @@ -35,7 +23,7 @@ CPPDEFINES_HAL = []
SOURCE_HAL = []
PATH_HAL = []

if TREZOR_MODEL in ('1', 'R', 'T3B1'):
if TREZOR_MODEL in ('R', 'T3B1'):
FONT_NORMAL='Font_PixelOperator_Regular_8'
FONT_DEMIBOLD=None
FONT_BOLD=None
Expand All @@ -44,7 +32,7 @@ if TREZOR_MODEL in ('1', 'R', 'T3B1'):
FONT_NORMAL_UPPER='Font_PixelOperator_Regular_8_upper'
FONT_BOLD_UPPER=None
FONT_SUB=None
elif TREZOR_MODEL in ('T',):
elif TREZOR_MODEL in ('T', 'DISC1', 'DISC2'):
FONT_NORMAL='Font_Roboto_Regular_20'
FONT_DEMIBOLD=None
FONT_BOLD=None
Expand Down
8 changes: 3 additions & 5 deletions core/SConscript.bootloader_emu
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ CMAKELISTS = int(ARGUMENTS.get('CMAKELISTS', 0))
HW_REVISION = 'emulator'
NEW_RENDERING = ARGUMENTS.get('NEW_RENDERING', '1') == '1' or TREZOR_MODEL in ('T3T1',)

if TREZOR_MODEL in ('1', 'DISC1', 'DISC2'):
if not models.has_emulator(TREZOR_MODEL):
# skip bootloader build
env = Environment()
def build_bootloader(target,source,env):
Expand All @@ -33,7 +33,7 @@ CPPDEFINES_MOD = []
SOURCE_MOD = []
SOURCE_MOD_CRYPTO = []

if TREZOR_MODEL in ('1', 'R', 'T3B1'):
if TREZOR_MODEL in ('R', 'T3B1'):
FONT_NORMAL='Font_PixelOperator_Regular_8'
FONT_DEMIBOLD='Font_PixelOperator_Regular_8'
FONT_BOLD='Font_PixelOperator_Bold_8'
Expand Down Expand Up @@ -276,9 +276,7 @@ else:
RUST_LIBPATH = f'{RUST_LIBDIR}/lib{RUST_LIB}.a'

def cargo_build():
if TREZOR_MODEL in ("1",):
features = ["model_t1"]
elif TREZOR_MODEL in ("R", "T3B1"):
if TREZOR_MODEL in ("R", "T3B1"):
features = ["model_tr"]
elif TREZOR_MODEL in ("T3T1",):
features = ["model_mercury"]
Expand Down
26 changes: 10 additions & 16 deletions core/SConscript.firmware
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ PATH_HAL = []

FROZEN = True

if TREZOR_MODEL in ('1', 'R', 'T3B1'):
if TREZOR_MODEL in ('R', 'T3B1'):
FONT_NORMAL='Font_PixelOperator_Regular_8'
FONT_DEMIBOLD='Font_Unifont_Bold_16'
FONT_BOLD='Font_PixelOperator_Bold_8'
Expand Down Expand Up @@ -254,11 +254,7 @@ else:
CPPDEFINES_MOD += [
'TREZOR_UI2',
'TRANSLATIONS',
]

if TREZOR_MODEL not in ('1', ):
CPPDEFINES_MOD += [
'FANCY_FATAL_ERROR',
'FANCY_FATAL_ERROR',
]

# modtrezorutils
Expand Down Expand Up @@ -442,7 +438,7 @@ SOURCE_FIRMWARE = [
if TREZOR_MODEL in ('T', 'DISC1', 'DISC2'):
UI_LAYOUT = 'UI_LAYOUT_TT'
ui_layout_feature = 'model_tt'
elif TREZOR_MODEL in ('1', 'R', 'T3B1'):
elif TREZOR_MODEL in ('R', 'T3B1'):
UI_LAYOUT = 'UI_LAYOUT_TR'
ui_layout_feature = 'model_tr'
elif TREZOR_MODEL in ('T3T1',):
Expand Down Expand Up @@ -869,15 +865,13 @@ else:

VENDORHEADER = f'embed/models/{MODEL_IDENTIFIER}/vendorheader/vendorheader_{vendor}.bin'


obj_program.extend(
env.Command(
target='embed/firmware/vendorheader.o',
source=VENDORHEADER,
action='$OBJCOPY -I binary -O elf32-littlearm -B arm'
' --rename-section .data=.vendorheader,alloc,load,readonly,contents'
' $SOURCE $TARGET', ))

tools.embed_raw_binary(
obj_program,
env,
'vendorheader',
'embed/firmware/vendorheader.o',
VENDORHEADER,
)

tools.embed_raw_binary(
obj_program,
Expand Down
17 changes: 8 additions & 9 deletions core/SConscript.kernel
Original file line number Diff line number Diff line change
Expand Up @@ -386,15 +386,14 @@ obj_program.extend(
' --rename-section .data=.vendorheader,alloc,load,readonly,contents'
' $SOURCE $TARGET', ))

if TREZOR_MODEL not in ('DISC1', 'DISC2'):
tools.embed_compressed_binary(
obj_program,
env,
'bootloader',
'embed/bootloaders/bootloader.o',
f'embed/models/{MODEL_IDENTIFIER}/bootloaders/bootloader_{BOOTLOADER_SUFFIX}.bin',
'kernel'
)
tools.embed_compressed_binary(
obj_program,
env,
'bootloader',
'embed/bootloaders/bootloader.o',
f'embed/models/{MODEL_IDENTIFIER}/bootloaders/bootloader_{BOOTLOADER_SUFFIX}.bin',
'kernel'
)

linkerscript_gen = env.Command(
target='memory.ld',
Expand Down
30 changes: 9 additions & 21 deletions core/SConscript.prodtest
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,6 @@ BOOTLOADER_DEVEL = ARGUMENTS.get('BOOTLOADER_DEVEL', '0') == '1'
HW_REVISION = ARGUMENTS.get('HW_REVISION', None)
NEW_RENDERING = ARGUMENTS.get('NEW_RENDERING', '1') == '1'

if TREZOR_MODEL in ('DISC1', 'DISC2'):
# skip prodtest build
env = Environment()
def build_prodtest(target,source,env):
print(f'Prodtest: nothing to build for Model {TREZOR_MODEL}')
program_bin = env.Command(
target='prodtest.bin',
source=None,
action=build_prodtest)
Return()

FEATURES_WANTED = ["input", "sbu", "sd_card", "rdb_led", "usb", "consumption_mask", "optiga", "haptic"]

if NEW_RENDERING:
Expand All @@ -39,7 +28,7 @@ CPPDEFINES_HAL = []
SOURCE_HAL = []
PATH_HAL = []

if TREZOR_MODEL in ('1', 'R', 'T3B1'):
if TREZOR_MODEL in ('R', 'T3B1'):
FONT_NORMAL=None
FONT_DEMIBOLD=None
FONT_BOLD='Font_PixelOperator_Bold_8'
Expand All @@ -48,7 +37,7 @@ if TREZOR_MODEL in ('1', 'R', 'T3B1'):
FONT_NORMAL_UPPER=None
FONT_BOLD_UPPER=None
FONT_SUB=None
elif TREZOR_MODEL in ('T',):
elif TREZOR_MODEL in ('T', 'DISC1', 'DISC2'):
FONT_NORMAL=None
FONT_DEMIBOLD=None
FONT_BOLD='Font_Roboto_Bold_20'
Expand Down Expand Up @@ -257,14 +246,13 @@ else:
VENDORHEADER = f'embed/models/{MODEL_IDENTIFIER}/vendorheader/vendorheader_unsafe_signed_prod.bin'



obj_program.extend(
env.Command(
target='embed/prodtest/vendorheader.o',
source=VENDORHEADER,
action='$OBJCOPY -I binary -O elf32-littlearm -B arm'
' --rename-section .data=.vendorheader,alloc,load,readonly,contents'
' $SOURCE $TARGET', ))
tools.embed_raw_binary(
obj_program,
env,
'vendorheader',
'embed/firmware/vendorheader.o',
VENDORHEADER,
)

linkerscript_gen = env.Command(
target='memory.ld',
Expand Down
16 changes: 8 additions & 8 deletions core/SConscript.reflash
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ CPPDEFINES_HAL = []
SOURCE_HAL = []
PATH_HAL = []

if TREZOR_MODEL in ('1', 'R', 'T3B1'):
if TREZOR_MODEL in ('R', 'T3B1'):
FONT_NORMAL=None
FONT_DEMIBOLD=None
FONT_BOLD='Font_PixelOperator_Bold_8'
Expand Down Expand Up @@ -206,13 +206,13 @@ MODEL_IDENTIFIER = models.get_model_identifier(TREZOR_MODEL)

VENDORHEADER = f'embed/models/{MODEL_IDENTIFIER}/vendorheader/vendorheader_' + ('unsafe_signed_dev.bin' if ARGUMENTS.get('PRODUCTION', '0') == '0' else 'satoshilabs_signed_prod.bin')

obj_program.extend(
env.Command(
target='embed/reflash/vendorheader.o',
source=VENDORHEADER,
action='$OBJCOPY -I binary -O elf32-littlearm -B arm'
' --rename-section .data=.vendorheader,alloc,load,readonly,contents'
' $SOURCE $TARGET', ))
tools.embed_raw_binary(
obj_program,
env,
'vendorheader',
'embed/firmware/vendorheader.o',
VENDORHEADER,
)

linkerscript_gen = env.Command(
target='memory.ld',
Expand Down
11 changes: 4 additions & 7 deletions core/SConscript.unix
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ FEATURES_WANTED = ["input", "sd_card", "dma2d", "optiga", "sbu"]
if NEW_RENDERING:
FEATURES_WANTED.append("new_rendering")

if TREZOR_MODEL in ('DISC1', 'DISC2'):
if not models.has_emulator(TREZOR_MODEL):
# skip unix build
env = Environment()
def build_unix(target,source,env):
Expand Down Expand Up @@ -47,7 +47,7 @@ PYOPT = ARGUMENTS.get('PYOPT', '1')
FROZEN = ARGUMENTS.get('TREZOR_EMULATOR_FROZEN', 0)
RASPI = os.getenv('TREZOR_EMULATOR_RASPI') == '1'

if TREZOR_MODEL in ('1', 'R', 'T3B1'):
if TREZOR_MODEL in ('R', 'T3B1'):
FONT_NORMAL='Font_PixelOperator_Regular_8'
FONT_DEMIBOLD='Font_Unifont_Bold_16'
FONT_BOLD='Font_PixelOperator_Bold_8'
Expand Down Expand Up @@ -264,10 +264,7 @@ else:
CPPDEFINES_MOD += [
'TREZOR_UI2',
'TRANSLATIONS',
]
if TREZOR_MODEL not in ('1', ):
CPPDEFINES_MOD += [
'FANCY_FATAL_ERROR',
'FANCY_FATAL_ERROR',
]

if FROZEN:
Expand Down Expand Up @@ -485,7 +482,7 @@ FEATURES_AVAILABLE = models.configure_board(TREZOR_MODEL, HW_REVISION, FEATURES_
if TREZOR_MODEL in ('T',):
UI_LAYOUT = 'UI_LAYOUT_TT'
ui_layout_feature = 'model_tt'
elif TREZOR_MODEL in ('1', 'R', 'T3B1'):
elif TREZOR_MODEL in ('R', 'T3B1'):
UI_LAYOUT = 'UI_LAYOUT_TR'
ui_layout_feature = 'model_tr'
elif TREZOR_MODEL in ('T3T1',):
Expand Down
Loading
Loading