mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-12-23 14:58:09 +00:00
130 lines
3.2 KiB
Markdown
130 lines
3.2 KiB
Markdown
|
# Scripts for managing the project
|
||
|
|
||
|
This directory contains various scripts that are used either in some of the make
|
||
|
targets, or manually, to generate code, check its size, etc.
|
||
|
|
||
|
## Most used tools
|
||
|
|
||
|
### `headertool`
|
||
|
|
||
|
Lives in `trezor_core_tools/headertool.py` and is exposed as a CLI tool by the same
|
||
|
name.
|
||
|
|
||
|
Headertool can generate, analyze, and modify vendor and firmware headers. Use
|
||
|
`headertool --help` to get the full list of commands.
|
||
|
|
||
|
The most common usage is `headertool somefile.bin` that will dump header information.
|
||
|
|
||
|
Another useful feature is `headertool -V vendor_header.bin firmware.bin`, which will
|
||
|
replace the embedded vendor header in `firmware.bin` with the one in
|
||
|
`vendor_header.bin`.
|
||
|
|
||
|
### `build_mocks`
|
||
|
|
||
|
Generate `.pyi` stubs from C and Rust source files.
|
||
|
|
||
|
### `build_templates`
|
||
|
|
||
|
Regenerate sources from Mako templates.
|
||
|
|
||
|
### `build_vendorheader`
|
||
|
|
||
|
Generate a vendor header binary from a json description.
|
||
|
|
||
|
### `combine_firmware`
|
||
|
|
||
|
Combine a flashable image from a boardloader, bootloader, and firmware.
|
||
|
|
||
|
## Everything else
|
||
|
|
||
|
### `codegen`
|
||
|
|
||
|
Code generation tool for fonts, the loader graphic (deprecated) and cryptographic keys
|
||
|
(also deprecated).
|
||
|
|
||
|
### `dialog-designer`
|
||
|
|
||
|
Deprecated tool to visually preview multi-line dialogs in the old Trezor T UI.
|
||
|
|
||
|
### `gdb_scripts`
|
||
|
|
||
|
Scripts for GDB debugger.
|
||
|
|
||
|
### `hid-bridge`
|
||
|
|
||
|
Tool that creates a virtual HID device bridged to a UDP. This allows using the emulator
|
||
|
as a FIDO/U2F authenticator in a browser.
|
||
|
|
||
|
### `size`
|
||
|
|
||
|
Scripts to examine size of firmware.
|
||
|
|
||
|
### `snippets`
|
||
|
|
||
|
Ad-hoc scripts for various one-off tasks that could become useful again.
|
||
|
|
||
|
(the whole thing is prooobably deprecated by LLMs, which will regenerate any script on
|
||
|
demand).
|
||
|
|
||
|
### `translations`
|
||
|
|
||
|
Tools for checking validity of translation data and its usage.
|
||
|
|
||
|
### `trezor_core_tools`
|
||
|
|
||
|
A Python package that exposes certain functionalities as CLI commands.
|
||
|
|
||
|
`headertool` and `combine_firmware` live here, more may be moved or added.
|
||
|
|
||
|
One additional tool is `layout_parser`, which is used to extract memory layout
|
||
|
information from a model `.h` file.
|
||
|
|
||
|
### `alloc.py`
|
||
|
|
||
|
Generate a HTML report of allocation count per line of code, as captured when running
|
||
|
`emu.py -p`.
|
||
|
|
||
|
### `analyze-memory-dump.py`
|
||
|
|
||
|
Generate a HTML report of a state of the Micropython GC heap, as captured by
|
||
|
`trezor.utils.mem_dump` at some execution point.
|
||
|
|
||
|
### `build_icons.py`
|
||
|
|
||
|
Regenerate embedded TOIF icons for webauthn apps from png files.
|
||
|
|
||
|
### `coverage-report`
|
||
|
|
||
|
Combine coverage reports from multiple CI jobs and generate a report.
|
||
|
|
||
|
### `frozen_mpy_translator.py`
|
||
|
|
||
|
Translate bytecode instructions in frozen_mpy.c to human readable form.
|
||
|
|
||
|
### `generate_vendorheader.sh`
|
||
|
|
||
|
Uses `build_vendorheader` to rebuild all vendor headers for all models.
|
||
|
|
||
|
### `jpg_to_h.py`
|
||
|
|
||
|
Convert a JPG image to a C array that can be embedded into the firmware.
|
||
|
|
||
|
(TODO could we replace it with xxd -i?)
|
||
|
|
||
|
### `make_cmakelists.py`
|
||
|
|
||
|
Generate a CMakeLists.txt file for the core.
|
||
|
|
||
|
### `provision_device.py`
|
||
|
|
||
|
Run the provisioning flow on a prodtest firmware, against a staging provisioning server.
|
||
|
|
||
|
### `rust_api_checks.py`
|
||
|
|
||
|
Check that the Rust UI API is consistent with the Python UI API.
|
||
|
|
||
|
### `rust_api_models_unification.py`
|
||
|
|
||
|
Checks the consistency of the Rust API between models.
|
||
|
|