pull/3716/merge
TychoVrahe 3 weeks ago committed by GitHub
commit 610124f46c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -42,34 +42,34 @@ OPENOCD_INTERFACE ?= stlink
# OpenOCD transport default. Alternative: jtag
OPENOCD_TRANSPORT ?= hla_swd
BINDGEN_MACROS_COMMON=-I../unix,-I../trezorhal/unix,-I../../build/unix,-I../../vendor/micropython/ports/unix,-I../../../crypto,-I../../../storage,-I../../vendor/micropython,-I../../vendor/micropython/lib/uzlib,-I../lib,-I../trezorhal,-I../trezorhal/unix,-I../models,-DTREZOR_EMULATOR,-DTREZOR_BOARD="boards/board-unix.h",
BINDGEN_MACROS_COMMON=-I../unix;-I../trezorhal/unix;-I../../build/unix;-I../../vendor/micropython/ports/unix;-I../../../crypto;-I../../../storage;-I../../vendor/micropython;-I../../vendor/micropython/lib/uzlib;-I../lib;-I../trezorhal;-I../trezorhal/unix;-I../models;-DTREZOR_EMULATOR;
ifeq ($(TREZOR_MODEL), 1)
MCU = STM32F2
LAYOUT_FILE = embed/models/model_T1B1.h
LAYOUT_FILE = embed/models/T1B1/model_T1B1.h
OPENOCD_TARGET = target/stm32f2x.cfg
else ifeq ($(TREZOR_MODEL),$(filter $(TREZOR_MODEL),T))
MCU = STM32F4
LAYOUT_FILE = embed/models/model_T2T1.h
LAYOUT_FILE = embed/models/T2T1/model_T2T1.h
OPENOCD_TARGET = target/stm32f4x.cfg
BINDGEN_MACROS_MODEL = -DSTM32F427,-DTREZOR_MODEL_T,-DFLASH_BIT_ACCESS=1,-DFLASH_BLOCK_WORDS=1,
BINDGEN_MACROS_MODEL = -DSTM32F427;-DTREZOR_MODEL_T;-DFLASH_BIT_ACCESS=1;-DFLASH_BLOCK_WORDS=1;-DTREZOR_BOARD="T2T1/boards/t2t1-unix.h";
MODEL_FEATURE = model_tt
else ifeq ($(TREZOR_MODEL),$(filter $(TREZOR_MODEL),R))
MCU = STM32F4
LAYOUT_FILE = embed/models/model_T2B1.h
LAYOUT_FILE = embed/models/T2B1/model_T2B1.h
OPENOCD_TARGET = target/stm32f4x.cfg
BINDGEN_MACROS_MODEL =-DSTM32F427,-DTREZOR_MODEL_R,-DFLASH_BIT_ACCESS=1,-DFLASH_BLOCK_WORDS=1,
BINDGEN_MACROS_MODEL =-DSTM32F427;-DTREZOR_MODEL_R;-DFLASH_BIT_ACCESS=1;-DFLASH_BLOCK_WORDS=1;-DTREZOR_BOARD="T2B1/boards/t2b1-unix.h";
MODEL_FEATURE = model_tr
else ifeq ($(TREZOR_MODEL),$(filter $(TREZOR_MODEL),T3T1))
MCU = STM32U5
OPENOCD_TARGET = target/stm32u5x.cfg
LAYOUT_FILE = embed/models/model_T3T1.h
LAYOUT_FILE = embed/models/T3T1/model_T3T1.h
else ifeq ($(TREZOR_MODEL),$(filter $(TREZOR_MODEL),DISC1))
MCU = STM32F4
LAYOUT_FILE = embed/models/model_D001.h
LAYOUT_FILE = embed/models/D001/model_D001.h
else ifeq ($(TREZOR_MODEL),$(filter $(TREZOR_MODEL),DISC2))
MCU = STM32U5
LAYOUT_FILE = embed/models/model_D002.h
LAYOUT_FILE = embed/models/D002/model_D002.h
OPENOCD_TARGET = target/stm32u5x.cfg
else
$(error Unknown TREZOR_MODEL: $(TREZOR_MODEL))

@ -1,10 +1,11 @@
# pylint: disable=E0602
import os
import tools
import tools, models
TREZOR_MODEL = ARGUMENTS.get('TREZOR_MODEL', 'T')
CMAKELISTS = int(ARGUMENTS.get('CMAKELISTS', 0))
HW_REVISION = ARGUMENTS.get('HW_REVISION', None)
if TREZOR_MODEL in ('1', ):
# skip boardloader build
@ -74,7 +75,7 @@ env = Environment(ENV=os.environ,
CPPDEFINES_IMPLICIT=[]
)
FEATURES_AVAILABLE = tools.configure_board(TREZOR_MODEL, FEATURES_WANTED, env, CPPDEFINES_HAL, SOURCE_HAL, PATH_HAL)
FEATURES_AVAILABLE = models.configure_board(TREZOR_MODEL, HW_REVISION, FEATURES_WANTED, env, CPPDEFINES_HAL, SOURCE_HAL, PATH_HAL)
FILE_SUFFIX= env.get('ENV')['SUFFIX']
LINKER_SCRIPT_SUFFIX= env.get('ENV')['LINKER_SCRIPT']
@ -155,7 +156,7 @@ program_elf = env.Command(
'$LINK -o $TARGET $CCFLAGS $CFLAGS $LINKFLAGS $SOURCES -lc_nano -lgcc',
)
BINARY_NAME = f"build/boardloader/boardloader-{tools.get_model_identifier(TREZOR_MODEL)}"
BINARY_NAME = f"build/boardloader/boardloader-{models.get_model_identifier(TREZOR_MODEL)}"
BINARY_NAME += "-" + tools.get_version('embed/boardloader/version.h')
BINARY_NAME += "-" + tools.get_git_revision_short_hash()
BINARY_NAME += "-dirty" if tools.get_git_modified() else ""

@ -1,12 +1,13 @@
# pylint: disable=E0602
import os
import tools
import tools, models
TREZOR_MODEL = ARGUMENTS.get('TREZOR_MODEL', 'T')
CMAKELISTS = int(ARGUMENTS.get('CMAKELISTS', 0))
BOOTLOADER_QA = ARGUMENTS.get('BOOTLOADER_QA', '0') == '1'
PRODUCTION = 0 if BOOTLOADER_QA else ARGUMENTS.get('PRODUCTION', '0') == '1'
HW_REVISION = ARGUMENTS.get('HW_REVISION', None)
if TREZOR_MODEL in ('1', ):
# skip bootloader build
@ -121,7 +122,7 @@ env = Environment(
CPPDEFINES_IMPLICIT=[]
)
FEATURES_AVAILABLE = tools.configure_board(TREZOR_MODEL, FEATURES_WANTED, env, CPPDEFINES_HAL, SOURCE_HAL, PATH_HAL)
FEATURES_AVAILABLE = models.configure_board(TREZOR_MODEL, HW_REVISION, FEATURES_WANTED, env, CPPDEFINES_HAL, SOURCE_HAL, PATH_HAL)
FILE_SUFFIX= env.get('ENV')['SUFFIX']
LINKER_SCRIPT_SUFFIX= env.get('ENV')['LINKER_SCRIPT']
@ -273,7 +274,7 @@ env.Depends(program_elf, rust)
SUFFIX = '_qa' if BOOTLOADER_QA else ''
BINARY_NAME = f"build/bootloader/bootloader-{tools.get_model_identifier(TREZOR_MODEL)}{SUFFIX}"
BINARY_NAME = f"build/bootloader/bootloader-{models.get_model_identifier(TREZOR_MODEL)}{SUFFIX}"
BINARY_NAME += "-" + tools.get_version('embed/bootloader/version.h')
BINARY_NAME += "-" + tools.get_git_revision_short_hash()
BINARY_NAME += "-dirty" if tools.get_git_modified() else ""

@ -1,10 +1,11 @@
# pylint: disable=E0602
import os
import tools
import tools, models
TREZOR_MODEL = ARGUMENTS.get('TREZOR_MODEL', 'T')
CMAKELISTS = int(ARGUMENTS.get('CMAKELISTS', 0))
HW_REVISION = ARGUMENTS.get('HW_REVISION', None)
if TREZOR_MODEL in ('1', 'DISC1', 'DISC2'):
# skip bootloader_ci build
@ -112,7 +113,7 @@ env = Environment(
CPPDEFINES_IMPLICIT=[]
)
FEATURES_AVAILABLE = tools.configure_board(TREZOR_MODEL, FEATURES_WANTED, env, CPPDEFINES_HAL, SOURCE_HAL, PATH_HAL)
FEATURES_AVAILABLE = models.configure_board(TREZOR_MODEL, HW_REVISION, FEATURES_WANTED, env, CPPDEFINES_HAL, SOURCE_HAL, PATH_HAL)
FILE_SUFFIX= env.get('ENV')['SUFFIX']
LINKER_SCRIPT_SUFFIX= env.get('ENV')['LINKER_SCRIPT']
@ -207,7 +208,7 @@ program_elf = env.Command(
'$LINK -o $TARGET $CCFLAGS $CFLAGS $LINKFLAGS $SOURCES -lc_nano -lgcc',
)
BINARY_NAME = f"build/bootloader_ci/bootloader_ci-{tools.get_model_identifier(TREZOR_MODEL)}"
BINARY_NAME = f"build/bootloader_ci/bootloader_ci-{models.get_model_identifier(TREZOR_MODEL)}"
BINARY_NAME += "-" + tools.get_version('embed/bootloader_ci/version.h')
BINARY_NAME += "-" + tools.get_git_revision_short_hash()
BINARY_NAME += "-dirty" if tools.get_git_modified() else ""

@ -1,12 +1,11 @@
# pylint: disable=E0602
import os
import tools
import boards
import tools, models
TREZOR_MODEL = ARGUMENTS.get('TREZOR_MODEL', 'T')
CMAKELISTS = int(ARGUMENTS.get('CMAKELISTS', 0))
DMA2D = False
HW_REVISION = 'emulator'
if TREZOR_MODEL in ('1', 'DISC1'):
# skip bootloader build
@ -20,10 +19,12 @@ if TREZOR_MODEL in ('1', 'DISC1'):
)
Return()
FEATURES_WANTED = ["input", "rgb_led", "dma2d"]
FEATURES_WANTED = ["input", "rgb_led", "dma2d", "optiga_hal"]
CCFLAGS_MOD = ''
CPPPATH_MOD = []
CPPDEFINES_HAL = []
PATH_HAL = []
CPPDEFINES_MOD = []
SOURCE_MOD = []
@ -88,7 +89,6 @@ SOURCE_MOD += [
'embed/lib/colors.c',
'embed/lib/display_utils.c',
'embed/lib/display.c',
'embed/lib/dma2d_emul.c',
'embed/lib/fonts/font_bitmap.c',
'embed/lib/fonts/fonts.c',
'embed/lib/image.c',
@ -101,24 +101,6 @@ SOURCE_MOD += [
'vendor/trezor-storage/flash_area.c',
]
if TREZOR_MODEL in ('1', ):
SOURCE_MOD += [
'embed/models/model_T1B1_layout.c',
]
elif TREZOR_MODEL in ('T', ):
SOURCE_MOD += [
'embed/models/model_T2T1_layout.c',
]
elif TREZOR_MODEL in ('R', ):
SOURCE_MOD += [
'embed/models/model_T2B1_layout.c',
]
elif TREZOR_MODEL in ('T3T1',):
SOURCE_MOD += [
'embed/models/model_T3T1_layout.c',
]
SOURCE_NANOPB = [
'vendor/nanopb/pb_common.c',
'vendor/nanopb/pb_decode.c',
@ -147,11 +129,6 @@ SOURCE_TREZORHAL = [
'embed/trezorhal/unix/secret.c',
]
if TREZOR_MODEL in ('R', 'T3T1'):
SOURCE_TREZORHAL += [
'embed/trezorhal/unix/optiga_hal.c',
]
SOURCE_UNIX = [
'embed/unix/profile.c',
]
@ -167,6 +144,8 @@ tools.add_font('BIG', FONT_BIG, CPPDEFINES_MOD, SOURCE_MOD)
env = Environment(ENV=os.environ, CFLAGS='%s -DCONFIDENTIAL= -DPRODUCTION=%s' % (ARGUMENTS.get('CFLAGS', ''), ARGUMENTS.get('PRODUCTION', '0')))
FEATURES_AVAILABLE = models.configure_board(TREZOR_MODEL, HW_REVISION, FEATURES_WANTED, env, CPPDEFINES_HAL, SOURCE_UNIX, PATH_HAL)
env.Replace(
CP='cp',
AS='as',
@ -179,24 +158,8 @@ env.Replace(
PYTHON='python',
MAKECMAKELISTS='$PYTHON tools/make_cmakelists.py', )
env.Replace(
TREZOR_MODEL=TREZOR_MODEL, )
if TREZOR_MODEL in ('T', 'R'):
CPU_MODEL = 'STM32F427xx'
elif TREZOR_MODEL in ('T3T1', ):
CPU_MODEL = 'STM32U585xx'
elif TREZOR_MODEL in ('DISC1', ):
CPU_MODEL = 'STM32F429xx'
elif TREZOR_MODEL in ('DISC2', ):
CPU_MODEL = 'STM32U5A9xx'
elif TREZOR_MODEL in ('1',):
CPU_MODEL = 'STM32F405xx'
else:
raise ValueError('Unknown Trezor model')
MODEL_IDENTIFIER = tools.get_model_identifier(TREZOR_MODEL)
MODEL_AS_NUMBER = str(boards.get_hw_model_as_number(MODEL_IDENTIFIER))
MODEL_IDENTIFIER = models.get_model_identifier(TREZOR_MODEL)
MODEL_AS_NUMBER = str(models.get_hw_model_as_number(MODEL_IDENTIFIER))
ALLPATHS = ['embed/rust',
'embed/bootloader',
@ -209,7 +172,7 @@ ALLPATHS = ['embed/rust',
'embed/unix',
'embed/extmod/modtrezorui',
'vendor/nanopb',
] + CPPPATH_MOD,
] + CPPPATH_MOD + PATH_HAL,
env.Replace(
COPT=env.get('ENV').get('OPTIMIZE', '-Os'),
@ -225,18 +188,11 @@ env.Replace(
CPPDEFINES=[
'BOOTLOADER',
'TREZOR_EMULATOR',
CPU_MODEL,
'HW_MODEL=' + MODEL_AS_NUMBER,
'HW_REVISION=' + ('10' if TREZOR_MODEL in ('R',) else '0'),
'TREZOR_MODEL_'+TREZOR_MODEL,
'TREZOR_BOARD=\\"boards/board-unix.h\\"',
('FLASH_BIT_ACCESS', '1'),
('FLASH_BLOCK_WORDS', '1'),
'MCU_TYPE='+CPU_MODEL,
'PB_FIELD_16BIT',
'PB_ENCODE_ARRAYS_UNPACKED',
'PB_VALIDATE_UTF8',
] + CPPDEFINES_MOD,
] + CPPDEFINES_MOD + CPPDEFINES_HAL,
ASPPFLAGS='$CFLAGS $CCFLAGS', )
try:
@ -281,15 +237,9 @@ def cargo_build():
else:
features = ["model_tt"]
if TREZOR_MODEL in ('T', 'T3T1'):
features.append('touch')
features.append('backlight')
features.append('dma2d')
if TREZOR_MODEL in ('R', '1'):
features.append('button')
features.append("ui")
features.append("bootloader")
features.extend(FEATURES_AVAILABLE)
env.get("ENV")["BINDGEN_MACROS"] = tools.get_bindgen_defines(env.get("ALLDEFS"), ALLPATHS)

@ -2,7 +2,7 @@
# fmt: off
import os
import tools
import tools, models
BITCOIN_ONLY = ARGUMENTS.get('BITCOIN_ONLY', '0')
PRODUCTION = ARGUMENTS.get('PRODUCTION', '0') == '1'
@ -13,6 +13,7 @@ TREZOR_MODEL = ARGUMENTS.get('TREZOR_MODEL', 'T')
CMAKELISTS = int(ARGUMENTS.get('CMAKELISTS', 0))
PYOPT = ARGUMENTS.get('PYOPT', '1')
DISABLE_OPTIGA = ARGUMENTS.get('DISABLE_OPTIGA', '0') == '1'
HW_REVISION = ARGUMENTS.get('HW_REVISION', None)
FEATURE_FLAGS = {
@ -400,7 +401,7 @@ env = Environment(
CPPDEFINES_IMPLICIT=[]
)
FEATURES_AVAILABLE = tools.configure_board(TREZOR_MODEL, FEATURES_WANTED, env, CPPDEFINES_HAL, SOURCE_HAL, PATH_HAL)
FEATURES_AVAILABLE = models.configure_board(TREZOR_MODEL, HW_REVISION, FEATURES_WANTED, env, CPPDEFINES_HAL, SOURCE_HAL, PATH_HAL)
FILE_SUFFIX= env.get('ENV')['SUFFIX']
@ -806,7 +807,7 @@ env.Append(LINKFLAGS=f' -L{RUST_LIBDIR}')
env.Append(LINKFLAGS=f' -l{RUST_LIB}')
MODEL_IDENTIFIER = tools.get_model_identifier(TREZOR_MODEL)
MODEL_IDENTIFIER = models.get_model_identifier(TREZOR_MODEL)
BOOTLOADER_SUFFIX = MODEL_IDENTIFIER
if BOOTLOADER_QA:
BOOTLOADER_SUFFIX += '_qa'
@ -859,7 +860,7 @@ if CMAKELISTS != 0:
env.Depends(program_elf, cmake_gen)
env.Depends(program_elf, rust)
BINARY_NAME = f"build/firmware/firmware-{tools.get_model_identifier(TREZOR_MODEL)}"
BINARY_NAME = f"build/firmware/firmware-{models.get_model_identifier(TREZOR_MODEL)}"
if not EVERYTHING:
BINARY_NAME += "-btconly"
BINARY_NAME += "-" + tools.get_version('embed/firmware/version.h')

@ -1,12 +1,13 @@
# pylint: disable=E0602
import os
import tools
import tools, models
TREZOR_MODEL = ARGUMENTS.get('TREZOR_MODEL', 'T')
CMAKELISTS = int(ARGUMENTS.get('CMAKELISTS', 0))
PRODUCTION = ARGUMENTS.get('PRODUCTION', '0') == '1'
BOOTLOADER_DEVEL = ARGUMENTS.get('BOOTLOADER_DEVEL', '0') == '1'
HW_REVISION = ARGUMENTS.get('HW_REVISION', None)
if TREZOR_MODEL in ('DISC1', 'DISC2'):
# skip prodtest build
@ -106,7 +107,7 @@ env = Environment(
CFLAGS='%s -DPRODUCTION=%s' % (ARGUMENTS.get('CFLAGS', ''), ARGUMENTS.get('PRODUCTION', '0')),
CPPDEFINES_IMPLICIT=[])
FEATURES_AVAILABLE = tools.configure_board(TREZOR_MODEL, FEATURES_WANTED, env, CPPDEFINES_HAL, SOURCE_HAL, PATH_HAL)
FEATURES_AVAILABLE = models.configure_board(TREZOR_MODEL, HW_REVISION, FEATURES_WANTED, env, CPPDEFINES_HAL, SOURCE_HAL, PATH_HAL)
FILE_SUFFIX= env.get('ENV')['SUFFIX']
LINKER_SCRIPT_SUFFIX= env.get('ENV')['LINKER_SCRIPT']
@ -193,7 +194,7 @@ obj_program.extend(env.Object(source=SOURCE_MOD))
obj_program.extend(env.Object(source=SOURCE_PRODTEST))
obj_program.extend(env.Object(source=SOURCE_HAL))
MODEL_IDENTIFIER = tools.get_model_identifier(TREZOR_MODEL)
MODEL_IDENTIFIER = models.get_model_identifier(TREZOR_MODEL)
if (vh := ARGUMENTS.get("VENDOR_HEADER", None)):
@ -228,7 +229,7 @@ program_elf = env.Command(
'$LINK -o $TARGET $CCFLAGS $CFLAGS $LINKFLAGS $SOURCES -lc_nano -lgcc',
)
BINARY_NAME = f"build/prodtest/prodtest-{tools.get_model_identifier(TREZOR_MODEL)}"
BINARY_NAME = f"build/prodtest/prodtest-{models.get_model_identifier(TREZOR_MODEL)}"
BINARY_NAME += "-" + tools.get_version('embed/prodtest/version.h')
BINARY_NAME += "-" + tools.get_git_revision_short_hash()
BINARY_NAME += "-dirty" if tools.get_git_modified() else ""

@ -1,10 +1,11 @@
# pylint: disable=E0602
import os
import tools
import tools, models
TREZOR_MODEL = ARGUMENTS.get('TREZOR_MODEL', 'T')
CMAKELISTS = int(ARGUMENTS.get('CMAKELISTS', 0))
HW_REVISION = ARGUMENTS.get('HW_REVISION', None)
if TREZOR_MODEL in ('DISC1', 'DISC2'):
# skip reflash build
@ -82,7 +83,7 @@ env = Environment(
CPPDEFINES_IMPLICIT=[]
)
FEATURES_AVAILABLE = tools.configure_board(TREZOR_MODEL, FEATURES_WANTED, env, CPPDEFINES_HAL, SOURCE_HAL, PATH_HAL)
FEATURES_AVAILABLE = models.configure_board(TREZOR_MODEL, HW_REVISION, FEATURES_WANTED, env, CPPDEFINES_HAL, SOURCE_HAL, PATH_HAL)
FILE_SUFFIX= env.get('ENV')['SUFFIX']
LINKER_SCRIPT_SUFFIX= env.get('ENV')['LINKER_SCRIPT']
@ -158,7 +159,7 @@ obj_program += env.Object(source=SOURCE_MOD)
obj_program += env.Object(source=SOURCE_REFLASH)
obj_program += env.Object(source=SOURCE_HAL)
MODEL_IDENTIFIER = tools.get_model_identifier(TREZOR_MODEL)
MODEL_IDENTIFIER = models.get_model_identifier(TREZOR_MODEL)
VENDORHEADER = f'embed/vendorheader/{MODEL_IDENTIFIER}/vendorheader_' + ('unsafe_signed_dev.bin' if ARGUMENTS.get('PRODUCTION', '0') == '0' else 'satoshilabs_signed_prod.bin')
@ -177,7 +178,7 @@ program_elf = env.Command(
'$LINK -o $TARGET $CCFLAGS $CFLAGS $LINKFLAGS $SOURCES -lc_nano -lgcc',
)
BINARY_NAME = f"build/reflash/reflash-{tools.get_model_identifier(TREZOR_MODEL)}"
BINARY_NAME = f"build/reflash/reflash-{models.get_model_identifier(TREZOR_MODEL)}"
BINARY_NAME += "-" + tools.get_version('embed/reflash/version.h')
BINARY_NAME += "-" + tools.get_git_revision_short_hash()
BINARY_NAME += "-dirty" if tools.get_git_modified() else ""

@ -2,14 +2,16 @@
# fmt: off
import os
import tools
import tools, models
BITCOIN_ONLY = ARGUMENTS.get('BITCOIN_ONLY', '0')
EVERYTHING = BITCOIN_ONLY != '1'
TREZOR_MODEL = ARGUMENTS.get('TREZOR_MODEL', 'T')
DMA2D = TREZOR_MODEL in ('T', 'T3T1')
OPTIGA = TREZOR_MODEL in ('R', 'T3T1')
CMAKELISTS = int(ARGUMENTS.get('CMAKELISTS', 0))
HW_REVISION ='emulator'
FEATURES_WANTED = ["input", "sd_card", "dma2d", "optiga", "sbu"]
if TREZOR_MODEL in ('DISC1', 'DISC2'):
# skip unix build
@ -29,6 +31,8 @@ FEATURE_FLAGS = {
CCFLAGS_MOD = ''
CPPPATH_MOD = []
CPPDEFINES_HAL = []
PATH_HAL = []
CPPDEFINES_MOD = []
SOURCE_MOD = [
'vendor/micropython/extmod/vfs_posix_file.c',
@ -190,11 +194,6 @@ if FEATURE_FLAGS["AES_GCM"]:
SOURCE_MOD += [
'embed/extmod/modtrezorio/modtrezorio.c',
]
if TREZOR_MODEL in ('T', 'T3T1'):
SOURCE_MOD += [
'embed/extmod/modtrezorio/ff.c',
'embed/extmod/modtrezorio/ffunicode.c',
]
# modtrezorui
CPPPATH_MOD += [
@ -217,25 +216,6 @@ SOURCE_MOD += [
'vendor/micropython/lib/uzlib/tinflate.c',
]
if TREZOR_MODEL in ('1', ):
SOURCE_MOD += [
'embed/models/model_T1B1_layout.c',
]
elif TREZOR_MODEL in ('T', ):
SOURCE_MOD += [
'embed/models/model_T2T1_layout.c',
]
elif TREZOR_MODEL in ('R', ):
SOURCE_MOD += [
'embed/models/model_T2B1_layout.c',
]
elif TREZOR_MODEL in ('T3T1', ):
SOURCE_MOD += [
'embed/models/model_T3T1_layout.c',
]
CPPDEFINES_MOD += [
'TREZOR_UI2',
'TRANSLATIONS',
@ -410,23 +390,6 @@ SOURCE_UNIX = [
'vendor/micropython/ports/unix/input.c',
'vendor/micropython/ports/unix/unix_mphal.c',
]
if TREZOR_MODEL in ('T', 'R', 'T3T1'):
SOURCE_UNIX += [
'embed/trezorhal/unix/sbu.c',
]
if OPTIGA:
SOURCE_UNIX += [
'embed/trezorhal/unix/optiga.c',
]
if DMA2D:
CPPDEFINES_MOD += [
'USE_DMA2D',
]
SOURCE_UNIX += [
'embed/lib/dma2d_emul.c',
]
TRANSLATION_DATA = [
@ -452,6 +415,7 @@ else:
env = Environment(ENV=os.environ, CFLAGS='%s -DCONFIDENTIAL= -DPYOPT=%s -DBITCOIN_ONLY=%s %s' % (ARGUMENTS.get('CFLAGS', ''), PYOPT, BITCOIN_ONLY, STATIC))
FEATURES_AVAILABLE = models.configure_board(TREZOR_MODEL, HW_REVISION, FEATURES_WANTED, env, CPPDEFINES_HAL, SOURCE_UNIX, PATH_HAL)
if TREZOR_MODEL in ('T', 'T3T1'):
UI_LAYOUT = 'UI_LAYOUT_TT'
@ -462,14 +426,17 @@ elif TREZOR_MODEL in ('1', 'R'):
else:
raise ValueError('Unknown Trezor model')
if TREZOR_MODEL in ('T', 'T3T1'):
if 'sd_card' in FEATURES_AVAILABLE:
SDCARD = True
SOURCE_UNIX += [
'embed/trezorhal/unix/sdcard.c',
]
else:
SDCARD = False
if 'optiga' in FEATURES_AVAILABLE:
OPTIGA = True
else:
OPTIGA = False
env.Tool('micropython')
@ -519,19 +486,6 @@ if ARGUMENTS.get('TREZOR_MEMPERF', '0') == '1':
env.Replace(
TREZOR_MODEL=TREZOR_MODEL, )
if TREZOR_MODEL in ('T', 'R'):
CPU_MODEL = 'STM32F427xx'
elif TREZOR_MODEL in ('T3T1', ):
CPU_MODEL = 'STM32U585xx'
elif TREZOR_MODEL in ('DISC1', ):
CPU_MODEL = 'STM32F429xx'
elif TREZOR_MODEL in ('DISC2', ):
CPU_MODEL = 'STM32U5A9xx'
elif TREZOR_MODEL in ('1',):
CPU_MODEL = 'STM32F405xx'
else:
raise ValueError('Unknown Trezor model')
ALLPATHS=['.',
'embed/rust',
'embed/lib',
@ -543,7 +497,7 @@ ALLPATHS=['.',
'vendor/micropython',
'vendor/micropython/ports/unix',
'vendor/micropython/lib/mp-readline',
] + CPPPATH_MOD
] + CPPPATH_MOD + PATH_HAL
env.Replace(
CCFLAGS='$COPT '
@ -554,16 +508,11 @@ env.Replace(
LIBS=['m'],
CPPPATH=ALLPATHS,
CPPDEFINES=[
CPU_MODEL,
'TREZOR_EMULATOR',
'TREZOR_MODEL_'+TREZOR_MODEL,
'TREZOR_BOARD=\\"boards/board-unix.h\\"',
('FLASH_BIT_ACCESS', '1'),
('FLASH_BLOCK_WORDS', '1'),
'MCU_TYPE='+CPU_MODEL,
('MP_CONFIGFILE', '\\"embed/unix/mpconfigport.h\\"'),
UI_LAYOUT,
] + CPPDEFINES_MOD,
] + CPPDEFINES_MOD + CPPDEFINES_HAL,
ASPPFLAGS='$CFLAGS $CCFLAGS', )
try:
@ -789,7 +738,7 @@ if FROZEN:
source=SOURCE_PY,
source_dir=SOURCE_PY_DIR,
bitcoin_only=BITCOIN_ONLY,
backlight=TREZOR_MODEL in ('T', 'T3T1'),
backlight='backlight' in FEATURES_AVAILABLE,
optiga=OPTIGA,
ui_layout=UI_LAYOUT,
)
@ -862,14 +811,8 @@ def cargo_build():
features.append('translations')
if PYOPT == '0':
features.append('debug')
if DMA2D:
features.append('dma2d')
if TREZOR_MODEL in ('T', 'T3T1'):
features.append('touch')
features.append('sd_card')
if TREZOR_MODEL in ('R', '1'):
features.append('button')
features.extend(FEATURES_AVAILABLE)
env.get("ENV")["BINDGEN_MACROS"] = tools.get_bindgen_defines(env.get("ALLDEFS"), ALLPATHS)

@ -0,0 +1 @@
../T2T1/model_T2T1_layout.c

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

@ -0,0 +1,24 @@
#ifndef BOARDS_T1B1_UNIX_H
#define BOARDS_T1B1_UNIX_H
#define USE_BUTTON 1
#define MAX_DISPLAY_RESX 128
#define MAX_DISPLAY_RESY 64
#define DISPLAY_RESX 128
#define DISPLAY_RESY 64
#define TREZOR_FONT_BPP 1
#define WINDOW_WIDTH 200
#define WINDOW_HEIGHT 340
#define TOUCH_OFFSET_X 36
#define TOUCH_OFFSET_Y 92
#define ORIENTATION_NS 1
#define BACKGROUND_FILE "T1B1/background_1.h"
#define BACKGROUND_NAME background_1_jpg
#include "display-unix.h"
#endif // BOARDS_T1B1_UNIX_H

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

@ -0,0 +1,26 @@
#ifndef BOARDS_T2B1_UNIX_H
#define BOARDS_T2B1_UNIX_H
#define USE_BUTTON 1
#define USE_SBU 1
#define USE_OPTIGA 1
#define MAX_DISPLAY_RESX 128
#define MAX_DISPLAY_RESY 64
#define DISPLAY_RESX 128
#define DISPLAY_RESY 64
#define TREZOR_FONT_BPP 1
#define WINDOW_WIDTH 193
#define WINDOW_HEIGHT 339
#define TOUCH_OFFSET_X 32
#define TOUCH_OFFSET_Y 84
#define ORIENTATION_NS 1
#define BACKGROUND_FILE "T2B1/background_T2B1.h"
#define BACKGROUND_NAME background_T2B1_png
#include "display-unix.h"
#endif // BOARDS_T2B1_UNIX_H

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

@ -0,0 +1,41 @@
#ifndef BOARDS_T2T1_UNIX_H
#define BOARDS_T2T1_UNIX_H
#define USE_TOUCH 1
#define USE_SD_CARD 1
#define USE_SBU 1
#define USE_RGB_COLORS 1
#define USE_BACKLIGHT 1
// ILI9341V, GC9307 and ST7789V drivers support 240px x 320px display resolution
#define MAX_DISPLAY_RESX 240
#define MAX_DISPLAY_RESY 320
#define DISPLAY_RESX 240
#define DISPLAY_RESY 240
#define TREZOR_FONT_BPP 4
#ifdef TREZOR_EMULATOR_RASPI
#define WINDOW_WIDTH 480
#define WINDOW_HEIGHT 320
#define TOUCH_OFFSET_X 110
#define TOUCH_OFFSET_Y 40
#define ORIENTATION_NSEW 1
#define BACKGROUND_FILE "background_raspi.h"
#define BACKGROUND_NAME background_raspi_jpg
#else
#define WINDOW_WIDTH 400
#define WINDOW_HEIGHT 600
#define TOUCH_OFFSET_X 80
#define TOUCH_OFFSET_Y 110
#define BACKGROUND_FILE "T2T1/background_T.h"
#define BACKGROUND_NAME background_T_jpg
#endif
#include "display-unix.h"
#endif // BOARDS_T2T1_UNIX_H

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

@ -0,0 +1,29 @@
#ifndef BOARDS_T3T1_UNIX_H
#define BOARDS_T3T1_UNIX_H
#define USE_TOUCH 1
#define USE_SD_CARD 1
#define USE_SBU 1
#define USE_RGB_COLORS 1
#define USE_BACKLIGHT 1
#define USE_OPTIGA 1
#define MAX_DISPLAY_RESX 240
#define MAX_DISPLAY_RESY 240
#define DISPLAY_RESX 240
#define DISPLAY_RESY 240
#define TREZOR_FONT_BPP 4
#define WINDOW_WIDTH 400
#define WINDOW_HEIGHT 600
#define TOUCH_OFFSET_X 80
#define TOUCH_OFFSET_Y 110
#define ORIENTATION_NSEW 1
#define BACKGROUND_FILE "T3T1/background_T3T1.h"
#define BACKGROUND_NAME background_T3T1_jpg
#include "display-unix.h"
#endif // BOARDS_T3T1_UNIX_H

@ -4,17 +4,17 @@
#include "layout_common.h"
#if defined TREZOR_MODEL_1
#include "model_T1B1.h"
#include "T1B1/model_T1B1.h"
#elif defined TREZOR_MODEL_T
#include "model_T2T1.h"
#include "T2T1/model_T2T1.h"
#elif defined TREZOR_MODEL_R
#include "model_T2B1.h"
#include "T2B1/model_T2B1.h"
#elif defined TREZOR_MODEL_T3T1
#include "model_T3T1.h"
#include "T3T1/model_T3T1.h"
#elif defined TREZOR_MODEL_DISC1
#include "model_D001.h"
#include "D001/model_D001.h"
#elif defined TREZOR_MODEL_DISC2
#include "model_D002.h"
#include "D002/model_D002.h"
#else
#error Unknown Trezor model
#endif

@ -1,33 +0,0 @@
#ifndef _BOARD_UNIX_H
#define _BOARD_UNIX_H
#ifdef TREZOR_MODEL_T
#define USE_TOUCH 1
#define USE_SD_CARD 1
#define USE_SBU 1
#define USE_RGB_COLORS 1
#define USE_BACKLIGHT 1
#endif
#ifdef TREZOR_MODEL_T3T1
#define USE_TOUCH 1
#define USE_SD_CARD 1
#define USE_SBU 1
#define USE_RGB_COLORS 1
#define USE_BACKLIGHT 1
#define USE_OPTIGA 1
#endif
#ifdef TREZOR_MODEL_1
#define USE_BUTTON 1
#endif
#ifdef TREZOR_MODEL_R
#define USE_BUTTON 1
#define USE_SBU 1
#define USE_OPTIGA 1
#endif
#include "display-unix.h"
#endif //_BOARD_UNIX_H

@ -34,46 +34,9 @@
#include "display_interface.h"
#include "profile.h"
#define EMULATOR_BORDER 16
#if defined TREZOR_MODEL_T
#ifdef TREZOR_EMULATOR_RASPI
#define WINDOW_WIDTH 480
#define WINDOW_HEIGHT 320
#define TOUCH_OFFSET_X 110
#define TOUCH_OFFSET_Y 40
#else
#define WINDOW_WIDTH 400
#define WINDOW_HEIGHT 600
#define TOUCH_OFFSET_X 80
#define TOUCH_OFFSET_Y 110
#endif
#elif defined TREZOR_MODEL_1
#define WINDOW_WIDTH 200
#define WINDOW_HEIGHT 340
#define TOUCH_OFFSET_X 36
#define TOUCH_OFFSET_Y 92
#elif defined TREZOR_MODEL_R
#define WINDOW_WIDTH 193
#define WINDOW_HEIGHT 339
#define TOUCH_OFFSET_X 32
#define TOUCH_OFFSET_Y 84
#elif defined TREZOR_MODEL_T3T1
#include TREZOR_BOARD
#define WINDOW_WIDTH 400
#define WINDOW_HEIGHT 600
#define TOUCH_OFFSET_X 80
#define TOUCH_OFFSET_Y 110
#else
#error Unknown Trezor model
#endif
#define EMULATOR_BORDER 16
static SDL_Window *WINDOW;
static SDL_Renderer *RENDERER;
@ -107,7 +70,7 @@ static struct {
} PIXELWINDOW;
void display_pixeldata(pixel_color c) {
#if defined TREZOR_MODEL_1 || defined TREZOR_MODEL_R
#if !defined USE_RGB_COLORS
// set to white if highest bits of all R, G, B values are set to 1
// bin(10000 100000 10000) = hex(0x8410)
// otherwise set to black
@ -202,26 +165,11 @@ void display_init(void) {
SDL_PumpEvents();
SDL_SetWindowSize(WINDOW, WINDOW_WIDTH, WINDOW_HEIGHT);
#endif
#ifdef TREZOR_EMULATOR_RASPI
#include "background_raspi.h"
#include BACKGROUND_FILE
#define CONCAT_LEN_HELPER(name) name##_len
#define CONCAT_LEN(name) CONCAT_LEN_HELPER(name)
BACKGROUND = IMG_LoadTexture_RW(
RENDERER, SDL_RWFromMem(background_raspi_jpg, background_raspi_jpg_len),
0);
#else
#if defined TREZOR_MODEL_T
#include "background_T.h"
BACKGROUND = IMG_LoadTexture_RW(
RENDERER, SDL_RWFromMem(background_T_jpg, background_T_jpg_len), 0);
#elif defined TREZOR_MODEL_1
#include "background_1.h"
BACKGROUND = IMG_LoadTexture_RW(
RENDERER, SDL_RWFromMem(background_1_jpg, background_1_jpg_len), 0);
#elif defined TREZOR_MODEL_R
#include "background_T2B1.h"
BACKGROUND = IMG_LoadTexture_RW(
RENDERER, SDL_RWFromMem(background_T2B1_png, background_T2B1_png_len), 0);
#endif
#endif
RENDERER, SDL_RWFromMem(BACKGROUND_NAME, CONCAT_LEN(BACKGROUND_NAME)), 0);
if (BACKGROUND) {
SDL_SetTextureBlendMode(BACKGROUND, SDL_BLENDMODE_NONE);
sdl_touch_offset_x = TOUCH_OFFSET_X;
@ -232,8 +180,8 @@ void display_init(void) {
sdl_touch_offset_x = EMULATOR_BORDER;
sdl_touch_offset_y = EMULATOR_BORDER;
}
#if defined TREZOR_MODEL_1 || defined TREZOR_MODEL_R
// T1 and TR do not have backlight capabilities in hardware, so
#if !USE_BACKLIGHT
// some models do not have backlight capabilities in hardware, so
// setting its value here for emulator to avoid
// calling any `set_backlight` functions
DISPLAY_BACKLIGHT = 255;
@ -291,12 +239,12 @@ void display_refresh(void) {
int display_orientation(int degrees) {
if (degrees != DISPLAY_ORIENTATION) {
#if defined TREZOR_MODEL_T || defined TREZOR_MODEL_T3T1
#if defined ORIENTATION_NSEW
if (degrees == 0 || degrees == 90 || degrees == 180 || degrees == 270) {
#elif defined TREZOR_MODEL_1 || defined TREZOR_MODEL_R
#elif defined ORIENTATION_NS
if (degrees == 0 || degrees == 180) {
#else
#error Unknown Trezor model
if (degrees == 0) {
#endif
DISPLAY_ORIENTATION = degrees;
display_refresh();
@ -308,7 +256,7 @@ int display_orientation(int degrees) {
int display_get_orientation(void) { return DISPLAY_ORIENTATION; }
int display_backlight(int val) {
#if defined TREZOR_MODEL_1 || defined TREZOR_MODEL_R
#if !USE_BACKLIGHT
val = 255;
#endif
if (DISPLAY_BACKLIGHT != val && val >= 0 && val <= 255) {

@ -3,39 +3,6 @@
#include <stdint.h>
#ifdef TREZOR_MODEL_T
// ILI9341V, GC9307 and ST7789V drivers support 240px x 320px display resolution
#define MAX_DISPLAY_RESX 240
#define MAX_DISPLAY_RESY 320
#define DISPLAY_RESX 240
#define DISPLAY_RESY 240
#define TREZOR_FONT_BPP 4
#endif
#ifdef TREZOR_MODEL_R
#define MAX_DISPLAY_RESX 128
#define MAX_DISPLAY_RESY 64
#define DISPLAY_RESX 128
#define DISPLAY_RESY 64
#define TREZOR_FONT_BPP 1
#endif
#ifdef TREZOR_MODEL_T3T1
#define MAX_DISPLAY_RESX 240
#define MAX_DISPLAY_RESY 240
#define DISPLAY_RESX 240
#define DISPLAY_RESY 240
#define TREZOR_FONT_BPP 4
#endif
#ifdef TREZOR_MODEL_1
#define MAX_DISPLAY_RESX 128
#define MAX_DISPLAY_RESY 64
#define DISPLAY_RESX 128
#define DISPLAY_RESY 64
#define TREZOR_FONT_BPP 1
#endif
extern uint8_t *const DISPLAY_DATA_ADDRESS;
#endif //_DISPLAY_UNIX_H

@ -1,2 +0,0 @@
def get_hw_model_as_number(hw_model: str) -> int:
return int.from_bytes(hw_model.encode(), "little")

@ -0,0 +1,16 @@
from __future__ import annotations
from typing import Optional
from .discovery import configure
def configure_board(
revision: Optional[str],
features_wanted: list[str],
env: dict, # type: ignore
defines: list[str | tuple[str, str]],
sources: list[str],
paths: list[str],
):
return configure(env, features_wanted, defines, sources, paths)

@ -1,7 +1,7 @@
from __future__ import annotations
from . import get_hw_model_as_number
from .stm32f4_common import stm32f4_common_files
from .. import get_hw_model_as_number
from ..stm32f4_common import stm32f4_common_files
def configure(
@ -12,7 +12,7 @@ def configure(
paths: list[str],
) -> list[str]:
features_available: list[str] = []
board = "stm32f429i-disc1.h"
board = "D001/boards/stm32f429i-disc1.h"
display = "ltdc.c"
hw_model = get_hw_model_as_number("D001")
hw_revision = 0
@ -30,11 +30,11 @@ def configure(
env.get("ENV")["RUST_TARGET"] = "thumbv7em-none-eabihf"
defines += [mcu]
defines += [f'TREZOR_BOARD=\\"boards/{board}\\"']
defines += [f'TREZOR_BOARD=\\"{board}\\"']
defines += [f"HW_MODEL={hw_model}"]
defines += [f"HW_REVISION={hw_revision}"]
sources += [
"embed/models/model_D001_layout.c",
"embed/models/D001/model_D001_layout.c",
]
sources += [f"embed/trezorhal/stm32f4/displays/{display}"]
sources += ["embed/trezorhal/stm32f4/displays/ili9341_spi.c"]

@ -0,0 +1,16 @@
from __future__ import annotations
from typing import Optional
from .discovery2 import configure
def configure_board(
revision: Optional[str],
features_wanted: list[str],
env: dict, # type: ignore
defines: list[str | tuple[str, str]],
sources: list[str],
paths: list[str],
):
return configure(env, features_wanted, defines, sources, paths)

@ -1,7 +1,7 @@
from __future__ import annotations
from . import get_hw_model_as_number
from .stm32u5_common import stm32u5_common_files
from .. import get_hw_model_as_number
from ..stm32u5_common import stm32u5_common_files
def configure(
@ -12,7 +12,7 @@ def configure(
paths: list[str],
) -> list[str]:
features_available: list[str] = []
board = "stm32u5a9j-dk.h"
board = "D002/boards/stm32u5a9j-dk.h"
display = "dsi.c"
hw_model = get_hw_model_as_number("D002")
hw_revision = 0
@ -32,7 +32,7 @@ def configure(
defines += [mcu]
defines += [
f'TREZOR_BOARD=\\"boards/{board}\\"',
f'TREZOR_BOARD=\\"{board}\\"',
]
defines += [
f"HW_MODEL={hw_model}",
@ -41,7 +41,7 @@ def configure(
f"HW_REVISION={hw_revision}",
]
sources += [
"embed/models/model_D002_layout.c",
"embed/models/D002/model_D002_layout.c",
]
sources += [
f"embed/trezorhal/stm32u5/displays/{display}",

@ -0,0 +1,20 @@
from __future__ import annotations
from typing import Optional
from .emulator import configure as emul
from .trezor_1 import configure
def configure_board(
revision: Optional[str],
features_wanted: list[str],
env: dict, # type: ignore
defines: list[str | tuple[str, str]],
sources: list[str],
paths: list[str],
):
if revision == "emulator":
return emul(env, features_wanted, defines, sources, paths)
else:
return configure(env, features_wanted, defines, sources, paths)

@ -0,0 +1,33 @@
from __future__ import annotations
from .. import get_hw_model_as_number
def configure(
env: dict,
features_wanted: list[str],
defines: list[str | tuple[str, str]],
sources: list[str],
paths: list[str],
) -> list[str]:
board = "T1B1/boards/t1b1-unix.h"
hw_model = get_hw_model_as_number("T1B1")
hw_revision = 0
mcu = "STM32F405xx"
features = []
defines += [mcu]
defines += [f'TREZOR_BOARD=\\"{board}\\"']
defines += [f"HW_MODEL={hw_model}"]
defines += [f"HW_REVISION={hw_revision}"]
defines += [f"MCU_TYPE={mcu}"]
defines += ["FLASH_BIT_ACCESS=1"]
defines += ["FLASH_BLOCK_WORDS=1"]
if "input" in features_wanted:
features.append("button")
sources += ["embed/models/T1B1/model_T1B1_layout.c"]
return features

@ -1,7 +1,7 @@
from __future__ import annotations
from . import get_hw_model_as_number
from .stm32f4_common import stm32f4_common_files
from .. import get_hw_model_as_number
from ..stm32f4_common import stm32f4_common_files
def configure(
@ -12,7 +12,7 @@ def configure(
paths: list[str],
) -> list[str]:
features_available: list[str] = []
board = "trezor_1.h"
board = "T1B1/boards/trezor_1.h"
display = "vg-2864ksweg01.c"
hw_model = get_hw_model_as_number("T1B1")
hw_revision = 0
@ -28,11 +28,11 @@ def configure(
env.get("ENV")["RUST_TARGET"] = "thumbv7m-none-eabi"
defines += [mcu]
defines += [f'TREZOR_BOARD=\\"boards/{board}\\"']
defines += [f'TREZOR_BOARD=\\"{board}\\"']
defines += [f"HW_MODEL={hw_model}"]
defines += [f"HW_REVISION={hw_revision}"]
sources += [
"embed/models/model_T1B1_layout.c",
"embed/models/T1B1/model_T1B1_layout.c",
]
sources += [f"embed/trezorhal/stm32f4/displays/{display}"]

@ -0,0 +1,32 @@
from __future__ import annotations
from typing import Optional
from .emulator import configure as emul
from .trezor_r_v3 import configure as configure_r3
from .trezor_r_v4 import configure as configure_r4
from .trezor_r_v6 import configure as configure_r6
from .trezor_r_v10 import configure as configure_r10
def configure_board(
revision: Optional[int],
features_wanted: list[str],
env: dict, # type: ignore
defines: list[str | tuple[str, str]],
sources: list[str],
paths: list[str],
):
if revision is None:
revision = 10
if revision == "emulator":
return emul(env, features_wanted, defines, sources, paths)
elif revision == 3:
return configure_r3(env, features_wanted, defines, sources, paths)
elif revision == 4:
return configure_r4(env, features_wanted, defines, sources, paths)
elif revision == 6:
return configure_r6(env, features_wanted, defines, sources, paths)
elif revision == 10:
return configure_r10(env, features_wanted, defines, sources, paths)
raise Exception("Unknown model_r_version")

@ -0,0 +1,42 @@
from __future__ import annotations
from .. import get_hw_model_as_number
def configure(
env: dict,
features_wanted: list[str],
defines: list[str | tuple[str, str]],
sources: list[str],
paths: list[str],
) -> list[str]:
board = "T2B1/boards/t2b1-unix.h"
hw_model = get_hw_model_as_number("T2B1")
hw_revision = 0
mcu = "STM32F427xx"
features = []
defines += [mcu]
defines += [f'TREZOR_BOARD=\\"{board}\\"']
defines += [f"HW_MODEL={hw_model}"]
defines += [f"HW_REVISION={hw_revision}"]
defines += [f"MCU_TYPE={mcu}"]
defines += ["FLASH_BIT_ACCESS=1"]
defines += ["FLASH_BLOCK_WORDS=1"]
if "sbu" in features_wanted:
sources += ["embed/trezorhal/unix/sbu.c"]
if "optiga_hal" in features_wanted:
sources += ["embed/trezorhal/unix/optiga_hal.c"]
if "optiga" in features_wanted:
sources += ["embed/trezorhal/unix/optiga.c"]
if "input" in features_wanted:
features.append("button")
sources += ["embed/models/T2B1/model_T2B1_layout.c"]
return features

@ -1,7 +1,7 @@
from __future__ import annotations
from . import get_hw_model_as_number
from .stm32f4_common import stm32f4_common_files
from .. import get_hw_model_as_number
from ..stm32f4_common import stm32f4_common_files
def configure(
@ -14,7 +14,7 @@ def configure(
features_available: list[str] = []
hw_model = get_hw_model_as_number("T2B1")
hw_revision = 10
board = "trezor_r_v10.h"
board = "T2B1/boards/trezor_r_v10.h"
display = "vg-2864ksweg01.c"
mcu = "STM32F427xx"
@ -30,11 +30,11 @@ def configure(
env.get("ENV")["RUST_TARGET"] = "thumbv7em-none-eabihf"
defines += [mcu]
defines += [f'TREZOR_BOARD=\\"boards/{board}\\"']
defines += [f'TREZOR_BOARD=\\"{board}\\"']
defines += [f"HW_MODEL={hw_model}"]
defines += [f"HW_REVISION={hw_revision}"]
sources += [
"embed/models/model_T2B1_layout.c",
"embed/models/T2B1/model_T2B1_layout.c",
]
sources += [f"embed/trezorhal/stm32f4/displays/{display}"]

@ -1,7 +1,7 @@
from __future__ import annotations
from . import get_hw_model_as_number
from .stm32f4_common import stm32f4_common_files
from .. import get_hw_model_as_number
from ..stm32f4_common import stm32f4_common_files
def configure(
@ -14,7 +14,7 @@ def configure(
features_available: list[str] = []
hw_model = get_hw_model_as_number("T2B1")
hw_revision = 3
board = "trezor_r_v3.h"
board = "T2B1/boards/trezor_r_v3.h"
display = "ug-2828tswig01.c"
mcu = "STM32F427xx"
@ -30,11 +30,11 @@ def configure(
env.get("ENV")["RUST_TARGET"] = "thumbv7em-none-eabihf"
defines += [mcu]
defines += [f'TREZOR_BOARD=\\"boards/{board}\\"']
defines += [f'TREZOR_BOARD=\\"{board}\\"']
defines += [f"HW_MODEL={hw_model}"]
defines += [f"HW_REVISION={hw_revision}"]
sources += [
"embed/models/model_T2B1_layout.c",
"embed/models/T2B1/model_T2B1_layout.c",
]
sources += [f"embed/trezorhal/stm32f4/displays/{display}"]

@ -1,7 +1,7 @@
from __future__ import annotations
from . import get_hw_model_as_number
from .stm32f4_common import stm32f4_common_files
from .. import get_hw_model_as_number
from ..stm32f4_common import stm32f4_common_files
def configure(
@ -14,7 +14,7 @@ def configure(
features_available: list[str] = []
hw_model = get_hw_model_as_number("T2B1")
hw_revision = 4
board = "trezor_r_v4.h"
board = "T2B1/boards/trezor_r_v4.h"
display = "vg-2864ksweg01.c"
mcu = "STM32F427xx"
@ -30,11 +30,11 @@ def configure(
env.get("ENV")["RUST_TARGET"] = "thumbv7em-none-eabihf"
defines += [mcu]
defines += [f'TREZOR_BOARD=\\"boards/{board}\\"']
defines += [f'TREZOR_BOARD=\\"{board}\\"']
defines += [f"HW_MODEL={hw_model}"]
defines += [f"HW_REVISION={hw_revision}"]
sources += [
"embed/models/model_T2B1_layout.c",
"embed/models/T2B1/model_T2B1_layout.c",
]
sources += [f"embed/trezorhal/stm32f4/displays/{display}"]

@ -1,7 +1,7 @@
from __future__ import annotations
from . import get_hw_model_as_number
from .stm32f4_common import stm32f4_common_files
from .. import get_hw_model_as_number
from ..stm32f4_common import stm32f4_common_files
def configure(
@ -14,7 +14,7 @@ def configure(
features_available: list[str] = []
hw_model = get_hw_model_as_number("T2B1")
hw_revision = 6
board = "trezor_r_v6.h"
board = "T2B1/boards/trezor_r_v6.h"
display = "vg-2864ksweg01.c"
mcu = "STM32F427xx"
@ -30,11 +30,11 @@ def configure(
env.get("ENV")["RUST_TARGET"] = "thumbv7em-none-eabihf"
defines += [mcu]
defines += [f'TREZOR_BOARD=\\"boards/{board}\\"']
defines += [f'TREZOR_BOARD=\\"{board}\\"']
defines += [f"HW_MODEL={hw_model}"]
defines += [f"HW_REVISION={hw_revision}"]
sources += [
"embed/models/model_T2B1_layout.c",
"embed/models/T2B1/model_T2B1_layout.c",
]
sources += [f"embed/trezorhal/stm32f4/displays/{display}"]

@ -0,0 +1,20 @@
from __future__ import annotations
from typing import Optional
from .emulator import configure as emul
from .trezor_t import configure
def configure_board(
revision: Optional[str],
features_wanted: list[str],
env: dict, # type: ignore
defines: list[str | tuple[str, str]],
sources: list[str],
paths: list[str],
):
if revision == "emulator":
return emul(env, features_wanted, defines, sources, paths)
else:
return configure(env, features_wanted, defines, sources, paths)

@ -0,0 +1,51 @@
from __future__ import annotations
from .. import get_hw_model_as_number
def configure(
env: dict,
features_wanted: list[str],
defines: list[str | tuple[str, str]],
sources: list[str],
paths: list[str],
) -> list[str]:
board = "T2T1/boards/t2t1-unix.h"
hw_model = get_hw_model_as_number("T2T1")
hw_revision = 0
mcu = "STM32F427xx"
features = []
defines += [mcu]
defines += [f'TREZOR_BOARD=\\"{board}\\"']
defines += [f"HW_MODEL={hw_model}"]
defines += [f"HW_REVISION={hw_revision}"]
defines += [f"MCU_TYPE={mcu}"]
defines += ["FLASH_BIT_ACCESS=1"]
defines += ["FLASH_BLOCK_WORDS=1"]
if "dma2d" in features_wanted:
features.append("dma2d")
sources += ["embed/lib/dma2d_emul.c"]
defines += ["USE_DMA2D"]
if "sd_card" in features_wanted:
features.append("sd_card")
sources += [
"embed/trezorhal/unix/sdcard.c",
"embed/extmod/modtrezorio/ff.c",
"embed/extmod/modtrezorio/ffunicode.c",
]
if "sbu" in features_wanted:
sources += ["embed/trezorhal/unix/sbu.c"]
if "input" in features_wanted:
features.append("touch")
features.append("backlight")
sources += ["embed/models/T2T1/model_T2T1_layout.c"]
return features

@ -1,7 +1,7 @@
from __future__ import annotations
from . import get_hw_model_as_number
from .stm32f4_common import stm32f4_common_files
from .. import get_hw_model_as_number
from ..stm32f4_common import stm32f4_common_files
def configure(
@ -12,7 +12,7 @@ def configure(
paths: list[str],
) -> list[str]:
features_available: list[str] = []
board = "trezor_t.h"
board = "T2T1/boards/trezor_t.h"
display = "st7789v.c"
hw_model = get_hw_model_as_number("T2T1")
hw_revision = 0
@ -31,11 +31,11 @@ def configure(
env.get("ENV")["RUST_TARGET"] = "thumbv7em-none-eabihf"
defines += [mcu]
defines += [f'TREZOR_BOARD=\\"boards/{board}\\"']
defines += [f'TREZOR_BOARD=\\"{board}\\"']
defines += [f"HW_MODEL={hw_model}"]
defines += [f"HW_REVISION={hw_revision}"]
sources += [
"embed/models/model_T2T1_layout.c",
"embed/models/T2T1/model_T2T1_layout.c",
]
sources += [f"embed/trezorhal/stm32f4/displays/{display}"]
sources += ["embed/trezorhal/stm32f4/backlight_pwm.c"]

@ -0,0 +1,26 @@
from __future__ import annotations
from typing import Optional
from .emulator import configure as emul
from .trezor_t3t1_revE import configure as configure_revE
from .trezor_t3t1_v4 import configure as configure_v4
def configure_board(
revision: Optional[int | str],
features_wanted: list[str],
env: dict, # type: ignore
defines: list[str | tuple[str, str]],
sources: list[str],
paths: list[str],
):
if revision is None:
revision = "E"
if revision == "emulator":
return emul(env, features_wanted, defines, sources, paths)
elif revision == 4:
return configure_v4(env, features_wanted, defines, sources, paths)
elif revision == "E":
return configure_revE(env, features_wanted, defines, sources, paths)
raise Exception("Unknown model_t3t1_version")

@ -0,0 +1,58 @@
from __future__ import annotations
from .. import get_hw_model_as_number
def configure(
env: dict,
features_wanted: list[str],
defines: list[str | tuple[str, str]],
sources: list[str],
paths: list[str],
) -> list[str]:
board = "T3T1/boards/t3t1-unix.h"
hw_model = get_hw_model_as_number("T3T1")
hw_revision = 0
mcu = "STM32FU585xx"
features = []
defines += [mcu]
defines += [f'TREZOR_BOARD=\\"{board}\\"']
defines += [f"HW_MODEL={hw_model}"]
defines += [f"HW_REVISION={hw_revision}"]
defines += [f"MCU_TYPE={mcu}"]
# todo change to blockwise flash when implemented in unix
defines += ["FLASH_BIT_ACCESS=1"]
defines += ["FLASH_BLOCK_WORDS=1"]
if "dma2d" in features_wanted:
features.append("dma2d")
sources += ["embed/lib/dma2d_emul.c"]
defines += ["USE_DMA2D"]
if "sd_card" in features_wanted:
features.append("sd_card")
sources += [
"embed/trezorhal/unix/sdcard.c",
"embed/extmod/modtrezorio/ff.c",
"embed/extmod/modtrezorio/ffunicode.c",
]
if "sbu" in features_wanted:
sources += ["embed/trezorhal/unix/sbu.c"]
if "optiga_hal" in features_wanted:
sources += ["embed/trezorhal/unix/optiga_hal.c"]
if "optiga" in features_wanted:
sources += ["embed/trezorhal/unix/optiga.c"]
if "input" in features_wanted:
features.append("touch")
features.append("backlight")
sources += ["embed/models/T3T1/model_T3T1_layout.c"]
return features

@ -1,7 +1,7 @@
from __future__ import annotations
from . import get_hw_model_as_number
from .stm32u5_common import stm32u5_common_files
from .. import get_hw_model_as_number
from ..stm32u5_common import stm32u5_common_files
def configure(
@ -12,7 +12,7 @@ def configure(
paths: list[str],
) -> list[str]:
features_available: list[str] = []
board = "trezor_t3t1_revE.h"
board = "T3T1/boards/trezor_t3t1_revE.h"
display = "st7789v.c"
hw_model = get_hw_model_as_number("T3T1")
hw_revision = 0
@ -34,11 +34,11 @@ def configure(
env.get("ENV")["RUST_TARGET"] = "thumbv8m.main-none-eabihf"
defines += [mcu]
defines += [f'TREZOR_BOARD=\\"boards/{board}\\"']
defines += [f'TREZOR_BOARD=\\"{board}\\"']
defines += [f"HW_MODEL={hw_model}"]
defines += [f"HW_REVISION={hw_revision}"]
sources += [
"embed/models/model_T3T1_layout.c",
"embed/models/T3T1/model_T3T1_layout.c",
]
sources += [f"embed/trezorhal/stm32u5/displays/{display}"]
sources += ["embed/trezorhal/stm32u5/backlight_pwm.c"]

@ -1,7 +1,7 @@
from __future__ import annotations
from . import get_hw_model_as_number
from .stm32u5_common import stm32u5_common_files
from .. import get_hw_model_as_number
from ..stm32u5_common import stm32u5_common_files
def configure(
@ -12,7 +12,7 @@ def configure(
paths: list[str],
) -> list[str]:
features_available: list[str] = []
board = "trezor_t3t1_v4.h"
board = "T3T1/boards/trezor_t3t1_v4.h"
display = "st7789v.c"
hw_model = get_hw_model_as_number("T3T1")
hw_revision = 0
@ -34,11 +34,11 @@ def configure(
env.get("ENV")["RUST_TARGET"] = "thumbv8m.main-none-eabihf"
defines += [mcu]
defines += [f'TREZOR_BOARD=\\"boards/{board}\\"']
defines += [f'TREZOR_BOARD=\\"{board}\\"']
defines += [f"HW_MODEL={hw_model}"]
defines += [f"HW_REVISION={hw_revision}"]
sources += [
"embed/models/model_T3T1_layout.c",
"embed/models/T3T1/model_T3T1_layout.c",
]
sources += [f"embed/trezorhal/stm32u5/displays/{display}"]
sources += ["embed/trezorhal/stm32u5/backlight_pwm.c"]

@ -0,0 +1,40 @@
from __future__ import annotations
import importlib
from typing import Optional
def get_hw_model_as_number(hw_model: str) -> int:
return int.from_bytes(hw_model.encode(), "little")
def configure_board(
model: str,
revision: Optional[str | int],
features_wanted: list[str],
env: dict, # type: ignore
defines: list[str | tuple[str, str]],
sources: list[str],
paths: list[str],
) -> list[str]:
imported_module = importlib.import_module("models." + get_model_identifier(model))
return imported_module.configure_board(
revision, features_wanted, env, defines, sources, paths
)
def get_model_identifier(model: str) -> str:
if model == "1":
return "T1B1"
elif model == "T":
return "T2T1"
elif model == "R":
return "T2B1"
elif model == "T3T1":
return "T3T1"
elif model == "DISC1":
return "D001"
elif model == "DISC2":
return "D002"
else:
raise Exception("Unknown model")

@ -4,19 +4,6 @@ import subprocess
import zlib
from pathlib import Path
from boards import (
discovery,
discovery2,
trezor_1,
trezor_r_v3,
trezor_r_v4,
trezor_r_v6,
trezor_r_v10,
trezor_t,
trezor_t3t1_revE,
trezor_t3t1_v4,
)
HERE = Path(__file__).parent.resolve()
# go up from site_scons to core/
@ -36,65 +23,6 @@ def add_font(
sources.append(sourcefile)
def configure_board(
model: str,
features_wanted: list[str],
env: dict, # type: ignore
defines: list[str | tuple[str, str]],
sources: list[str],
paths: list[str],
) -> list[str]:
model_r_version = 10
model_t3t1_version = "E"
if model in ("1",):
return trezor_1.configure(env, features_wanted, defines, sources, paths)
elif model in ("T",):
return trezor_t.configure(env, features_wanted, defines, sources, paths)
elif model in ("R",):
if model_r_version == 3:
return trezor_r_v3.configure(env, features_wanted, defines, sources, paths)
elif model_r_version == 4:
return trezor_r_v4.configure(env, features_wanted, defines, sources, paths)
elif model_r_version == 6:
return trezor_r_v6.configure(env, features_wanted, defines, sources, paths)
elif model_r_version == 10:
return trezor_r_v10.configure(env, features_wanted, defines, sources, paths)
raise Exception("Unknown model_r_version")
elif model in ("T3T1",):
if model_t3t1_version == 4:
return trezor_t3t1_v4.configure(
env, features_wanted, defines, sources, paths
)
elif model_t3t1_version == "E":
return trezor_t3t1_revE.configure(
env, features_wanted, defines, sources, paths
)
raise Exception("Unknown model_t3t1_version")
elif model in ("DISC1",):
return discovery.configure(env, features_wanted, defines, sources, paths)
elif model in ("DISC2",):
return discovery2.configure(env, features_wanted, defines, sources, paths)
raise Exception("Unknown model")
def get_model_identifier(model: str) -> str:
if model == "1":
return "T1B1"
elif model == "T":
return "T2T1"
elif model == "R":
return "T2B1"
elif model == "T3T1":
return "T3T1"
elif model == "DISC1":
return "D001"
elif model == "DISC2":
return "D002"
else:
raise Exception("Unknown model")
def get_version(file: str) -> str:
major = 0
minor = 0

Loading…
Cancel
Save