refactor(core): improve flexibility of build, allow different touch panel driver, allow STM32F429

[no changelog]
pull/2659/merge
tychovrahe 1 year ago committed by Martin Milata
parent b049abff15
commit ead61d1e90

@ -18,6 +18,8 @@ if TREZOR_MODEL in ('1', ):
)
Return()
FEATURES_WANTED = ["sdcard"]
CCFLAGS_MOD = ''
CPPPATH_MOD = []
CPPDEFINES_MOD = []
@ -92,7 +94,6 @@ SOURCE_TREZORHAL = [
'embed/trezorhal/flash.c',
'embed/trezorhal/lowlevel.c',
'embed/trezorhal/mini_printf.c',
'embed/trezorhal/sdcard.c',
'embed/trezorhal/stm32.c',
'embed/trezorhal/systick.c',
'embed/trezorhal/rng.c',
@ -102,7 +103,7 @@ SOURCE_TREZORHAL = [
env = Environment(ENV=os.environ, CFLAGS='%s -DPRODUCTION=%s' % (ARGUMENTS.get('CFLAGS', ''), ARGUMENTS.get('PRODUCTION', '0')))
tools.configure_board(TREZOR_MODEL, env, CPPDEFINES_MOD, SOURCE_TREZORHAL)
FEATURES_AVAILABLE = tools.configure_board(TREZOR_MODEL, FEATURES_WANTED, env, CPPDEFINES_MOD, SOURCE_TREZORHAL)
env.Replace(
CP='cp',

@ -19,6 +19,8 @@ if TREZOR_MODEL in ('1', ):
)
Return()
FEATURES_WANTED = ["input", "rgb_led"]
CCFLAGS_MOD = ''
CPPPATH_MOD = []
CPPDEFINES_MOD = []
@ -133,12 +135,6 @@ SOURCE_TREZORHAL = [
'embed/trezorhal/vectortable.s',
]
if TREZOR_MODEL in ('R'):
SOURCE_TREZORHAL.append('embed/trezorhal/button.c')
SOURCE_TREZORHAL.append('embed/trezorhal/rgb_led.c')
if TREZOR_MODEL in ('T',):
SOURCE_TREZORHAL.append('embed/trezorhal/touch.c')
if DMA2D:
SOURCE_STMHAL.append('vendor/micropython/lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma2d.c')
SOURCE_TREZORHAL.append('embed/trezorhal/dma2d.c')
@ -155,7 +151,7 @@ tools.add_font('MONO', FONT_MONO, CPPDEFINES_MOD, SOURCE_MOD)
env = Environment(ENV=os.environ, CFLAGS='%s -DPRODUCTION=%s' % (ARGUMENTS.get('CFLAGS', ''), ARGUMENTS.get('PRODUCTION', '0')))
tools.configure_board(TREZOR_MODEL, env, CPPDEFINES_MOD, SOURCE_TREZORHAL)
FEATURES_AVAILABLE = tools.configure_board(TREZOR_MODEL, FEATURES_WANTED, env, CPPDEFINES_MOD, SOURCE_TREZORHAL)
env.Replace(
CP='cp',

@ -18,6 +18,8 @@ if TREZOR_MODEL in ('1', ):
)
Return()
FEATURES_WANTED = ["input"]
CCFLAGS_MOD = ''
CPPPATH_MOD = []
CPPDEFINES_MOD = []
@ -77,6 +79,7 @@ SOURCE_MOD += [
SOURCE_STMHAL = [
'vendor/micropython/lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c',
'vendor/micropython/lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c',
'vendor/micropython/lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c',
'vendor/micropython/lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c',
'vendor/micropython/lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c',
'vendor/micropython/lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c',
@ -120,7 +123,6 @@ SOURCE_TREZORHAL = [
'embed/trezorhal/rng.c',
'embed/trezorhal/stm32.c',
'embed/trezorhal/systick.c',
'embed/trezorhal/touch.c',
'embed/trezorhal/usb.c',
'embed/trezorhal/usbd_conf.c',
'embed/trezorhal/usbd_core.c',
@ -138,7 +140,7 @@ tools.add_font('MONO', FONT_MONO, CPPDEFINES_MOD, SOURCE_MOD)
env = Environment(ENV=os.environ, CFLAGS='%s -DPRODUCTION=%s' % (ARGUMENTS.get('CFLAGS', ''), ARGUMENTS.get('PRODUCTION', '0')))
tools.configure_board(TREZOR_MODEL, env, CPPDEFINES_MOD, SOURCE_TREZORHAL)
FEATURES_AVAILABLE = tools.configure_board(TREZOR_MODEL, FEATURES_WANTED, env, CPPDEFINES_MOD, SOURCE_TREZORHAL)
env.Replace(
CP='cp',

@ -16,6 +16,8 @@ FEATURE_FLAGS = {
"SYSTEM_VIEW": False,
}
FEATURES_WANTED = ["input", "sbu", "sdcard", "rgb_led"]
CCFLAGS_MOD = ''
CPPPATH_MOD = []
CPPDEFINES_MOD = []
@ -376,21 +378,6 @@ SOURCE_TREZORHAL = [
'embed/trezorhal/util.s',
'embed/trezorhal/vectortable.s',
]
if TREZOR_MODEL in ('T',):
SOURCE_TREZORHAL += [
'embed/trezorhal/sbu.c',
'embed/trezorhal/sdcard.c',
'embed/trezorhal/touch.c',
]
elif TREZOR_MODEL in ('R',):
SOURCE_TREZORHAL += [
'embed/trezorhal/button.c',
'embed/trezorhal/rgb_led.c',
]
elif TREZOR_MODEL in ('1',):
SOURCE_TREZORHAL += [
'embed/trezorhal/button.c',
]
if DMA2D:
@ -435,7 +422,7 @@ SOURCE_QSTR = SOURCE_MOD + SOURCE_MICROPYTHON + SOURCE_MICROPYTHON_SPEED
env = Environment(ENV=os.environ, CFLAGS='%s -DPRODUCTION=%s -DPYOPT=%s -DBITCOIN_ONLY=%s' % (ARGUMENTS.get('CFLAGS', ''), ARGUMENTS.get('PRODUCTION', '0'), PYOPT, BITCOIN_ONLY))
tools.configure_board(TREZOR_MODEL, env, CPPDEFINES_MOD, SOURCE_TREZORHAL)
FEATURES_AVAILABLE = tools.configure_board(TREZOR_MODEL, FEATURES_WANTED, env, CPPDEFINES_MOD, SOURCE_TREZORHAL)
env.Tool('micropython')

@ -6,6 +6,8 @@ import tools
TREZOR_MODEL = ARGUMENTS.get('TREZOR_MODEL', 'T')
CMAKELISTS = int(ARGUMENTS.get('CMAKELISTS', 0))
FEATURES_WANTED = ["input", "sbu", "sdcard", "rdb_led"]
CCFLAGS_MOD = ''
CPPPATH_MOD = []
CPPDEFINES_MOD = []
@ -85,11 +87,8 @@ SOURCE_TREZORHAL = [
'embed/trezorhal/mini_printf.c',
'embed/trezorhal/random_delays.c',
'embed/trezorhal/rng.c',
'embed/trezorhal/sbu.c',
'embed/trezorhal/sdcard.c',
'embed/trezorhal/stm32.c',
'embed/trezorhal/systick.c',
'embed/trezorhal/touch.c',
'embed/trezorhal/usb.c',
'embed/trezorhal/usbd_conf.c',
'embed/trezorhal/usbd_core.c',
@ -107,7 +106,7 @@ tools.add_font('MONO', FONT_MONO, CPPDEFINES_MOD, SOURCE_MOD)
env = Environment(ENV=os.environ, CFLAGS='%s -DPRODUCTION=%s' % (ARGUMENTS.get('CFLAGS', ''), ARGUMENTS.get('PRODUCTION', '0')))
tools.configure_board(TREZOR_MODEL, env, CPPDEFINES_MOD, SOURCE_TREZORHAL)
FEATURES_AVAILABLE = tools.configure_board(TREZOR_MODEL, FEATURES_WANTED, env, CPPDEFINES_MOD, SOURCE_TREZORHAL)
env.Replace(
CP='cp',

@ -6,6 +6,8 @@ import tools
TREZOR_MODEL = ARGUMENTS.get('TREZOR_MODEL', 'T')
CMAKELISTS = int(ARGUMENTS.get('CMAKELISTS', 0))
FEATURES_WANTED = ["input", "sdcard"]
CCFLAGS_MOD = ''
CPPPATH_MOD = []
CPPDEFINES_MOD = []
@ -78,11 +80,8 @@ SOURCE_TREZORHAL = [
'embed/trezorhal/flash.c',
'embed/trezorhal/mini_printf.c',
'embed/trezorhal/rng.c',
'embed/trezorhal/sbu.c',
'embed/trezorhal/sdcard.c',
'embed/trezorhal/systick.c',
'embed/trezorhal/stm32.c',
'embed/trezorhal/touch.c',
'embed/trezorhal/usb.c',
'embed/trezorhal/usbd_conf.c',
'embed/trezorhal/usbd_core.c',
@ -100,7 +99,7 @@ tools.add_font('MONO', FONT_MONO, CPPDEFINES_MOD, SOURCE_MOD)
env = Environment(ENV=os.environ, CFLAGS='%s -DPRODUCTION=%s' % (ARGUMENTS.get('CFLAGS', ''), ARGUMENTS.get('PRODUCTION', '0')))
tools.configure_board(TREZOR_MODEL, env, CPPDEFINES_MOD, SOURCE_TREZORHAL)
FEATURES_AVAILABLE = tools.configure_board(TREZOR_MODEL, FEATURES_WANTED, env, CPPDEFINES_MOD, SOURCE_TREZORHAL)
env.Replace(
CP='cp',

@ -340,7 +340,7 @@ SOURCE_UNIX = [
'embed/unix/profile.c',
'embed/unix/random_delays.c',
'embed/unix/rng.c',
'embed/unix/touch.c',
'embed/unix/touch/touch.c',
'embed/unix/usb.c',
'vendor/micropython/shared/runtime/gchelper_generic.c',
'vendor/micropython/ports/unix/alloc.c',

@ -26,7 +26,7 @@
#include "flash.h"
#include "image.h"
#include "rng.h"
#ifdef TREZOR_MODEL_T
#ifdef USE_SD_CARD
#include "sdcard.h"
#endif
@ -68,7 +68,7 @@ struct BoardCapabilities capablities
extern uint32_t sram_start[];
#define sdcard_buf sram_start
#if defined TREZOR_MODEL_T
#if defined USE_SD_CARD
static uint32_t check_sdcard(void) {
if (sectrue != sdcard_power_on()) {
return 0;
@ -218,7 +218,7 @@ int main(void) {
display_init();
display_clear();
#if defined TREZOR_MODEL_T
#if defined USE_SD_CARD
sdcard_init();
if (check_sdcard()) {

@ -34,12 +34,12 @@
#include "mini_printf.h"
#include "version.h"
#if defined TREZOR_MODEL_T
#include "touch.h"
#elif defined TREZOR_MODEL_R
#if defined USE_TOUCH
#include "touch/touch.h"
#elif defined USE_BUTTON
#include "button.h"
#else
#error Unknown Trezor model
#error No input method defined
#endif
#define BACKLIGHT_NORMAL 150
@ -376,7 +376,7 @@ void ui_fadeout(void) {
int ui_user_input(int zones) {
for (;;) {
#if defined TREZOR_MODEL_T
#if defined USE_TOUCH
uint32_t evt = touch_click();
uint16_t x = touch_unpack_x(evt);
uint16_t y = touch_unpack_y(evt);
@ -400,7 +400,7 @@ int ui_user_input(int zones) {
y < 54 + 32) {
return INPUT_INFO;
}
#elif defined TREZOR_MODEL_R
#elif defined USE_BUTTON
uint32_t evt = button_read();
if (evt == (BTN_LEFT | BTN_EVT_DOWN)) {
return INPUT_CANCEL;
@ -409,7 +409,7 @@ int ui_user_input(int zones) {
return INPUT_CONFIRM;
}
#else
#error Unknown Trezor model
#error No input method defined
#endif
}
}

@ -30,12 +30,16 @@
#include "random_delays.h"
#include "secbool.h"
#include "stm32.h"
#ifdef TREZOR_MODEL_T
#ifdef USE_DMA2D
#include "dma2d.h"
#include "touch.h"
#endif
#if defined TREZOR_MODEL_R
#ifdef USE_TOUCH
#include "touch/touch.h"
#endif
#ifdef USE_BUTTON
#include "button.h"
#endif
#ifdef USE_RGB_LED
#include "rgb_led.h"
#endif
#include "usb.h"
@ -259,12 +263,16 @@ int main(void) {
#if defined TREZOR_MODEL_T
set_core_clock(CLOCK_180_MHZ);
display_set_little_endian();
#endif
#ifdef USE_TOUCH
touch_power_on();
touch_init();
#endif
#if defined TREZOR_MODEL_R
#ifdef USE_BUTTON
button_init();
#endif
#ifdef USE_RGB_LED
rgb_led_init();
#endif
@ -285,7 +293,7 @@ int main(void) {
// delay to detect touch or skip if we know we are staying in bootloader
// anyway
uint32_t touched = 0;
#if defined TREZOR_MODEL_T
#ifdef USE_TOUCH
if (stay_in_bootloader != sectrue) {
for (int i = 0; i < 100; i++) {
touched = touch_is_detected() | touch_read();
@ -295,7 +303,7 @@ int main(void) {
hal_delay(1);
}
}
#elif defined TREZOR_MODEL_R
#elif defined USE_BUTTON
button_read();
if (button_state_left() == 1) {
touched = 1;
@ -425,9 +433,9 @@ int main(void) {
if ((vhdr.vtrust & VTRUST_CLICK) == 0) {
ui_screen_boot_click();
#if defined TREZOR_MODEL_T
#if defined USE_TOUCH
touch_click();
#elif defined TREZOR_MODEL_R
#elif defined USE_BUTTON
for (;;) {
button_read();
if (button_state_left() != 0 && button_state_right() != 0) {

@ -29,7 +29,9 @@
#include "random_delays.h"
#include "rng.h"
#include "secbool.h"
#include "touch.h"
#ifdef USE_TOUCH
#include "touch/touch.h"
#endif
#include "usb.h"
#include "version.h"
@ -215,8 +217,10 @@ static void check_bootloader_version(void) {
int main(void) {
random_delays_init();
#ifdef USE_TOUCH
touch_init();
touch_power_on();
#endif
mpu_config_bootloader();

@ -28,7 +28,7 @@
#include <unistd.h>
#include "button.h"
#include "touch.h"
#include "touch/touch.h"
#include "usb.h"
// Whether USB data pins were connected on last check (USB configured)

@ -44,24 +44,28 @@
#include "image.h"
#include "mpu.h"
#include "random_delays.h"
#ifdef TREZOR_MODEL_R
#ifdef USE_RGB_LED
#include "rgb_led.h"
#endif
#ifdef TREZOR_MODEL_T
#ifdef USE_DMA2D
#include "dma2d.h"
#endif
#if defined TREZOR_MODEL_R || defined TREZOR_MODEL_1
#ifdef USE_BUTTON
#include "button.h"
#endif
#ifdef USE_TOUCH
#include "touch/touch.h"
#endif
#ifdef USE_SD_CARD
#include "sdcard.h"
#endif
#ifdef SYSTEM_VIEW
#include "systemview.h"
#endif
#include "rng.h"
#include "sdcard.h"
#include "stm32.h"
#include "supervise.h"
#include "touch.h"
#ifdef USE_SECP256K1_ZKP
#include "zkp_context.h"
#endif
@ -111,18 +115,23 @@ int main(void) {
SCB->SHCSR |= (SCB_SHCSR_USGFAULTENA_Msk | SCB_SHCSR_BUSFAULTENA_Msk);
#endif
#if defined TREZOR_MODEL_1
button_init();
#if defined TREZOR_MODEL_T
set_core_clock(CLOCK_180_MHZ);
#endif
#if defined TREZOR_MODEL_R
#ifdef USE_BUTTON
button_init();
#endif
#ifdef USE_RGB_LED
rgb_led_init();
#endif
#if defined TREZOR_MODEL_T
set_core_clock(CLOCK_180_MHZ);
#ifdef USE_TOUCH
touch_init();
#endif
#ifdef USE_SD_CARD
sdcard_init();
#endif

@ -32,7 +32,7 @@
#include "sbu.h"
#include "sdcard.h"
#include "secbool.h"
#include "touch.h"
#include "touch/touch.h"
#include "usb.h"
#include "memzero.h"

@ -31,7 +31,7 @@
#include "sbu.h"
#include "sdcard.h"
#include "secbool.h"
#include "touch.h"
#include "touch/touch.h"
static void progress_callback(int pos, int len) { display_printf("."); }

@ -1,6 +1,8 @@
#ifndef _TREZOR_1_H
#define _TREZOR_1_H
#define USE_BUTTON 1
#include "displays/vg-2864ksweg01.h"
#define BTN_LEFT_PIN GPIO_PIN_5

@ -1,6 +1,9 @@
#ifndef _TREZOR_R_V3_H
#define _TREZOR_R_V3_H
#define USE_BUTTON 1
#define USE_SBU 1
#include "displays/ug-2828tswig01.h"
#define BTN_LEFT_PIN GPIO_PIN_0

@ -1,6 +1,9 @@
#ifndef _TREZOR_R_V4_H
#define _TREZOR_R_V4_H
#define USE_BUTTON 1
#define USE_SBU 1
#include "displays/vg-2864ksweg01.h"
#define BTN_LEFT_PIN GPIO_PIN_5

@ -1,6 +1,10 @@
#ifndef _TREZOR_T_H
#define _TREZOR_T_H
#define USE_SD_CARD 1
#define USE_TOUCH 1
#define USE_SBU 1
#include "displays/st7789v.h"
#endif //_TREZOR_T_H

@ -81,7 +81,7 @@ extern const uint8_t FIRMWARE_SECTORS[FIRMWARE_SECTORS_COUNT];
// note: FLASH_SR_RDERR is STM32F42xxx and STM32F43xxx specific (STM32F427)
// (reference RM0090 section 3.7.5)
#ifndef STM32F427xx
#if !defined STM32F427xx && !defined STM32F429xx
#define FLASH_SR_RDERR 0
#endif

@ -72,7 +72,7 @@ void mpu_config_bootloader(void) {
LL_MPU_REGION_SIZE_1GB | LL_MPU_REGION_FULL_ACCESS |
MPU_RASR_XN_Msk;
#ifdef STM32F427xx
#if defined STM32F427xx || defined STM32F429xx
// CCMRAM (0x10000000 - 0x1000FFFF, read-write, execute never)
MPU->RNR = MPU_REGION_NUMBER5;
MPU->RBAR = CCMDATARAM_BASE;
@ -153,7 +153,7 @@ void mpu_config_firmware(void) {
LL_MPU_REGION_SIZE_1GB | LL_MPU_REGION_FULL_ACCESS |
MPU_RASR_XN_Msk;
#ifdef STM32F427xx
#if defined STM32F427xx || defined STM32F429xx
// CCMRAM (0x10000000 - 0x1000FFFF, read-write, execute never)
MPU->RNR = MPU_REGION_NUMBER7;
MPU->RBAR = CCMDATARAM_BASE;

@ -34,7 +34,7 @@ typedef struct {
uint32_t plln;
} clock_conf_t;
#ifdef STM32F427xx
#if defined STM32F427xx || defined STM32F429xx
#ifdef TREZOR_MODEL_T
#define DEFAULT_FREQ 168U
#define DEFAULT_PLLQ 7U

@ -51,6 +51,10 @@
#ifdef STM32F427xx
#define USE_USB_HS
#define USE_USB_HS_IN_FS
#elif STM32F429xx
#define USE_USB_HS
#define USE_USB_HS_IN_FS
#define HAL_LTDC_MODULE_ENABLED
#elif STM32F405xx
#define USE_USB_FS
#else

@ -24,6 +24,7 @@
#include "common.h"
#include "secbool.h"
#include "ft6x36.h"
#include "touch.h"
#define TOUCH_ADDRESS \
@ -360,21 +361,3 @@ uint32_t touch_read(void) {
return 0;
}
uint32_t touch_click(void) {
uint32_t r = 0;
// flush touch events if any
while (touch_read()) {
}
// wait for TOUCH_START
while ((touch_read() & TOUCH_START) == 0) {
}
// wait for TOUCH_END
while (((r = touch_read()) & TOUCH_END) == 0) {
}
// flush touch events if any
while (touch_read()) {
}
// return last touch coordinate
return r;
}

@ -17,30 +17,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef TREZORHAL_TOUCH_H
#define TREZORHAL_TOUCH_H
#include <stdint.h>
#define TOUCH_START (1U << 24)
#define TOUCH_MOVE (1U << 25)
#define TOUCH_END (1U << 26)
void touch_init(void);
void touch_power_on(void);
void touch_power_off(void);
void touch_sensitivity(uint8_t value);
uint32_t touch_read(void);
uint32_t touch_click(void);
uint32_t touch_is_detected(void);
static inline uint16_t touch_unpack_x(uint32_t evt) {
return (evt >> 12) & 0xFFF;
}
static inline uint16_t touch_unpack_y(uint32_t evt) {
return (evt >> 0) & 0xFFF;
}
static inline uint32_t touch_pack_xy(uint16_t x, uint16_t y) {
return ((x & 0xFFF) << 12) | (y & 0xFFF);
}
#ifndef _TOUCH_FT6X36_H
#define _TOUCH_FT6X36_H
#endif

@ -0,0 +1,20 @@
#include "touch.h"
uint32_t touch_click(void) {
uint32_t r = 0;
// flush touch events if any
while (touch_read()) {
}
// wait for TOUCH_START
while ((touch_read() & TOUCH_START) == 0) {
}
// wait for TOUCH_END
while (((r = touch_read()) & TOUCH_END) == 0) {
}
// flush touch events if any
while (touch_read()) {
}
// return last touch coordinate
return r;
}

@ -0,0 +1,28 @@
#ifndef _TOUCH_H
#define _TOUCH_H
#include <stdint.h>
#define TOUCH_START (1U << 24)
#define TOUCH_MOVE (1U << 25)
#define TOUCH_END (1U << 26)
void touch_init(void);
void touch_power_on(void);
void touch_power_off(void);
void touch_sensitivity(uint8_t value);
uint32_t touch_read(void);
uint32_t touch_click(void);
uint32_t touch_is_detected(void);
static inline uint16_t touch_unpack_x(uint32_t evt) {
return (evt >> 12) & 0xFFF;
}
static inline uint16_t touch_unpack_y(uint32_t evt) {
return (evt >> 0) & 0xFFF;
}
static inline uint32_t touch_pack_xy(uint16_t x, uint16_t y) {
return ((x & 0xFFF) << 12) | (y & 0xFFF);
}
#endif //_TOUCH_H

@ -1 +0,0 @@
../trezorhal/touch.h

@ -0,0 +1 @@
../../trezorhal/touch/touch.h

@ -28,7 +28,6 @@
#include <unistd.h>
#include "profile.h"
#include "touch.h"
#include "usb.h"
#include "memzero.h"

@ -0,0 +1,3 @@
def get_hw_model_as_number(hw_model):
return int.from_bytes(hw_model.encode(), 'little')

@ -0,0 +1,22 @@
from . import get_hw_model_as_number
def configure(env, features_wanted, defines, sources):
features_available = []
board = 'trezor_1.h'
display = 'vg-2864ksweg01.c'
hw_model = get_hw_model_as_number('T1B1')
hw_revision = 0
defines += [f'TREZOR_BOARD=\\"boards/{board}\\"', ]
defines += [f'HW_MODEL={hw_model}', ]
defines += [f'HW_REVISION={hw_revision}', ]
sources += [f'embed/trezorhal/displays/{display}', ]
if "input" in features_wanted:
sources += ['embed/trezorhal/button.c']
features_available.append("button")
env.get('ENV')['TREZOR_BOARD'] = board
return features_available

@ -0,0 +1,30 @@
from . import get_hw_model_as_number
def configure(env, features_wanted, defines, sources):
features_available = []
hw_model = get_hw_model_as_number('T2B1')
hw_revision = 3
board = 'trezor_r_v3.h'
display = "ug-2828tswig01.c"
defines += [f'TREZOR_BOARD=\\"boards/{board}\\"', ]
defines += [f'HW_MODEL={hw_model}', ]
defines += [f'HW_REVISION={hw_revision}', ]
sources += [f'embed/trezorhal/displays/{display}', ]
if "input" in features_wanted:
sources += ['embed/trezorhal/button.c']
features_available.append("button")
if "rgb_led" in features_wanted:
sources += ['embed/trezorhal/rgb_led.c']
features_available.append("rgb_led")
if "sbu" in features_wanted:
sources += ['embed/trezorhal/sbu.c', ]
features_available.append("sbu")
env.get('ENV')['TREZOR_BOARD'] = board
return features_available

@ -0,0 +1,26 @@
from . import get_hw_model_as_number
def configure(env, features_wanted, defines, sources):
features_available = []
hw_model = get_hw_model_as_number('T2B1')
hw_revision = 4
board = 'trezor_r_v4.h'
display = 'vg-2864ksweg01.c'
defines += [f'TREZOR_BOARD=\\"boards/{board}\\"', ]
defines += [f'HW_MODEL={hw_model}', ]
defines += [f'HW_REVISION={hw_revision}', ]
sources += [f'embed/trezorhal/displays/{display}', ]
if "input" in features_wanted:
sources += ['embed/trezorhal/button.c']
features_available.append("button")
if "sbu" in features_wanted:
sources += ['embed/trezorhal/sbu.c', ]
features_available.append("sbu")
env.get('ENV')['TREZOR_BOARD'] = board
return features_available

@ -0,0 +1,31 @@
from . import get_hw_model_as_number
def configure(env, features_wanted, defines, sources):
features_available = []
board = 'trezor_t.h'
display = 'st7789v.c'
hw_model = get_hw_model_as_number('T2T1')
hw_revision = 0
defines += [f'TREZOR_BOARD=\\"boards/{board}\\"', ]
defines += [f'HW_MODEL={hw_model}', ]
defines += [f'HW_REVISION={hw_revision}', ]
sources += [f'embed/trezorhal/displays/{display}', ]
if "input" in features_wanted:
sources += ['embed/trezorhal/touch/touch.c', ]
sources += ['embed/trezorhal/touch/ft6x36.c', ]
features_available.append("touch")
if "sdcard" in features_wanted:
sources += ['embed/trezorhal/sdcard.c', ]
features_available.append("sdcard")
if "sbu" in features_wanted:
sources += ['embed/trezorhal/sbu.c', ]
features_available.append("sbu")
env.get('ENV')['TREZOR_BOARD'] = board
return features_available

@ -1,6 +1,8 @@
import os.path
import subprocess
from boards import trezor_1, trezor_r_v3, trezor_r_v4, trezor_t
def add_font(font_name, font, defines, sources):
@ -14,41 +16,21 @@ def add_font(font_name, font, defines, sources):
sources.append(sourcefile)
def get_hw_model_as_number(hw_model):
return int.from_bytes(hw_model.encode(), 'little')
def configure_board(model, env, defines, sources):
def configure_board(model, features_wanted, env, defines, sources):
model_r_version = 4
if model in ('1',):
board = 'trezor_1.h'
display = 'vg-2864ksweg01.c'
hw_model = get_hw_model_as_number('T1B1')
hw_revision = 0
return trezor_1.configure(env, features_wanted, defines, sources)
elif model in ('T',):
board = 'trezor_t.h'
display = 'st7789v.c'
hw_model = get_hw_model_as_number('T2T1')
hw_revision = 0
return trezor_t.configure(env, features_wanted, defines, sources)
elif model in ('R',):
hw_model = get_hw_model_as_number('T2B1')
hw_revision = model_r_version
if model_r_version == 3:
board = 'trezor_r_v3.h'
display = "ug-2828tswig01.c"
return trezor_r_v3.configure(env, features_wanted, defines, sources)
else:
board = 'trezor_r_v4.h'
display = 'vg-2864ksweg01.c'
return trezor_r_v4.configure(env, features_wanted, defines, sources)
else:
raise Exception("Unknown model")
defines += [f'TREZOR_BOARD=\\"boards/{board}\\"', ]
defines += [f'HW_MODEL={hw_model}', ]
defines += [f'HW_REVISION={hw_revision}', ]
sources += [f'embed/trezorhal/displays/{display}', ]
env.get('ENV')['TREZOR_BOARD'] = board
def get_model_identifier(model):
if model == '1':

Loading…
Cancel
Save