mirror of
https://github.com/trezor/trezor-firmware.git
synced 2025-01-11 16:00:57 +00:00
embed: make model and emulator orthogonal, update macros to match this logic
This commit is contained in:
parent
5b5b593eb3
commit
e3607156d8
@ -109,7 +109,7 @@ env.Replace(
|
|||||||
'vendor/micropython/lib/cmsis/inc',
|
'vendor/micropython/lib/cmsis/inc',
|
||||||
] + CPPPATH_MOD,
|
] + CPPPATH_MOD,
|
||||||
CPPDEFINES=[
|
CPPDEFINES=[
|
||||||
'TREZOR_MODEL_T',
|
('TREZOR_MODEL', 'T'),
|
||||||
'STM32F427xx',
|
'STM32F427xx',
|
||||||
'USE_HAL_DRIVER',
|
'USE_HAL_DRIVER',
|
||||||
('STM32_HAL_H', '"<stm32f4xx.h>"'),
|
('STM32_HAL_H', '"<stm32f4xx.h>"'),
|
||||||
|
@ -131,7 +131,7 @@ env.Replace(
|
|||||||
'vendor/micropython/lib/cmsis/inc',
|
'vendor/micropython/lib/cmsis/inc',
|
||||||
] + CPPPATH_MOD,
|
] + CPPPATH_MOD,
|
||||||
CPPDEFINES=[
|
CPPDEFINES=[
|
||||||
'TREZOR_MODEL_T',
|
('TREZOR_MODEL', 'T'),
|
||||||
'STM32F427xx',
|
'STM32F427xx',
|
||||||
'USE_HAL_DRIVER',
|
'USE_HAL_DRIVER',
|
||||||
('STM32_HAL_H', '"<stm32f4xx.h>"'),
|
('STM32_HAL_H', '"<stm32f4xx.h>"'),
|
||||||
|
@ -324,7 +324,7 @@ env.Replace(
|
|||||||
'vendor/micropython/ports/stm32',
|
'vendor/micropython/ports/stm32',
|
||||||
] + CPPPATH_MOD,
|
] + CPPPATH_MOD,
|
||||||
CPPDEFINES=[
|
CPPDEFINES=[
|
||||||
'TREZOR_MODEL_T',
|
('TREZOR_MODEL', 'T'),
|
||||||
'STM32F427xx',
|
'STM32F427xx',
|
||||||
'USE_HAL_DRIVER',
|
'USE_HAL_DRIVER',
|
||||||
('STM32_HAL_H', '"<stm32f4xx.h>"'),
|
('STM32_HAL_H', '"<stm32f4xx.h>"'),
|
||||||
|
@ -98,7 +98,7 @@ env.Replace(
|
|||||||
'vendor/micropython/ports/stm32',
|
'vendor/micropython/ports/stm32',
|
||||||
] + CPPPATH_MOD,
|
] + CPPPATH_MOD,
|
||||||
CPPDEFINES=[
|
CPPDEFINES=[
|
||||||
'TREZOR_MODEL_T',
|
('TREZOR_MODEL', 'T'),
|
||||||
'STM32F427xx',
|
'STM32F427xx',
|
||||||
('STM32_HAL_H', '"<stm32f4xx_hal.h>"'),
|
('STM32_HAL_H', '"<stm32f4xx_hal.h>"'),
|
||||||
] + CPPDEFINES_MOD,
|
] + CPPDEFINES_MOD,
|
||||||
|
@ -98,7 +98,7 @@ env.Replace(
|
|||||||
'vendor/micropython/ports/stm32',
|
'vendor/micropython/ports/stm32',
|
||||||
] + CPPPATH_MOD,
|
] + CPPPATH_MOD,
|
||||||
CPPDEFINES=[
|
CPPDEFINES=[
|
||||||
'TREZOR_MODEL_T',
|
('TREZOR_MODEL', 'T'),
|
||||||
'STM32F427xx',
|
'STM32F427xx',
|
||||||
('STM32_HAL_H', '"<stm32f4xx_hal.h>"'),
|
('STM32_HAL_H', '"<stm32f4xx_hal.h>"'),
|
||||||
] + CPPDEFINES_MOD,
|
] + CPPDEFINES_MOD,
|
||||||
|
@ -265,8 +265,8 @@ env.Replace(
|
|||||||
'vendor/micropython/lib/mp-readline',
|
'vendor/micropython/lib/mp-readline',
|
||||||
] + CPPPATH_MOD,
|
] + CPPPATH_MOD,
|
||||||
CPPDEFINES=[
|
CPPDEFINES=[
|
||||||
'UNIX',
|
'TREZOR_EMULATOR',
|
||||||
'TREZOR_MODEL_EMU',
|
('TREZOR_MODEL', 'T'),
|
||||||
'MICROPY_USE_READLINE',
|
'MICROPY_USE_READLINE',
|
||||||
('MP_CONFIGFILE', '\\"embed/unix/mpconfigport.h\\"'),
|
('MP_CONFIGFILE', '\\"embed/unix/mpconfigport.h\\"'),
|
||||||
] + CPPDEFINES_MOD,
|
] + CPPDEFINES_MOD,
|
||||||
|
@ -35,7 +35,7 @@ STATIC mp_obj_t mod_trezorio_SDCard_make_new(const mp_obj_type_t *type, size_t n
|
|||||||
mp_arg_check_num(n_args, n_kw, 0, 0, false);
|
mp_arg_check_num(n_args, n_kw, 0, 0, false);
|
||||||
mp_obj_SDCard_t *o = m_new_obj(mp_obj_SDCard_t);
|
mp_obj_SDCard_t *o = m_new_obj(mp_obj_SDCard_t);
|
||||||
o->base.type = type;
|
o->base.type = type;
|
||||||
#if defined TREZOR_MODEL_EMU
|
#ifdef TREZOR_EMULATOR
|
||||||
sdcard_init();
|
sdcard_init();
|
||||||
#endif
|
#endif
|
||||||
return MP_OBJ_FROM_PTR(o);
|
return MP_OBJ_FROM_PTR(o);
|
||||||
|
@ -47,12 +47,10 @@ static struct {
|
|||||||
int x, y;
|
int x, y;
|
||||||
} DISPLAY_OFFSET;
|
} DISPLAY_OFFSET;
|
||||||
|
|
||||||
#if defined TREZOR_MODEL_T
|
#ifdef TREZOR_EMULATOR
|
||||||
#include "display-stm32.h"
|
|
||||||
#elif defined TREZOR_MODEL_EMU
|
|
||||||
#include "display-unix.h"
|
#include "display-unix.h"
|
||||||
#else
|
#else
|
||||||
#error Unsupported TREZOR port. Only STM32 and UNIX ports are supported.
|
#include "display-stm32.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// common display functions
|
// common display functions
|
||||||
@ -392,7 +390,7 @@ void display_print(const char *text, int textlen)
|
|||||||
display_refresh();
|
display_refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef TREZOR_MODEL_EMU
|
#ifdef TREZOR_EMULATOR
|
||||||
#define mini_vsnprintf vsnprintf
|
#define mini_vsnprintf vsnprintf
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#else
|
#else
|
||||||
|
@ -107,7 +107,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_trezorutils_halt_obj, 0, 1, mod_t
|
|||||||
/// Set unprivileged mode.
|
/// Set unprivileged mode.
|
||||||
/// '''
|
/// '''
|
||||||
STATIC mp_obj_t mod_trezorutils_set_mode_unprivileged(void) {
|
STATIC mp_obj_t mod_trezorutils_set_mode_unprivileged(void) {
|
||||||
#if defined TREZOR_MODEL_T
|
#ifndef TREZOR_EMULATOR
|
||||||
__asm__ volatile("msr control, %0" :: "r" (0x1));
|
__asm__ volatile("msr control, %0" :: "r" (0x1));
|
||||||
__asm__ volatile("isb");
|
__asm__ volatile("isb");
|
||||||
#endif
|
#endif
|
||||||
@ -120,11 +120,11 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_0(mod_trezorutils_set_mode_unprivileged_obj, mod_
|
|||||||
/// Retrieve internal symbol.
|
/// Retrieve internal symbol.
|
||||||
/// '''
|
/// '''
|
||||||
STATIC mp_obj_t mod_trezorutils_symbol(mp_obj_t name) {
|
STATIC mp_obj_t mod_trezorutils_symbol(mp_obj_t name) {
|
||||||
|
#define XSTR(s) STR(s)
|
||||||
|
#define STR(s) #s
|
||||||
mp_buffer_info_t str;
|
mp_buffer_info_t str;
|
||||||
mp_get_buffer_raise(name, &str, MP_BUFFER_READ);
|
mp_get_buffer_raise(name, &str, MP_BUFFER_READ);
|
||||||
if (0 == strncmp(str.buf, "GITREV", str.len)) {
|
if (0 == strncmp(str.buf, "GITREV", str.len)) {
|
||||||
#define XSTR(s) STR(s)
|
|
||||||
#define STR(s) #s
|
|
||||||
return mp_obj_new_str(XSTR(GITREV), strlen(XSTR(GITREV)));
|
return mp_obj_new_str(XSTR(GITREV), strlen(XSTR(GITREV)));
|
||||||
}
|
}
|
||||||
if (0 == strncmp(str.buf, "VERSION_MAJOR", str.len)) {
|
if (0 == strncmp(str.buf, "VERSION_MAJOR", str.len)) {
|
||||||
@ -136,25 +136,20 @@ STATIC mp_obj_t mod_trezorutils_symbol(mp_obj_t name) {
|
|||||||
if (0 == strncmp(str.buf, "VERSION_PATCH", str.len)) {
|
if (0 == strncmp(str.buf, "VERSION_PATCH", str.len)) {
|
||||||
return mp_obj_new_int(VERSION_PATCH);
|
return mp_obj_new_int(VERSION_PATCH);
|
||||||
}
|
}
|
||||||
|
if (0 == strncmp(str.buf, "MODEL", str.len)) {
|
||||||
|
return mp_obj_new_str(XSTR(TREZOR_MODEL), strlen(XSTR(TREZOR_MODEL)));
|
||||||
|
}
|
||||||
|
if (0 == strncmp(str.buf, "EMULATOR", str.len)) {
|
||||||
|
#ifdef TREZOR_EMULATOR
|
||||||
|
return mp_const_true;
|
||||||
|
#else
|
||||||
|
return mp_const_false;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
return mp_const_none;
|
return mp_const_none;
|
||||||
}
|
}
|
||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorutils_symbol_obj, mod_trezorutils_symbol);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorutils_symbol_obj, mod_trezorutils_symbol);
|
||||||
|
|
||||||
/// def model() -> str:
|
|
||||||
/// '''
|
|
||||||
/// Return which hardware model we are running on.
|
|
||||||
/// '''
|
|
||||||
STATIC mp_obj_t mod_trezorutils_model(void) {
|
|
||||||
const char *model = NULL;
|
|
||||||
#if defined TREZOR_MODEL_T
|
|
||||||
model = "T";
|
|
||||||
#elif defined TREZOR_MODEL_EMU
|
|
||||||
model = "EMU";
|
|
||||||
#endif
|
|
||||||
return model ? mp_obj_new_str(model, strlen(model)) : mp_const_none;
|
|
||||||
}
|
|
||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_0(mod_trezorutils_model_obj, mod_trezorutils_model);
|
|
||||||
|
|
||||||
STATIC const mp_rom_map_elem_t mp_module_trezorutils_globals_table[] = {
|
STATIC const mp_rom_map_elem_t mp_module_trezorutils_globals_table[] = {
|
||||||
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_trezorutils) },
|
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_trezorutils) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_consteq), MP_ROM_PTR(&mod_trezorutils_consteq_obj) },
|
{ MP_ROM_QSTR(MP_QSTR_consteq), MP_ROM_PTR(&mod_trezorutils_consteq_obj) },
|
||||||
@ -162,7 +157,6 @@ STATIC const mp_rom_map_elem_t mp_module_trezorutils_globals_table[] = {
|
|||||||
{ MP_ROM_QSTR(MP_QSTR_halt), MP_ROM_PTR(&mod_trezorutils_halt_obj) },
|
{ MP_ROM_QSTR(MP_QSTR_halt), MP_ROM_PTR(&mod_trezorutils_halt_obj) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_set_mode_unprivileged), MP_ROM_PTR(&mod_trezorutils_set_mode_unprivileged_obj) },
|
{ MP_ROM_QSTR(MP_QSTR_set_mode_unprivileged), MP_ROM_PTR(&mod_trezorutils_set_mode_unprivileged_obj) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_symbol), MP_ROM_PTR(&mod_trezorutils_symbol_obj) },
|
{ MP_ROM_QSTR(MP_QSTR_symbol), MP_ROM_PTR(&mod_trezorutils_symbol_obj) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_model), MP_ROM_PTR(&mod_trezorutils_model_obj) },
|
|
||||||
};
|
};
|
||||||
|
|
||||||
STATIC MP_DEFINE_CONST_DICT(mp_module_trezorutils_globals, mp_module_trezorutils_globals_table);
|
STATIC MP_DEFINE_CONST_DICT(mp_module_trezorutils_globals, mp_module_trezorutils_globals_table);
|
||||||
|
@ -15,9 +15,7 @@ def get_features():
|
|||||||
f.minor_version = utils.symbol("VERSION_MINOR")
|
f.minor_version = utils.symbol("VERSION_MINOR")
|
||||||
f.patch_version = utils.symbol("VERSION_PATCH")
|
f.patch_version = utils.symbol("VERSION_PATCH")
|
||||||
f.revision = utils.symbol("GITREV")
|
f.revision = utils.symbol("GITREV")
|
||||||
f.model = utils.model()
|
f.model = utils.symbol("MODEL")
|
||||||
if f.model == "EMU":
|
|
||||||
f.model = "T" # emulator currently emulates model T
|
|
||||||
f.device_id = storage.get_device_id()
|
f.device_id = storage.get_device_id()
|
||||||
f.label = storage.get_label()
|
f.label = storage.get_label()
|
||||||
f.initialized = storage.is_initialized()
|
f.initialized = storage.is_initialized()
|
||||||
|
@ -3,8 +3,7 @@ import utime
|
|||||||
from micropython import const
|
from micropython import const
|
||||||
from trezorui import Display
|
from trezorui import Display
|
||||||
|
|
||||||
from trezor import io, loop, res, workflow
|
from trezor import io, loop, res, workflow, utils
|
||||||
from trezor.utils import model
|
|
||||||
|
|
||||||
display = Display()
|
display = Display()
|
||||||
|
|
||||||
@ -18,7 +17,7 @@ if __debug__:
|
|||||||
loop.after_step_hook = debug_display_refresh
|
loop.after_step_hook = debug_display_refresh
|
||||||
|
|
||||||
# in both debug and production, emulator needs to draw the screen explicitly
|
# in both debug and production, emulator needs to draw the screen explicitly
|
||||||
elif model() == "EMU":
|
elif utils.symbol("EMULATOR"):
|
||||||
loop.after_step_hook = display.refresh
|
loop.after_step_hook = display.refresh
|
||||||
|
|
||||||
# re-export constants from modtrezorui
|
# re-export constants from modtrezorui
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import gc
|
import gc
|
||||||
import sys
|
import sys
|
||||||
from trezorutils import halt, memcpy, model, set_mode_unprivileged, symbol # noqa: F401
|
from trezorutils import halt, memcpy, set_mode_unprivileged, symbol # noqa: F401
|
||||||
|
|
||||||
|
|
||||||
def unimport_begin():
|
def unimport_begin():
|
||||||
|
Loading…
Reference in New Issue
Block a user