1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2024-12-05 14:08:39 +00:00
trezor-firmware/core/tools/README.md
matejcik 0ce00cbdb6 feat(core/tools): create a poetry-installable package from some cli tools
so that we can have them available globally inside the poetry shell
2024-08-28 16:15:10 +02:00

3.2 KiB

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.