Skip to content
New issue

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

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

Already on GitHub? # to your account

Core firmware split #4188

Merged
merged 44 commits into from
Sep 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
6f762a0
refactor(core/embed): remove unnecessary pendsv exception handling
cepetr Jun 20, 2024
b7e2537
refactor(core/embed): remove unnecessary sync from sdcard driver
cepetr Jun 20, 2024
121eb95
refactor(core/embed): simplify irq priorities
cepetr Jun 20, 2024
a8a8c1a
refactor(core/embed): improve display driver init/deinit
cepetr May 31, 2024
a59a2ab
refactor(core/embed): simplify ensure_compatible_settings
cepetr Jun 24, 2024
99fd9f9
fix(core/embed): fix backlight pwm settings during display deinit
cepetr Jun 25, 2024
a8bd084
refactor(core/embed): add initialized flag to display drivers
cepetr Jun 25, 2024
b428946
fix(core/embed): fix display initialization on T3T1 in boardloader
cepetr Jun 25, 2024
0dd94b7
refactor(core/embed): extract hw entropy logic to its own module
cepetr Aug 8, 2024
6810591
refactor(core/build): remove hardcoded build path
cepetr Aug 8, 2024
6e9b4a7
refactor(core/embed): remove FlashOTP module
cepetr Aug 8, 2024
8e4e934
fix(core/embed): fix aborting of bg_copy operation
cepetr Aug 13, 2024
b60efc4
feat(core/embed): introduce systick and systimer drivers
cepetr Jul 12, 2024
e565d73
refactor(core/embed): remove supervise module
cepetr Aug 8, 2024
77f941d
chore(embed/core): add include guard to translations.h
cepetr Aug 8, 2024
b0fe474
refactor(core/embed): make i2c header common for all platforms
cepetr Aug 8, 2024
53adc24
refactor(core/embed): rename boot_args to bootuils
cepetr Aug 16, 2024
12c338c
refactor(core/embed): improve bootuils api
cepetr Aug 16, 2024
bdd6055
refactor(core/embed): move __stack_chk_fail to a better location
cepetr Aug 18, 2024
ed1b17d
refactor(core/embed): introduce fwutils module
cepetr Aug 18, 2024
ef81fa6
fix(core/embed): make HardFault processing safer
cepetr Aug 20, 2024
9758a60
fix(embed/core): fix stack protection on STM32U5
cepetr Aug 20, 2024
53547fc
fix(core/embed): fix prodtest build
cepetr Aug 27, 2024
3f648be
feat(code/embed): introduce ARRAY_LENGTH macro
cepetr Aug 27, 2024
fa9f7d6
feat(core/embed): introduce non-blocking i2c drivers
cepetr Aug 27, 2024
f0b42e4
refactor(embed/core): replace enable/disable_irq by irq_lock/unlock
cepetr Aug 28, 2024
5562abe
refactor(core/embed): use new i2c driver in ft6x36 driver
cepetr Aug 28, 2024
0b4dbe1
refactor(core/embed): use new i2c driver in drv2625 driver
cepetr Aug 28, 2024
bb3b00c
refactor(core/embed): use new i2c driver in optiga driver
cepetr Aug 28, 2024
a3f2b5b
refactor(core/embed): use new i2c driver in sitronix touch driver
cepetr Aug 28, 2024
ac8ed8d
refactor(core/embed): use new i2c driver in stmpe811 touch driver
cepetr Aug 28, 2024
694ac20
chore(core/embed): remove unused legacy i2c driver
cepetr Sep 10, 2024
ba25763
refactor(core/embed): simplify bootutils api
cepetr Aug 30, 2024
e6bacff
refactor(core/embed): moving specific algorithms into fwutils
cepetr Aug 30, 2024
3f8166d
refactor(core/embed): introduce new mpu driver
cepetr Sep 7, 2024
52cbd29
refactor(core/embed): split firmware into kernel & coreapp
cepetr Aug 13, 2024
813aa0b
refactor(core/embed): introduce system, tasks, applets and emergency …
cepetr Sep 18, 2024
5b0dd36
refactor(core): combined build of coreapp + kernel, linker scripts re…
TychoVrahe Sep 4, 2024
36140cd
fix(core): use secure-unprivileged SAES XOR key for storage encryption
TychoVrahe Sep 4, 2024
924904f
fix(core): fix storage offsets
TychoVrahe Sep 12, 2024
686861a
chore(core): remove flash otp interface from python
TychoVrahe Sep 12, 2024
9750b70
fix(core): support 32 bit colors in terminal
TychoVrahe Sep 12, 2024
97b3836
refactor(core): migrate coreapp into firmware
TychoVrahe Sep 16, 2024
23ff195
fix(core/embed): fix firmware invalidation
cepetr Sep 19, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
10 changes: 8 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,12 @@ bootloader_hashes: ## generate bootloader hashes
bootloader_hashes_check: ## check generated bootloader hashes
./core/tools/bootloader_hashes.py --check

gen: templates mocks icons protobuf ci_docs vendorheader solana_templates bootloader_hashes ## regenerate auto-generated files from sources
lsgen: ## generate linker scripts hashes
lsgen

gen_check: templates_check mocks_check icons_check protobuf_check ci_docs_check vendorheader_check solana_templates_check bootloader_hashes_check ## check validity of auto-generated files
lsgen_check: ## check generated linker scripts
lsgen --check

gen: templates mocks icons protobuf ci_docs vendorheader solana_templates bootloader_hashes lsgen ## regenerate auto-generated files from sources

gen_check: templates_check mocks_check icons_check protobuf_check ci_docs_check vendorheader_check solana_templates_check bootloader_hashes_check lsgen_check ## check validity of auto-generated files
15 changes: 14 additions & 1 deletion core/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ BOOTLOADER_CI_BUILD_DIR = $(BUILD_DIR)/bootloader_ci
BOOTLOADER_EMU_BUILD_DIR = $(BUILD_DIR)/bootloader_emu
PRODTEST_BUILD_DIR = $(BUILD_DIR)/prodtest
REFLASH_BUILD_DIR = $(BUILD_DIR)/reflash
KERNEL_BUILD_DIR = $(BUILD_DIR)/kernel
FIRMWARE_BUILD_DIR = $(BUILD_DIR)/firmware
UNIX_BUILD_DIR = $(BUILD_DIR)/unix
RUST_BUILD_DIR = $(BUILD_DIR)/rust
Expand Down Expand Up @@ -78,6 +79,7 @@ endif
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)
Expand Down Expand Up @@ -143,6 +145,7 @@ test: ## run unit tests
cd tests ; ./run_tests.sh $(TESTOPTS)

test_rust: ## run rs unit tests
export BUILD_DIR=$(abspath $(UNIX_BUILD_DIR)) ; \
cd embed/rust ; cargo test $(TESTOPTS) --target=$(RUST_TARGET) \
--no-default-features --features $(MODEL_FEATURE),test \
-- --test-threads=1 --nocapture
Expand Down Expand Up @@ -212,6 +215,7 @@ pyright:
python ../tools/pyright_tool.py

clippy:
export BUILD_DIR=$(abspath $(UNIX_BUILD_DIR)) ; \
cd embed/rust ; cargo clippy $(TESTOPTS) --all-features --target=$(RUST_TARGET)

## code generation:
Expand Down Expand Up @@ -268,7 +272,13 @@ build_reflash: ## build reflash firmware + reflash image
dd if=build/boardloader/boardloader.bin of=$(REFLASH_BUILD_DIR)/sdimage.bin bs=1 seek=0
dd if=build/bootloader/bootloader.bin of=$(REFLASH_BUILD_DIR)/sdimage.bin bs=1 seek=49152

build_firmware: templates build_cross ## build firmware with frozen modules
build_kernel: ## build kernel image
$(SCONS) CFLAGS="$(CFLAGS)" PRODUCTION="$(PRODUCTION)" \
TREZOR_MODEL="$(TREZOR_MODEL)" CMAKELISTS="$(CMAKELISTS)" \
BOOTLOADER_QA="$(BOOTLOADER_QA)" BOOTLOADER_DEVEL="$(BOOTLOADER_DEVEL)" \
$(KERNEL_BUILD_DIR)/kernel.bin

build_firmware: templates build_cross build_kernel ## build firmware with frozen modules
$(SCONS) CFLAGS="$(CFLAGS)" PRODUCTION="$(PRODUCTION)" \
TREZOR_MODEL="$(TREZOR_MODEL)" CMAKELISTS="$(CMAKELISTS)" \
PYOPT="$(PYOPT)" BITCOIN_ONLY="$(BITCOIN_ONLY)" \
Expand Down Expand Up @@ -320,6 +330,9 @@ clean_prodtest: ## clean prodtest build
clean_reflash: ## clean reflash build
rm -rf $(REFLASH_BUILD_DIR)

clean_kernel: ## clean kernel build
rm -rf $(KERNEL_BUILD_DIR)

clean_firmware: ## clean firmware build
rm -rf $(FIRMWARE_BUILD_DIR) $(RUST_BUILD_DIR)

Expand Down
18 changes: 15 additions & 3 deletions core/SConscript.boardloader
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ TREZOR_MODEL = ARGUMENTS.get('TREZOR_MODEL', 'T')
CMAKELISTS = int(ARGUMENTS.get('CMAKELISTS', 0))
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
Expand Down Expand Up @@ -41,6 +42,7 @@ CPPPATH_MOD += [
'vendor/trezor-storage',
]
CPPDEFINES_MOD += [
'KERNEL_MODE',
'AES_128',
'AES_192',
'USE_KECCAK',
Expand Down Expand Up @@ -69,6 +71,7 @@ SOURCE_MOD += [
'embed/lib/colors.c',
'embed/lib/display_utils.c',
'embed/lib/error_handling.c',
'embed/lib/flash_utils.c',
'embed/lib/fonts/font_bitmap.c',
'embed/lib/fonts/fonts.c',
'embed/lib/gfx_color.c',
Expand All @@ -77,6 +80,7 @@ SOURCE_MOD += [
'embed/lib/gfx_bitblt_mono8.c',
'embed/lib/image.c',
'embed/lib/mini_printf.c',
'embed/lib/rsod.c',
'embed/lib/terminal.c',
]
if NEW_RENDERING:
Expand All @@ -100,15 +104,15 @@ env = Environment(ENV=os.environ,
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']

SOURCE_BOARDLOADER = [
f"embed/boardloader/startup_{FILE_SUFFIX}.s",
f"embed/trezorhal/{FILE_SUFFIX}/startup_stage_0.s",
'embed/boardloader/main.c',
]


env.Replace(
CAT='cat',
CP='cp',
AS='arm-none-eabi-as',
AR='arm-none-eabi-ar',
Expand All @@ -134,7 +138,7 @@ env.Replace(
'-fstack-protector-strong '
+ env.get('ENV')["CPU_CCFLAGS"] + CCFLAGS_MOD,
CCFLAGS_QSTR='-DNO_QSTR -DN_X64 -DN_X86 -DN_THUMB',
LINKFLAGS=f"-T embed/boardloader/memory_{LINKER_SCRIPT_SUFFIX}.ld -Wl,--gc-sections -Wl,-Map=build/boardloader/boardloader.map -Wl,--warn-common -Wl,--print-memory-usage",
LINKFLAGS="-T build/boardloader/memory.ld -Wl,--gc-sections -Wl,-Map=build/boardloader/boardloader.map -Wl,--warn-common -Wl,--print-memory-usage",
CPPPATH=[
'embed/boardloader',
'embed/lib',
Expand Down Expand Up @@ -172,13 +176,21 @@ obj_program += env.Object(source=SOURCE_MOD_CRYPTO, CCFLAGS='$CCFLAGS -ftrivial-
obj_program += env.Object(source=SOURCE_BOARDLOADER)
obj_program += env.Object(source=SOURCE_HAL)

linkerscript_gen = env.Command(
target='memory.ld',
source=[f'embed/models/{MODEL_IDENTIFIER}/memory.ld', env.get('ENV')['LINKER_SCRIPT'].format(target='boardloader')],
action='$CAT $SOURCES > $TARGET',
)

program_elf = env.Command(
target='boardloader.elf',
source=obj_program,
action=
'$LINK -o $TARGET $CCFLAGS $CFLAGS $LINKFLAGS $SOURCES -lc_nano -lgcc',
)

env.Depends(program_elf, linkerscript_gen)

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()
Expand Down
20 changes: 16 additions & 4 deletions core/SConscript.bootloader
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ 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)
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
Expand Down Expand Up @@ -71,6 +72,7 @@ CPPPATH_MOD += [
'vendor/trezor-storage',
]
CPPDEFINES_MOD += [
'KERNEL_MODE',
'AES_128',
'AES_192',
'USE_KECCAK',
Expand Down Expand Up @@ -108,6 +110,7 @@ SOURCE_MOD += [
'embed/lib/colors.c',
'embed/lib/display_utils.c',
'embed/lib/error_handling.c',
'embed/lib/flash_utils.c',
'embed/lib/fonts/font_bitmap.c',
'embed/lib/fonts/fonts.c',
'embed/lib/gfx_color.c',
Expand All @@ -116,6 +119,7 @@ SOURCE_MOD += [
'embed/lib/gfx_bitblt_rgba8888.c',
'embed/lib/image.c',
'embed/lib/mini_printf.c',
'embed/lib/rsod.c',
'embed/lib/terminal.c',
'embed/lib/unit_variant.c',
'vendor/micropython/lib/uzlib/adler32.c',
Expand Down Expand Up @@ -159,10 +163,9 @@ env = Environment(
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']

SOURCE_BOOTLOADER = [
f'embed/bootloader/startup_{FILE_SUFFIX}.s',
f'embed/trezorhal/{FILE_SUFFIX}/startup_stage_1.s',
'embed/bootloader/header.S',
'embed/bootloader/bootui.c',
'embed/bootloader/main.c',
Expand All @@ -173,6 +176,7 @@ SOURCE_BOOTLOADER = [


env.Replace(
CAT='cat',
CP='cp',
AS='arm-none-eabi-as',
AR='arm-none-eabi-ar',
Expand Down Expand Up @@ -210,7 +214,7 @@ env.Replace(
'-fstack-protector-strong '
+ env.get('ENV')["CPU_CCFLAGS"] + CCFLAGS_MOD,
CCFLAGS_QSTR='-DNO_QSTR -DN_X64 -DN_X86 -DN_THUMB',
LINKFLAGS=f'-T embed/bootloader/memory_{LINKER_SCRIPT_SUFFIX}.ld -Wl,--gc-sections -Wl,-Map=build/bootloader/bootloader.map -Wl,--warn-common -Wl,--print-memory-usage',
LINKFLAGS='-T build/bootloader/memory.ld -Wl,--gc-sections -Wl,-Map=build/bootloader/bootloader.map -Wl,--warn-common -Wl,--print-memory-usage',
CPPPATH=ALLPATHS,
CPPDEFINES=[
'BOOTLOADER',
Expand Down Expand Up @@ -283,8 +287,9 @@ def cargo_build():
]

bindgen_macros = tools.get_bindgen_defines(env.get("CPPDEFINES"), ALLPATHS)
build_dir = str(Dir('.').abspath)

return f'export BINDGEN_MACROS=\'{bindgen_macros}\'; cd embed/rust; cargo build {profile} ' + ' '.join(cargo_opts)
return f'export BINDGEN_MACROS=\'{bindgen_macros}\'; export BUILD_DIR=\'{build_dir}\'; cd embed/rust; cargo build {profile} ' + ' '.join(cargo_opts)

rust = env.Command(
target=RUST_LIBPATH,
Expand All @@ -306,13 +311,20 @@ obj_program += env.Object(source=SOURCE_NANOPB)
obj_program += env.Object(source=SOURCE_HAL)


linkerscript_gen = env.Command(
target='memory.ld',
source=[f'embed/models/{MODEL_IDENTIFIER}/memory.ld', env.get('ENV')['LINKER_SCRIPT'].format(target='bootloader')],
action='$CAT $SOURCES > $TARGET',
)

program_elf = env.Command(
target='bootloader.elf',
source=obj_program,
action=
'$LINK -o $TARGET $CCFLAGS $CFLAGS $SOURCES $LINKFLAGS -lc_nano -lm -lgcc',
)

env.Depends(program_elf, linkerscript_gen)
env.Depends(program_elf, rust)

SUFFIX = '_qa' if BOOTLOADER_QA else ''
Expand Down
18 changes: 15 additions & 3 deletions core/SConscript.bootloader_ci
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ TREZOR_MODEL = ARGUMENTS.get('TREZOR_MODEL', 'T')
CMAKELISTS = int(ARGUMENTS.get('CMAKELISTS', 0))
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
Expand Down Expand Up @@ -69,6 +70,7 @@ CPPPATH_MOD += [
'vendor/trezor-storage',
]
CPPDEFINES_MOD += [
'KERNEL_MODE',
'AES_128',
'AES_192',
'USE_KECCAK',
Expand Down Expand Up @@ -101,6 +103,7 @@ SOURCE_MOD += [
'embed/lib/colors.c',
'embed/lib/display_utils.c',
'embed/lib/error_handling.c',
'embed/lib/flash_utils.c',
'embed/lib/fonts/font_bitmap.c',
'embed/lib/fonts/fonts.c',
'embed/lib/gfx_color.c',
Expand All @@ -109,6 +112,7 @@ SOURCE_MOD += [
'embed/lib/gfx_bitblt_rgba8888.c',
'embed/lib/image.c',
'embed/lib/mini_printf.c',
'embed/lib/rsod.c',
'embed/lib/terminal.c',
'vendor/micropython/lib/uzlib/adler32.c',
'vendor/micropython/lib/uzlib/crc32.c',
Expand Down Expand Up @@ -151,10 +155,9 @@ env = Environment(
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']

SOURCE_BOOTLOADER = [
f'embed/bootloader_ci/startup_{FILE_SUFFIX}.s',
f'embed/trezorhal/{FILE_SUFFIX}/startup_stage_1.s',
'embed/bootloader_ci/header.S',
'embed/bootloader_ci/bootui.c',
'embed/bootloader_ci/main.c',
Expand All @@ -164,6 +167,7 @@ SOURCE_BOOTLOADER = [
]

env.Replace(
CAT='cat',
CP='cp',
AS='arm-none-eabi-as',
AR='arm-none-eabi-ar',
Expand All @@ -189,7 +193,7 @@ env.Replace(
'-fstack-protector-strong '
+ env.get('ENV')["CPU_CCFLAGS"] + CCFLAGS_MOD,
CCFLAGS_QSTR='-DNO_QSTR -DN_X64 -DN_X86 -DN_THUMB',
LINKFLAGS=f'-T embed/bootloader_ci/memory_{LINKER_SCRIPT_SUFFIX}.ld -Wl,--gc-sections -Wl,-Map=build/bootloader_ci/bootloader.map -Wl,--warn-common',
LINKFLAGS=f'-T build/bootloader_ci/memory.ld -Wl,--gc-sections -Wl,-Map=build/bootloader_ci/bootloader.map -Wl,--warn-common',
CPPPATH=[
'embed/bootloader_ci',
'embed/bootloader_ci/nanopb',
Expand Down Expand Up @@ -238,13 +242,21 @@ obj_program += env.Object(source=SOURCE_BOOTLOADER)
obj_program += env.Object(source=SOURCE_NANOPB)
obj_program += env.Object(source=SOURCE_HAL)

linkerscript_gen = env.Command(
target='memory.ld',
source=[f'embed/models/{MODEL_IDENTIFIER}/memory.ld', env.get('ENV')['LINKER_SCRIPT'].format(target='bootloader')],
action='$CAT $SOURCES > $TARGET',
)

program_elf = env.Command(
target='bootloader.elf',
source=obj_program,
action=
'$LINK -o $TARGET $CCFLAGS $CFLAGS $LINKFLAGS $SOURCES -lc_nano -lgcc',
)

env.Depends(program_elf, linkerscript_gen)

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()
Expand Down
13 changes: 10 additions & 3 deletions core/SConscript.bootloader_emu
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ CPPPATH_MOD += [
'vendor/trezor-storage',
]
CPPDEFINES_MOD += [
'KERNEL_MODE',
'AES_128',
'AES_192',
'USE_KECCAK',
Expand Down Expand Up @@ -103,6 +104,7 @@ SOURCE_MOD += [
'embed/lib/colors.c',
'embed/lib/display_utils.c',
'embed/lib/error_handling.c',
'embed/lib/flash_utils.c',
'embed/lib/fonts/font_bitmap.c',
'embed/lib/fonts/fonts.c',
'embed/lib/gfx_color.c',
Expand All @@ -111,6 +113,7 @@ SOURCE_MOD += [
'embed/lib/gfx_bitblt_rgba8888.c',
'embed/lib/image.c',
'embed/lib/mini_printf.c',
'embed/lib/rsod.c',
'embed/lib/terminal.c',
'embed/lib/unit_variant.c',
'vendor/micropython/lib/uzlib/adler32.c',
Expand Down Expand Up @@ -145,15 +148,18 @@ SOURCE_BOOTLOADER = [
]

SOURCE_TREZORHAL = [
'embed/trezorhal/unix/boot_args.c',
'embed/trezorhal/unix/bootutils.c',
'embed/trezorhal/unix/common.c',
'embed/trezorhal/unix/fault_handlers.c',
'embed/trezorhal/unix/flash.c',
'embed/trezorhal/unix/flash_otp.c',
'embed/trezorhal/unix/mpu.c',
'embed/trezorhal/unix/monoctr.c',
'embed/trezorhal/unix/random_delays.c',
'embed/trezorhal/unix/rng.c',
'embed/trezorhal/unix/secret.c',
'embed/trezorhal/unix/system.c',
'embed/trezorhal/unix/systick.c',
'embed/trezorhal/unix/systimer.c',
'embed/trezorhal/unix/usb.c',
]

Expand Down Expand Up @@ -300,8 +306,9 @@ def cargo_build():
]

bindgen_macros = tools.get_bindgen_defines(env.get("CPPDEFINES"), ALLPATHS)
build_dir = str(Dir('.').abspath)

return f'export BINDGEN_MACROS=\'{bindgen_macros}\'; cd embed/rust; cargo build --profile {RUST_PROFILE} ' + ' '.join(cargo_opts)
return f'export BINDGEN_MACROS=\'{bindgen_macros}\'; export BUILD_DIR=\'{build_dir}\'; cd embed/rust; cargo build --profile {RUST_PROFILE} ' + ' '.join(cargo_opts)

rust = env.Command(
target=RUST_LIBPATH,
Expand Down
Loading
Loading