1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2025-04-22 10:09:04 +00:00
Commit Graph

55 Commits

Author SHA1 Message Date
M1nd3r
9c21c0b368 wip 2025-04-16 17:22:44 +02:00
Lukas Bielesch
09fb7a09ee fix(eckhart): fix failing gen_check 2025-04-16 17:11:08 +02:00
obrusvit
3a7e275fce feat(eckhart): initial commit
- build
- directory structure
- bootloader UI and assets copied from delizia
- FirmwareUI trait functions are empty
- Python layout functions are copied from delizia except some of more
complicated ones which raise NotImplemented for now
2025-04-16 17:11:06 +02:00
Roman Zeyde
d50181b7f9 fix(core): check QSTR run-time allocations only for frozen debug builds
[no changelog]
2025-04-15 14:22:47 +03:00
Martin Milata
2a40d91790 refactor(core): convert modtrezorio.ble to rust
[no changelog]
2025-04-15 13:08:37 +02:00
Roman Zeyde
9bd81926af feat(core): check for runtime QSTR allocations
[no changelog]
2025-04-14 22:42:16 +03:00
Roman Zeyde
c2dd63a6bd chore(core): move core/prof into core/src/prof
It would allow interning profiling-related QSTRs in debug emulator builds.

[no changelog]
2025-04-14 22:40:52 +03:00
Roman Zeyde
c90b30fbf7 chore(core): intern Monero-related QSTRs
[no changelog]
2025-04-14 22:39:24 +03:00
Roman Zeyde
599c17cd29 build(core): refactor qstrdefsport.h generation
Allow excluding debug-related QSTRs.

[no changelog]
2025-04-14 22:39:24 +03:00
cepetr
8a636bd9cf fix(core): make mod_trezorio_poll return False only on timeout
[no changelog]
2025-04-14 12:30:52 +02:00
Martin Milata
23cc83f3ba refactor(core): ble: expose connection state in micropython
[no changelog]
2025-04-09 21:25:37 +02:00
Martin Milata
fe20466ed7 fix(core): modtrezorio-ble cleanup
[no changelog]
2025-04-09 21:25:37 +02:00
Roman Zeyde
8df465d7e8 build(core): replace all_modules.py by qstrdefsport.h
[no changelog]
2025-04-07 20:19:31 +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
tychovrahe
51ff4f5946 feat(core): add unpair command to BLE
[no changelog]
2025-04-03 16:17:12 +02:00
Roman Zeyde
08bcedcaa5 fix(core): correct __main__ dict size retrieval in firmware
Otherwise, it fails to boot.

[no changelog]
2025-04-03 14:45:13 +03:00
Martin Milata
469f093b8a feat(core): include pairing code in BLE_ALLOW_PAIRING command
[no changelog]
2025-04-02 17:08:34 +02:00
Martin Milata
88706d12f8 feat(core): ble: expose allow/reject pairing in micropython
[no changelog]
2025-04-02 17:08:34 +02:00
Roman Zeyde
e6f96974de feat(core): check for sys.modules and main globals reallocations
Rewrite the static comparison in `utils.unimport_end()` in C.

[no changelog]
2025-04-02 16:01:51 +03:00
cepetr
7dcdb54262 feat(core): introduce new polling in coreapp event loop
[no changelog]
2025-04-01 10:00:26 +02:00
cepetr
7994a0b93b feat(core): introduce kernel event loop
[no changelog]
2025-04-01 10:00:26 +02:00
cepetr
2dff869883 feat(core): add event polling to ble driver
[no changelog]
2025-04-01 10:00:26 +02:00
Roman Zeyde
ad73e41080 feat(core): support USB/BLE sessions
All interfaces are sharing a single 8kB buffer.
It is reallocated once per session and is acquired by the first active session.
Other concurrent sessions will respond with an "Another session in progress" error.

[no changelog]
2025-03-31 13:20:53 +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
bafad6e453 chore(core): remove unused function from modtrezorutils-meminfo.h
[no changelog]
2025-03-26 21:16:06 +02:00
Roman Zeyde
48b2f07ad3 fix(core): correct dump_qstr_pool()
[no changelog]
2025-03-26 21:16:06 +02:00
Roman Zeyde
19f576123c feat(core): enable GC map dump on debug firmware
[no changelog]
2025-03-25 12:05:52 +02:00
Roman Zeyde
1e3b02771b fix(core): don't use 'static lifetime for BLEEvent
[no changelog]
2025-03-21 17:13:27 +02:00
Roman Zeyde
fabb5e8c6c perf(core): don't allocate if BLE event data is empty
BLE event data is not empty only on pairing:
```
core/embed/io/ble/stm32/ble.c
176:      ble_event_t event = {.type = BLE_CONNECTED};
182:      ble_event_t event = {.type = BLE_DISCONNECTED};
227:  ble_event_t event = {.type = BLE_PAIRING_REQUEST, .data_len = 6};
244:  ble_event_t event = {.type = BLE_PAIRING_CANCELLED, .data_len = 0};
```

[no changelog]
2025-03-20 15:22:32 +02:00
tychovrahe
6fb65bcfd9 refactor(core): refactor button events
[no changelog]
2025-03-20 11:07:34 +01:00
Roman Zeyde
f4328acfd6 fix(core): don't invoke dump_meminfo_json on emulator
[no changelog]
2025-03-20 11:05:01 +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
Ioan Bizău
3efa0480c6 feat(core): add libtropic to the unix build
[no changelog]
2025-03-13 15:08:48 +01: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
Andrew Kozlik
91ee49c20b chore(core, crypto): Remove unused function mnemonic_generate().
[no changelog]
2025-02-26 17:20:58 +01:00
tychovrahe
93f20bead1 feat(core/prodtest): add BLE testing
[no changelog]
2025-02-26 10:27:14 +01:00
Roman Zeyde
ffc4b57e70 docs(core): fix micropython GC arena analysis tool name
[no changelog]
2025-02-18 11:56:42 +01:00
tychovrahe
57789c7121 refactor(core): remove fonts and no longer used drawing functions from C
[no changelog]
2025-02-11 11:25:18 +01:00
obrusvit
cf5b89f90a refactor(core): get rid of font IDs in micropython
- application layer should not deal with fonts at all
- distinction between MONO and others is preserved by bool argument in
`should_show_more` interpreted as `is_data`

[no changelog]
2025-02-06 13:32:29 +01:00
tychovrahe
566f82ccd8 refactor(core): make homescreen max size model dependent
[no changelog]
2025-02-06 12:40:23 +01:00
tychovrahe
69a61e98e0 feat(core): adjust codec_v1 to work with differently sized RX and TX packets
[no changelog]
2025-01-23 16:46:12 +01:00
tychovrahe
5fd773757c fix(core): fix fading issues 2025-01-23 15:24:00 +01:00
tychovrahe
a5809c872e feat(core): add support for setting BLE name from Trezor firmware
[no changelog]
2025-01-23 13:27:59 +01:00
obrusvit
00740b560c refactor(core): consistent naming of UI layouts
- follow-up on 862c987779
- layout_bolt stays the same
- layout_samson -> layout_caesar
- layout_quicksilver -> layout_delizia
- use super for importing rust modules in layout code

[no changelog]
2025-01-20 12:29:24 +01:00
tychovrahe
b2a4db1463 feat(core): expose BLE functionality to micropython
[no changelog]
2025-01-14 09:15:12 +01:00
tychovrahe
eef2f4113f refactor(core): improve USB events handling, more extensible implementation
[no changelog]
2025-01-13 18:46:11 +01:00
tychovrahe
e4f4985584 refactor(core): split polling can_read and reading from USB
[no changelog]
2025-01-13 17:42:30 +01:00
obrusvit
862c987779 refactor(core): consistent naming of UI layouts
- UI layouts name changes:
  - model_tt -> layout_bolt
  - model_tr -> layout_samson
  - model_mercury -> layout_quicksilver
- rust features `model_xyz` freed for different use, now it's
`layout_xyz`
- input_flow function names are based on UI layout and not internal
model name (i.e. quicksilver instead of t3t1)
- directory names and commentary changed accordingly

[no changelog]
2025-01-09 22:57:14 +01:00
Andrew Kozlik
83a96f7a5a feat(core): Randomize SCM_REVISION address in firmware
[no changelog]
2025-01-03 10:23:41 +01:00