Commit Graph

299 Commits

Author SHA1 Message Date
obrusvit
cb6da02dfc refactor(core): move power management modules
- better code organization

[no changelog]
2025-09-16 14:30:06 +02:00
Suyash Shandilya
f51a8fe8bf feat(translations): allow dev-signed translation blobs in non-production builds
Changed the feature lock on accepting dev signed translation blobs from `debug` to `dev_keys` (new). This is enabled for all non-production builds so QA can test translations even on production ready, unsigned builds.
[no changelog]
2025-09-12 11:16:07 +02:00
cepetr
ff77431790 fix(core): enable debuglink when PYOPT=0
[no changelog]
2025-09-08 08:22:54 +02:00
cepetr
ca929574e8 feat(core): introduce DBG_CONSOLE build argument
[no changelog]
2025-08-28 15:25:56 +02:00
cepetr
71d6052652 refactor(core): simplify usb driver api
[no changelog]
2025-08-28 14:57:24 +02:00
tychovrahe
c1d0a8f1e8 chore(core): prepare for including production nRF application binary
[no changelog]
2025-08-27 16:38:35 +02:00
cepetr
2f74e03e88 chore(core): remove unused define
[no changelog]
2025-08-12 13:47:39 +02:00
cepetr
9951c962c3 refactor(core): remove circular dependencies, new 'storage' feature
[no changelog]
2025-08-12 13:47:39 +02:00
cepetr
8a8ecdfcc8 refactor(core): cleanup storage syscalls, prepare early initialization
[no changelog]
2025-08-12 13:47:39 +02:00
obrusvit
384e0157e6 fix(build): no ui_debug_overlay only in prod
[no changelog]
2025-08-11 22:52:36 +02:00
tychovrahe
74c3deaf27 refactor(core): rewrite debug overlay in rust
[no changelog]
2025-08-11 16:41:35 +02:00
tychovrahe
98692d5401 refactor(core): rename debug overlay to performance overlay
[no changelog]
2025-08-11 16:41:35 +02:00
M1nd3r
936c767db4 chore: adjust SConscripts to THP 2025-07-31 20:29:05 +02:00
cepetr
681b0d389e feat(core): introduce fail-safe/pq signed boardloader
[no changelog]
2025-07-29 11:37:47 +02:00
cepetr
6e75352af2 refactor(core): improve bl_check api
[no changelog]
2025-07-29 11:37:47 +02:00
obrusvit
059d795ec3 feat(core): implement autodim in app firmware
- similarly to bootloader, firmware sets backlight to LOW (45) after 30s
of inactivity when the device is not connected via USB
- implemented via IdleTimer

[no changelog]
2025-07-25 17:12:47 +02:00
tychovrahe
d38546e229 feat(core): add option to build dev FW with unsage vendorheader
[no changelog]
2025-07-22 14:04:09 +02:00
cepetr
564743ef7e refactor(core): introduce suspend module
[no changelog]
2025-06-25 10:54:20 +02:00
tychovrahe
9f2dec6169 refactor(core): update bootloader from coreapp, using syscalls (and smcalls)
[no changelog]
2025-06-24 14:58:11 +02:00
Martin Milata
200eac6384 refactor(core): exclude THP related string identifiers from non-THP builds
[no changelog]
2025-06-13 15:58:33 +02:00
obrusvit
f04edf3a28 feat(core): battery updates in FW event loop
[no changelog]
2025-06-11 23:39:28 +02:00
tychovrahe
01465aac7c feat(core): update NRF application from firmware
[no changelog]
2025-06-09 17:12:31 +02:00
Martin Milata
2c45bac81a refactor(core): ignore BLE exceptions on boot
[no changelog]
2025-06-05 15:53:23 +02:00
cepetr
8a115eff03 chore(core): reformat FEATURES_WANTED list for readability
[no changelog]
2025-06-04 16:58:15 +02:00
cepetr
bbb74c03a4 feat(core): introduce secure monitor
[no changelog]
2025-06-04 16:58:15 +02:00
cepetr
a7466298ff refactor(core): prepare for secure/non-secure memory layout
[no changelog]
2025-06-04 16:58:15 +02:00
Martin Milata
39a1c81154 refactor(core): device menu modules
[no changelog]
2025-05-30 17:38:16 +02:00
tychovrahe
6e82c2415f refactor(core): refactor power manager syscalls
[no changelog]
2025-05-30 14:04:45 +02:00
Roman Zeyde
556e29b068 perf(core): enable MICROPY_ROM_TEXT_COMPRESSION
Also, use `__builtin_strcmp` instead of `strcmp`.

[no changelog]
2025-05-15 09:55:40 +03:00
Roman Zeyde
bd87ebd4b0 chore(core): use -ffreestanding for SOURCE_MOD_CRYPTO and SOURCE_MOD_SECP256K1_ZKP
[no changelog]
2025-05-13 20:17:41 +03:00
Roman Zeyde
7cdb0cf244 feat(vendor): update MicroPython to allow excluding line numbers from bytecode
Setting `MICROPY_ENABLE_SOURCE_LINE=0` helps reducing the debug firmware size by ~2%:
```
$ TREZOR_MODEL=T3T1 MICROPY_ENABLE_SOURCE_LINE=0 PYOPT=0 make -C core build_firmware
<snip>
           FLASH:     1,629,456 B      1664 KB     95.63%
```

Before this PR:
```
           FLASH:     1,662,224 B      1664 KB     97.55%
```

[no changelog]
2025-05-13 17:07:37 +03:00
Roman Zeyde
3a7850f6a0 chore: remove BNB Beacon Chain support 2025-05-13 09:04:48 +03:00
cepetr
452e63c4fb feat(core): add display feature to SConscript
[no changelog]
2025-05-12 07:57:46 +02:00
cepetr
daa6ea25fb feat(core): add powerctl feature to SConscript
[no changelog]
2025-05-12 07:57:46 +02:00
Eugene Rossokha
ffbdea202a feat(core): add loadable solana tokens 2025-04-29 14:54:41 +02:00
M1nd3r
10f9254f7a chore(core): remove wire_log from non-debug builds
[no changelog]
2025-04-28 23:52:47 +02:00
Roman Zeyde
09a323e578 fix(core): remove debug-related data from PYOPT=1 firmware builds
It reduces T3T1 release universal firmware size by ~2kB:
```
Memory region         Used Size  Region Size  %age Used
           FLASH:     1580304 B      1664 KB     92.74%
```

Before this PR:
```
Memory region         Used Size  Region Size  %age Used
           FLASH:     1578256 B      1664 KB     92.62%
```

(Tested with `TREZOR_MODEL=T3T1 PYOPT=1 make -C core build_firmware`)

[no changelog]
2025-04-24 17:27:21 +03:00
Roman Zeyde
879cc69c63 perf(core): intern non-alphanumeric characters
It was found by running `micropython.mem_info()` with the following patch:
```diff
diff --git a/py/gc.c b/py/gc.c
index 604334c95..bff62b754 100644
--- a/py/gc.c
+++ b/py/gc.c
@@ -840,6 +840,7 @@ void gc_dump_info(void) {
         (uint)info.total, (uint)info.used, (uint)info.free);
     mp_printf(&mp_plat_print, " No. of 1-blocks: %u, 2-blocks: %u, max blk sz: %u, max free sz: %u\n",
         (uint)info.num_1block, (uint)info.num_2block, (uint)info.max_block, (uint)info.max_free);
+    qstr_dump_data();
 }

 void gc_dump_alloc_table(void) {
```

New QSTR definitions:
```
$ tail -n4 ./core/build/unix/genhdr/qstrdefs.generated.h
QDEF(MP_QSTR__paren_close_, 46476, 1, ")")
QDEF(MP_QSTR__paren_open_, 46477, 1, "(")
QDEF(MP_QSTR__lt_, 46489, 1, "<")
QDEF(MP_QSTR__semicolon_, 46494, 1, ";")
```

[no changelog]
2025-04-07 20:19:31 +03:00
Martin Milata
199c02adb2 build(core): only include apps.management.ble when needed
[no changelog]
2025-04-03 16:17:12 +02:00
Roman Zeyde
567de7e643 feat(core): increase MicroPython bytecode optimizations
[no changelog]
2025-03-28 19:46:24 +03:00
Roman Zeyde
cc416720f0 build(core): explicitly map PYOPT to MicroPython bytecode optimization level
[no changelog]
2025-03-28 19:46:24 +03:00
tychovrahe
b7b8e77ccb feat(core): enable tropic in firmware/kernel on hw
[no changelog]
2025-03-27 11:59:10 +01:00
Roman Zeyde
4c2c6f13e7 fix(core): add BLE feature flag to MicroPython build sed scripts
[no changelog]
2025-03-20 15:22:32 +02:00
Roman Zeyde
5fd168c363 feat(core): dump GC arena on OOM
Enabled for debug firmware and non-frozen emulator.

JSON dump can be extracted from debug log and analyzed using:

$ awk '/^\[$/,/^\]$/' <debug.log >dump.json
$ core/tools/analyze-memory-dump.py dump.json

[no changelog]
2025-03-17 20:17:42 +02:00
Roman Zeyde
2333a6a262 feat(core): log GC info in case of OOM
Enabled on debug firmware and non-frozen emulator.

[no changelog]
2025-03-17 20:17:42 +02:00
Roman Zeyde
90d7713592 build(core): fix RUST_PRINT_TYPES_SIZES passing to SConscript.firmware
Use a list to collect RUSTFLAGS, to prevent overwriting them.

Also:
- fix a typo in `SConscript.unix` (it was using `firmware` build directory)
- use keyword arguments for better readability
- reformat Rust library build command string

[no changelog]
2025-03-13 18:18:48 +02:00
Ioan Bizău
3efa0480c6 feat(core): add libtropic to the unix build
[no changelog]
2025-03-13 15:08:48 +01:00
Roman Zeyde
c95158751a build(core): allow increasing VCP write timeout
It should allow us exporting larger amounts of debug data.

[no changelog]
2025-03-13 16:07:09 +02:00
Roman Zeyde
21ad24fc31 style(core): add spaces around LOG_STACK_USAGE in SConscript.firmware
[no changelog]
2025-03-13 16:07:09 +02:00
Roman Zeyde
6f3e5a6cd7 feat(core): estimate workflow stack usage
By zeroing the stack memory before the workflow runs,
we can estimate how much of it has been used (by reading
the stack memory and looking for the first non-zero value).

[no changelog]
2025-03-04 14:18:15 +02:00