diff --git a/stm32/q1-bootloader/Makefile b/stm32/q1-bootloader/Makefile index 1087a2c5..08c06ed5 100644 --- a/stm32/q1-bootloader/Makefile +++ b/stm32/q1-bootloader/Makefile @@ -30,7 +30,7 @@ STM32LIB_PATH = ../../external/micropython/lib TARGET_NAME = bootloader # Source files. Important: Add them also to link-script.ld to control placement. -OBJS += startup.o assets/screens.o +OBJS += startup.o assets/q1_screens.o OBJS += firewall.o main.o dispatch.o verify.o clocks.o storage.o constant_time.o rng.o ae.o OBJS += delay.o gpio.o pins.o version.o console.o psram.o sdcard.o lcd.o OBJS += faster_sha256.o micro-ecc/uECC.o hal_glue.o se2.o aes.o @@ -138,7 +138,7 @@ $(TARGET_ELF): $(OBJS) $(LINKER_SCRIPT) Makefile %.dfu: %.bin %.lss $(PYTHON_MAKE_DFU) -b $(BL_FLASH_BASE):$< $@ -assets/screens.c: assets/Makefile assets/*.png assets/convert.py +assets/q1_screens.c: assets/Makefile assets/*.png assets/convert.py (cd assets; $(MAKE)) diff --git a/stm32/q1-bootloader/assets/convert.py b/stm32/q1-bootloader/assets/convert.py index 149b9027..0aeb1e1c 100644 --- a/stm32/q1-bootloader/assets/convert.py +++ b/stm32/q1-bootloader/assets/convert.py @@ -192,6 +192,7 @@ results = [ ( 'downgrade', 'Downgrade?', 'history', {} ), ( 'corrupt', 'Firmware?', 'lemon', {} ), ( 'logout', 'Logout Done', 'logout', {}), + ( 'poweroff', 'Power Off', 'power', {}), ( 'devmode', 'Danger! Custom!', 'bomb-spook', dict(icon_xpos=0)), # was 2 ( 'red_light', 'Danger! Caution!', 'bomb-spook', dict(icon_xpos=0)), # was 2 ( 'upgrading', 'Upgrading', 'graph-up', {}), @@ -206,7 +207,7 @@ results = [ if __name__ == '__main__': prefix = 'screen_'; - out = open("screens.c", 'wt') + out = open("q1_screens.c", 'wt') out.write("// autogenerated by assets/convert.py\n\n") bg = make_background() @@ -230,7 +231,7 @@ if __name__ == '__main__': out.close() - out = open("screens.h", 'wt') + out = open("q1_screens.h", 'wt') out.write("// autogenerated by assets/convert.py\n\n") for label, txt, icon, _ in results: diff --git a/stm32/q1-bootloader/assets/screens.c b/stm32/q1-bootloader/assets/q1_screens.c similarity index 93% rename from stm32/q1-bootloader/assets/screens.c rename to stm32/q1-bootloader/assets/q1_screens.c index b594ccc8..ce5aae61 100644 --- a/stm32/q1-bootloader/assets/screens.c +++ b/stm32/q1-bootloader/assets/q1_screens.c @@ -32,6 +32,10 @@ const unsigned char screen_logout[709] = { 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x32, 0x00, 0x83, 0x07, 0xff, 0xff, 0x25, 0x00, 0x84, 0x0f, 0xff, 0xff, 0x80, 0x24, 0x00, 0x86, 0x1f, 0xff, 0xff, 0x00, 0x00, 0xe0, 0x22, 0x00, 0x86, 0x3f, 0xff, 0xff, 0x00, 0x01, 0xf0, 0x22, 0x00, 0x81, 0x3c, 0x03, 0x00, 0x82, 0x01, 0xf8, 0x22, 0x00, 0x81, 0x3c, 0x04, 0x00, 0x81, 0xfc, 0x22, 0x00, 0x81, 0x3c, 0x04, 0x00, 0x81, 0x7e, 0x22, 0x00, 0x81, 0x3c, 0x04, 0x00, 0x81, 0x3f, 0x22, 0x00, 0x81, 0x3c, 0x04, 0x00, 0x82, 0x1f, 0x80, 0x21, 0x00, 0x81, 0x3c, 0x04, 0x00, 0x82, 0x0f, 0xc0, 0x21, 0x00, 0x81, 0x3c, 0x04, 0x00, 0x82, 0x07, 0xe0, 0x21, 0x00, 0x81, 0x3c, 0x04, 0x00, 0x82, 0x03, 0xf0, 0x21, 0x00, 0x81, 0x3c, 0x04, 0x00, 0x82, 0x01, 0xf8, 0x21, 0x00, 0x81, 0x3c, 0x05, 0x00, 0x81, 0xfc, 0x21, 0x00, 0x81, 0x3c, 0x05, 0x00, 0x81, 0x7e, 0x21, 0x00, 0x81, 0x3c, 0x05, 0x00, 0x81, 0x3f, 0x21, 0x00, 0x81, 0x3c, 0x05, 0x00, 0x82, 0x1f, 0x80, 0x20, 0x00, 0x81, 0x3c, 0x05, 0x00, 0x82, 0x0f, 0xc0, 0x20, 0x00, 0x81, 0x3c, 0x05, 0x00, 0x82, 0x07, 0xe0, 0x20, 0x00, 0x81, 0x3c, 0x05, 0x00, 0x82, 0x03, 0xf0, 0x20, 0x00, 0x81, 0x3c, 0x05, 0x00, 0x82, 0x01, 0xf8, 0x20, 0x00, 0x83, 0x3c, 0x00, 0x07, 0x04, 0xff, 0x81, 0xfc, 0x20, 0x00, 0x83, 0x3c, 0x00, 0x07, 0x04, 0xff, 0x81, 0xfc, 0x20, 0x00, 0x83, 0x3c, 0x00, 0x07, 0x04, 0xff, 0x81, 0xfc, 0x20, 0x00, 0x83, 0x3c, 0x00, 0x03, 0x04, 0xff, 0x81, 0xf8, 0x20, 0x00, 0x81, 0x3c, 0x05, 0x00, 0x82, 0x03, 0xf0, 0x20, 0x00, 0x81, 0x3c, 0x05, 0x00, 0x82, 0x07, 0xe0, 0x20, 0x00, 0x81, 0x3c, 0x05, 0x00, 0x82, 0x0f, 0xc0, 0x20, 0x00, 0x81, 0x3c, 0x05, 0x00, 0x82, 0x1f, 0x80, 0x20, 0x00, 0x81, 0x3c, 0x05, 0x00, 0x81, 0x3f, 0x21, 0x00, 0x81, 0x3c, 0x05, 0x00, 0x81, 0x7e, 0x21, 0x00, 0x81, 0x3c, 0x05, 0x00, 0x81, 0xfc, 0x21, 0x00, 0x81, 0x3c, 0x04, 0x00, 0x82, 0x01, 0xf8, 0x21, 0x00, 0x81, 0x3c, 0x04, 0x00, 0x82, 0x03, 0xf0, 0x21, 0x00, 0x81, 0x3c, 0x04, 0x00, 0x82, 0x07, 0xe0, 0x21, 0x00, 0x81, 0x3c, 0x04, 0x00, 0x82, 0x0f, 0xc0, 0x21, 0x00, 0x81, 0x3c, 0x04, 0x00, 0x82, 0x1f, 0x80, 0x21, 0x00, 0x81, 0x3c, 0x04, 0x00, 0x81, 0x3f, 0x22, 0x00, 0x81, 0x3c, 0x04, 0x00, 0x81, 0x7e, 0x22, 0x00, 0x81, 0x3c, 0x04, 0x00, 0x81, 0xfc, 0x22, 0x00, 0x81, 0x3c, 0x03, 0x00, 0x82, 0x01, 0xf8, 0x22, 0x00, 0x86, 0x3f, 0xff, 0xff, 0x00, 0x01, 0xf0, 0x22, 0x00, 0x86, 0x1f, 0xff, 0xff, 0x00, 0x00, 0xe0, 0x22, 0x00, 0x84, 0x0f, 0xff, 0xff, 0x80, 0x24, 0x00, 0x83, 0x07, 0xff, 0xff, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x59, 0x00, 0x81, 0x10, 0x08, 0x00, 0x81, 0x78, 0x1e, 0x00, 0x81, 0x10, 0x05, 0x00, 0x84, 0x01, 0x00, 0x00, 0x44, 0x1e, 0x00, 0x81, 0x10, 0x05, 0x00, 0x84, 0x01, 0x00, 0x00, 0x42, 0x1e, 0x00, 0x81, 0x10, 0x05, 0x00, 0x84, 0x01, 0x00, 0x00, 0x41, 0x1e, 0x00, 0x8e, 0x10, 0x01, 0xc0, 0x74, 0x1c, 0x10, 0x47, 0xe0, 0x00, 0x41, 0x07, 0x05, 0xc0, 0x70, 0x1a, 0x00, 0x8e, 0x10, 0x02, 0x20, 0x8c, 0x22, 0x10, 0x41, 0x00, 0x00, 0x41, 0x08, 0x86, 0x20, 0x88, 0x1a, 0x00, 0x8e, 0x10, 0x04, 0x11, 0x04, 0x41, 0x10, 0x41, 0x00, 0x00, 0x41, 0x10, 0x44, 0x11, 0x04, 0x1a, 0x00, 0x8e, 0x10, 0x04, 0x11, 0x04, 0x41, 0x10, 0x41, 0x00, 0x00, 0x41, 0x10, 0x44, 0x11, 0x04, 0x1a, 0x00, 0x8e, 0x10, 0x04, 0x11, 0x04, 0x41, 0x10, 0x41, 0x00, 0x00, 0x41, 0x10, 0x44, 0x11, 0xfc, 0x1a, 0x00, 0x8d, 0x10, 0x04, 0x11, 0x04, 0x41, 0x10, 0x41, 0x00, 0x00, 0x41, 0x10, 0x44, 0x11, 0x1b, 0x00, 0x8d, 0x10, 0x04, 0x10, 0x8c, 0x41, 0x10, 0x41, 0x00, 0x00, 0x42, 0x10, 0x44, 0x11, 0x1b, 0x00, 0x8e, 0x10, 0x02, 0x20, 0x74, 0x22, 0x08, 0xc1, 0x10, 0x00, 0x44, 0x08, 0x84, 0x10, 0x84, 0x1a, 0x00, 0x8e, 0x1f, 0xc1, 0xc0, 0x04, 0x1c, 0x07, 0x40, 0xe0, 0x00, 0x78, 0x07, 0x04, 0x10, 0x78, 0x1d, 0x00, 0x81, 0x04, 0x26, 0x00, 0x82, 0x01, 0x04, 0x27, 0x00, 0x81, 0x88, 0x27, 0x00, 0x81, 0x70, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x45, 0x00, 0x00 }; +const unsigned char screen_poweroff[809] = { +0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x73, 0x00, 0x81, 0x80, 0x26, 0x00, 0x82, 0x03, 0xc0, 0x26, 0x00, 0x82, 0x03, 0xc0, 0x26, 0x00, 0x82, 0x03, 0xc0, 0x26, 0x00, 0x82, 0x03, 0xc0, 0x26, 0x00, 0x82, 0x03, 0xc0, 0x24, 0x00, 0x85, 0x01, 0xc0, 0x03, 0xc0, 0x03, 0x23, 0x00, 0x86, 0x03, 0xe0, 0x03, 0xc0, 0x07, 0xc0, 0x22, 0x00, 0x86, 0x07, 0xe0, 0x03, 0xc0, 0x07, 0xe0, 0x22, 0x00, 0x86, 0x0f, 0xc0, 0x03, 0xc0, 0x03, 0xf0, 0x22, 0x00, 0x86, 0x1f, 0x00, 0x03, 0xc0, 0x00, 0xf8, 0x22, 0x00, 0x86, 0x3e, 0x00, 0x03, 0xc0, 0x00, 0x7c, 0x22, 0x00, 0x86, 0x7c, 0x00, 0x03, 0xc0, 0x00, 0x3e, 0x22, 0x00, 0x86, 0xf8, 0x00, 0x03, 0xc0, 0x00, 0x1f, 0x22, 0x00, 0x86, 0xf0, 0x00, 0x03, 0xc0, 0x00, 0x0f, 0x21, 0x00, 0x88, 0x01, 0xf0, 0x00, 0x03, 0xc0, 0x00, 0x0f, 0x80, 0x20, 0x00, 0x88, 0x03, 0xe0, 0x00, 0x03, 0xc0, 0x00, 0x07, 0x80, 0x20, 0x00, 0x88, 0x03, 0xc0, 0x00, 0x03, 0xc0, 0x00, 0x03, 0xc0, 0x20, 0x00, 0x88, 0x07, 0xc0, 0x00, 0x03, 0xc0, 0x00, 0x03, 0xc0, 0x20, 0x00, 0x88, 0x07, 0x80, 0x00, 0x03, 0xc0, 0x00, 0x01, 0xe0, 0x20, 0x00, 0x88, 0x07, 0x80, 0x00, 0x03, 0xc0, 0x00, 0x01, 0xe0, 0x20, 0x00, 0x88, 0x0f, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0xf0, 0x20, 0x00, 0x88, 0x0f, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0xf0, 0x20, 0x00, 0x88, 0x0f, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0xf0, 0x20, 0x00, 0x88, 0x0e, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x70, 0x20, 0x00, 0x88, 0x1e, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x78, 0x20, 0x00, 0x88, 0x1e, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x78, 0x20, 0x00, 0x88, 0x1e, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x78, 0x20, 0x00, 0x88, 0x1e, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x78, 0x20, 0x00, 0x88, 0x1e, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x78, 0x20, 0x00, 0x88, 0x1e, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x78, 0x20, 0x00, 0x88, 0x1e, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x78, 0x20, 0x00, 0x88, 0x1e, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x78, 0x20, 0x00, 0x88, 0x1e, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x78, 0x20, 0x00, 0x81, 0x1e, 0x06, 0x00, 0x81, 0x78, 0x20, 0x00, 0x81, 0x1e, 0x06, 0x00, 0x81, 0x78, 0x20, 0x00, 0x81, 0x1e, 0x06, 0x00, 0x81, 0x70, 0x20, 0x00, 0x81, 0x0f, 0x06, 0x00, 0x81, 0xf0, 0x20, 0x00, 0x81, 0x0f, 0x06, 0x00, 0x81, 0xf0, 0x20, 0x00, 0x81, 0x0f, 0x06, 0x00, 0x81, 0xf0, 0x20, 0x00, 0x82, 0x07, 0x80, 0x04, 0x00, 0x82, 0x01, 0xe0, 0x20, 0x00, 0x82, 0x07, 0x80, 0x04, 0x00, 0x82, 0x01, 0xe0, 0x20, 0x00, 0x82, 0x07, 0xc0, 0x04, 0x00, 0x82, 0x03, 0xc0, 0x20, 0x00, 0x82, 0x03, 0xc0, 0x04, 0x00, 0x82, 0x03, 0xc0, 0x20, 0x00, 0x82, 0x03, 0xe0, 0x04, 0x00, 0x82, 0x07, 0x80, 0x20, 0x00, 0x82, 0x01, 0xf0, 0x04, 0x00, 0x82, 0x0f, 0x80, 0x21, 0x00, 0x81, 0xf0, 0x04, 0x00, 0x81, 0x0f, 0x22, 0x00, 0x81, 0xf8, 0x04, 0x00, 0x81, 0x1f, 0x22, 0x00, 0x81, 0x7c, 0x04, 0x00, 0x81, 0x3e, 0x22, 0x00, 0x81, 0x3e, 0x04, 0x00, 0x81, 0x7c, 0x22, 0x00, 0x81, 0x1f, 0x04, 0x00, 0x81, 0xf8, 0x22, 0x00, 0x86, 0x0f, 0xc0, 0x00, 0x00, 0x03, 0xf0, 0x22, 0x00, 0x86, 0x07, 0xe0, 0x00, 0x00, 0x07, 0xe0, 0x22, 0x00, 0x86, 0x03, 0xf8, 0x00, 0x00, 0x1f, 0xc0, 0x23, 0x00, 0x84, 0xff, 0x00, 0x00, 0xff, 0x24, 0x00, 0x84, 0x7f, 0xf0, 0x0f, 0xfe, 0x24, 0x00, 0x84, 0x1f, 0xff, 0xff, 0xf8, 0x24, 0x00, 0x84, 0x07, 0xff, 0xff, 0xe0, 0x25, 0x00, 0x82, 0xff, 0xff, 0x26, 0x00, 0x82, 0x01, 0x80, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x3e, 0x00, 0x82, 0x07, 0xc0, 0x06, 0x00, 0x84, 0x1c, 0x03, 0x80, 0xe0, 0x1c, 0x00, 0x82, 0x04, 0x20, 0x06, 0x00, 0x84, 0x22, 0x04, 0x41, 0x10, 0x1c, 0x00, 0x82, 0x04, 0x10, 0x06, 0x00, 0x83, 0x41, 0x04, 0x01, 0x1d, 0x00, 0x82, 0x04, 0x10, 0x06, 0x00, 0x83, 0x41, 0x04, 0x01, 0x1d, 0x00, 0x8b, 0x04, 0x10, 0x70, 0x80, 0x87, 0x05, 0xc0, 0x00, 0x41, 0x04, 0x01, 0x1d, 0x00, 0x82, 0x04, 0x10, 0x03, 0x88, 0x86, 0x86, 0x20, 0x00, 0x41, 0x04, 0x01, 0x1d, 0x00, 0x8c, 0x04, 0x21, 0x04, 0x88, 0x90, 0x44, 0x10, 0x00, 0x41, 0x1f, 0x87, 0xe0, 0x1c, 0x00, 0x8b, 0x07, 0xc1, 0x04, 0x88, 0x90, 0x44, 0x00, 0x00, 0x41, 0x04, 0x01, 0x1d, 0x00, 0x8b, 0x04, 0x01, 0x04, 0x88, 0x9f, 0xc4, 0x00, 0x00, 0x41, 0x04, 0x01, 0x1d, 0x00, 0x8b, 0x04, 0x01, 0x04, 0x55, 0x10, 0x04, 0x00, 0x00, 0x41, 0x04, 0x01, 0x1d, 0x00, 0x8b, 0x04, 0x01, 0x04, 0x55, 0x10, 0x04, 0x00, 0x00, 0x41, 0x04, 0x01, 0x1d, 0x00, 0x8b, 0x04, 0x00, 0x88, 0x55, 0x08, 0x44, 0x00, 0x00, 0x22, 0x04, 0x01, 0x1d, 0x00, 0x8b, 0x04, 0x00, 0x70, 0x22, 0x07, 0x84, 0x00, 0x00, 0x1c, 0x04, 0x01, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x5e, 0x00, 0x00 +}; + const unsigned char screen_devmode[1409] = { 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x6f, 0x00, 0x81, 0x20, 0x27, 0x00, 0x81, 0x70, 0x08, 0x00, 0x83, 0x1f, 0xe3, 0xf8, 0x1c, 0x00, 0x81, 0x71, 0x08, 0x00, 0x83, 0x3f, 0xff, 0xfe, 0x1b, 0x00, 0x83, 0x0e, 0x73, 0x80, 0x07, 0x00, 0x83, 0x7f, 0xff, 0xfe, 0x1b, 0x00, 0x83, 0x0f, 0x77, 0x80, 0x07, 0x00, 0x83, 0xfc, 0xff, 0x9f, 0x1b, 0x00, 0x82, 0x07, 0xff, 0x08, 0x00, 0x84, 0xf0, 0x3e, 0x0f, 0x80, 0x1a, 0x00, 0x82, 0x03, 0x8e, 0x07, 0x00, 0x85, 0x01, 0xf0, 0x00, 0x07, 0x80, 0x23, 0x00, 0x85, 0x01, 0xe0, 0x00, 0x03, 0xc0, 0x1b, 0x00, 0x82, 0x07, 0xe0, 0x06, 0x00, 0x85, 0x03, 0xc0, 0x00, 0x03, 0xc0, 0x1a, 0x00, 0x83, 0x01, 0x87, 0xe0, 0x06, 0x00, 0x85, 0x03, 0xc0, 0x00, 0x01, 0xe0, 0x19, 0x00, 0x83, 0xf8, 0x03, 0xc4, 0x07, 0x00, 0x85, 0x07, 0x80, 0x00, 0x01, 0xe0, 0x18, 0x00, 0x84, 0x01, 0xfc, 0x07, 0xee, 0x07, 0x00, 0x85, 0x3f, 0x80, 0x00, 0x01, 0xfc, 0x17, 0x00, 0x85, 0x7f, 0xfb, 0xfe, 0x0f, 0xcf, 0x07, 0x00, 0x85, 0xff, 0x80, 0x00, 0x00, 0xff, 0x16, 0x00, 0x87, 0x03, 0xff, 0xff, 0xdf, 0x1f, 0x87, 0x80, 0x05, 0x00, 0x82, 0x01, 0xff, 0x03, 0x00, 0x82, 0xff, 0x80, 0x15, 0x00, 0x87, 0x0f, 0xff, 0xff, 0x8f, 0xbf, 0x03, 0x80, 0x05, 0x00, 0x82, 0x03, 0xf8, 0x03, 0x00, 0x82, 0x0f, 0xc0, 0x15, 0x00, 0x85, 0x3f, 0xff, 0xff, 0x07, 0xfe, 0x07, 0x00, 0x82, 0x03, 0xe0, 0x03, 0x00, 0x82, 0x03, 0xe0, 0x15, 0x00, 0x85, 0x7f, 0x80, 0x03, 0x03, 0xfc, 0x07, 0x00, 0x82, 0x03, 0xc0, 0x03, 0x00, 0x82, 0x01, 0xe0, 0x15, 0x00, 0x85, 0xfe, 0x00, 0x00, 0x01, 0xf8, 0x07, 0x00, 0x82, 0x03, 0xc0, 0x03, 0x00, 0x82, 0x01, 0xe0, 0x14, 0x00, 0x82, 0x01, 0xf8, 0x03, 0x00, 0x81, 0xf8, 0x07, 0x00, 0x82, 0x03, 0xe0, 0x03, 0x00, 0x82, 0x03, 0xc0, 0x14, 0x00, 0x82, 0x03, 0xe0, 0x03, 0x00, 0x81, 0x7c, 0x07, 0x00, 0x82, 0x03, 0xf8, 0x03, 0x00, 0x82, 0x0f, 0xc0, 0x14, 0x00, 0x82, 0x07, 0xc0, 0x03, 0x00, 0x81, 0x3e, 0x07, 0x00, 0x87, 0x01, 0xff, 0xc0, 0x00, 0x01, 0xff, 0x80, 0x14, 0x00, 0x86, 0x0f, 0x80, 0x78, 0x00, 0x00, 0x1f, 0x08, 0x00, 0x05, 0xff, 0x15, 0x00, 0x87, 0x1f, 0x03, 0xf8, 0x00, 0x00, 0x0f, 0x80, 0x07, 0x00, 0x81, 0x3f, 0x03, 0xff, 0x81, 0xfc, 0x15, 0x00, 0x87, 0x1e, 0x07, 0xf8, 0x00, 0x00, 0x07, 0xc0, 0x07, 0x00, 0x81, 0x1f, 0x03, 0xff, 0x81, 0xf8, 0x15, 0x00, 0x87, 0x3c, 0x0f, 0xf8, 0x00, 0x00, 0x03, 0xc0, 0x07, 0x00, 0x85, 0x1e, 0x3f, 0xff, 0xfe, 0x78, 0x15, 0x00, 0x87, 0x7c, 0x1f, 0x80, 0x00, 0x00, 0x03, 0xc0, 0x07, 0x00, 0x85, 0x1e, 0x3f, 0xe7, 0xfc, 0x78, 0x15, 0x00, 0x82, 0x78, 0x3e, 0x03, 0x00, 0x82, 0x07, 0xc0, 0x07, 0x00, 0x85, 0x1e, 0x3f, 0xe3, 0xfc, 0x78, 0x15, 0x00, 0x82, 0x78, 0x7c, 0x03, 0x00, 0x82, 0x0f, 0x80, 0x06, 0x00, 0x87, 0x03, 0xfe, 0x1f, 0xc3, 0xfc, 0x7f, 0xe0, 0x14, 0x00, 0x82, 0xf0, 0x78, 0x03, 0x00, 0x81, 0x1f, 0x07, 0x00, 0x87, 0x03, 0xff, 0x0f, 0x81, 0xf8, 0x7f, 0xe0, 0x14, 0x00, 0x82, 0xf0, 0x78, 0x03, 0x00, 0x81, 0x1e, 0x07, 0x00, 0x87, 0x03, 0xff, 0x03, 0x00, 0x40, 0xff, 0xc0, 0x14, 0x00, 0x82, 0xe0, 0xf0, 0x03, 0x00, 0x81, 0x1e, 0x07, 0x00, 0x82, 0x01, 0xff, 0x03, 0x00, 0x82, 0xff, 0xc0, 0x13, 0x00, 0x83, 0x01, 0xe0, 0xf0, 0x03, 0x00, 0x81, 0x1e, 0x07, 0x00, 0x87, 0x01, 0xff, 0x80, 0x00, 0x00, 0xff, 0xc0, 0x13, 0x00, 0x83, 0x01, 0xe0, 0xf0, 0x03, 0x00, 0x81, 0x0e, 0x07, 0x00, 0x87, 0x01, 0xff, 0xc0, 0x00, 0x01, 0xff, 0x80, 0x13, 0x00, 0x83, 0x01, 0xe0, 0x70, 0x03, 0x00, 0x81, 0x0f, 0x08, 0x00, 0x86, 0xff, 0xc0, 0x00, 0x03, 0xff, 0x80, 0x13, 0x00, 0x82, 0x01, 0xe0, 0x04, 0x00, 0x81, 0x0f, 0x08, 0x00, 0x85, 0xff, 0xe0, 0x00, 0x07, 0xff, 0x14, 0x00, 0x82, 0x01, 0xe0, 0x04, 0x00, 0x81, 0x0f, 0x08, 0x00, 0x85, 0x7f, 0xf8, 0x00, 0x0f, 0xff, 0x14, 0x00, 0x82, 0x01, 0xe0, 0x04, 0x00, 0x81, 0x0f, 0x08, 0x00, 0x86, 0xff, 0xfc, 0x00, 0x3f, 0xff, 0x80, 0x13, 0x00, 0x82, 0x01, 0xe0, 0x04, 0x00, 0x81, 0x0f, 0x07, 0x00, 0x87, 0x03, 0xff, 0xff, 0x80, 0xff, 0xff, 0xc0, 0x13, 0x00, 0x82, 0x01, 0xe0, 0x04, 0x00, 0x81, 0x0f, 0x07, 0x00, 0x87, 0x07, 0xf0, 0x3f, 0xff, 0xfc, 0x0f, 0xe0, 0x13, 0x00, 0x82, 0x01, 0xe0, 0x04, 0x00, 0x81, 0x0f, 0x07, 0x00, 0x87, 0x07, 0xc0, 0x1f, 0xff, 0xf8, 0x03, 0xf0, 0x13, 0x00, 0x82, 0x01, 0xe0, 0x04, 0x00, 0x81, 0x0e, 0x07, 0x00, 0x87, 0x0f, 0x80, 0x1f, 0xff, 0xf8, 0x00, 0xf8, 0x14, 0x00, 0x81, 0xe0, 0x04, 0x00, 0x81, 0x1e, 0x07, 0x00, 0x87, 0x1f, 0x00, 0x1f, 0x3e, 0x78, 0x00, 0x78, 0x14, 0x00, 0x81, 0xf0, 0x04, 0x00, 0x81, 0x1e, 0x07, 0x00, 0x87, 0x1e, 0x00, 0x0f, 0x80, 0xf8, 0x00, 0x7c, 0x14, 0x00, 0x81, 0xf0, 0x04, 0x00, 0x81, 0x1e, 0x07, 0x00, 0x87, 0x1e, 0x00, 0x0f, 0x81, 0xf8, 0x00, 0x3c, 0x14, 0x00, 0x81, 0xf0, 0x04, 0x00, 0x81, 0x3c, 0x07, 0x00, 0x87, 0x3c, 0x00, 0x0f, 0xc1, 0xf8, 0x00, 0x3c, 0x14, 0x00, 0x81, 0x78, 0x04, 0x00, 0x81, 0x3c, 0x07, 0x00, 0x87, 0x3c, 0x00, 0x0f, 0xc3, 0xf0, 0x00, 0x1c, 0x14, 0x00, 0x81, 0x7c, 0x04, 0x00, 0x81, 0x78, 0x07, 0x00, 0x87, 0x3c, 0x00, 0x0f, 0xc3, 0xf0, 0x00, 0x1c, 0x14, 0x00, 0x81, 0x3c, 0x04, 0x00, 0x81, 0x78, 0x07, 0x00, 0x87, 0x3c, 0x00, 0x0f, 0xc3, 0xf0, 0x00, 0x1e, 0x14, 0x00, 0x81, 0x3e, 0x04, 0x00, 0x81, 0xf0, 0x07, 0x00, 0x87, 0x3c, 0x00, 0x0f, 0xc1, 0xf0, 0x00, 0x1e, 0x14, 0x00, 0x81, 0x1f, 0x03, 0x00, 0x82, 0x01, 0xf0, 0x07, 0x00, 0x87, 0x3c, 0x00, 0x07, 0xc1, 0xf0, 0x00, 0x1e, 0x14, 0x00, 0x86, 0x0f, 0x80, 0x00, 0x00, 0x03, 0xe0, 0x07, 0x00, 0x87, 0x3c, 0x00, 0x07, 0xc1, 0xf0, 0x00, 0x1e, 0x14, 0x00, 0x86, 0x0f, 0xc0, 0x00, 0x00, 0x07, 0xc0, 0x07, 0x00, 0x87, 0x3c, 0x00, 0x07, 0x81, 0xf0, 0x00, 0x1e, 0x14, 0x00, 0x86, 0x07, 0xe0, 0x00, 0x00, 0x0f, 0x80, 0x07, 0x00, 0x87, 0x3c, 0x00, 0x07, 0x81, 0xe0, 0x00, 0x1e, 0x14, 0x00, 0x85, 0x03, 0xf0, 0x00, 0x00, 0x3f, 0x08, 0x00, 0x87, 0x3c, 0x00, 0x07, 0x81, 0xe0, 0x00, 0x1e, 0x14, 0x00, 0x85, 0x01, 0xfc, 0x00, 0x00, 0x7e, 0x08, 0x00, 0x87, 0x3c, 0x00, 0x07, 0x80, 0xe0, 0x00, 0x1e, 0x15, 0x00, 0x84, 0x7f, 0x00, 0x03, 0xfc, 0x08, 0x00, 0x87, 0x3c, 0x00, 0x03, 0x80, 0xe0, 0x00, 0x1e, 0x15, 0x00, 0x84, 0x3f, 0xf8, 0x1f, 0xf8, 0x08, 0x00, 0x87, 0x3e, 0x00, 0x03, 0x80, 0xe0, 0x00, 0x3c, 0x15, 0x00, 0x84, 0x0f, 0xff, 0xff, 0xe0, 0x08, 0x00, 0x81, 0x3f, 0x05, 0xff, 0x81, 0xfc, 0x15, 0x00, 0x84, 0x03, 0xff, 0xff, 0x80, 0x08, 0x00, 0x81, 0x1f, 0x05, 0xff, 0x81, 0xf8, 0x16, 0x00, 0x82, 0xff, 0xfc, 0x09, 0x00, 0x81, 0x0f, 0x05, 0xff, 0x81, 0xf0, 0x16, 0x00, 0x81, 0x03, 0x0a, 0x00, 0x81, 0x01, 0x05, 0xff, 0x81, 0xc0, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x09, 0x00, 0x82, 0x01, 0xe0, 0x06, 0x00, 0x84, 0x04, 0x00, 0x00, 0x70, 0x06, 0x00, 0x81, 0x04, 0x15, 0x00, 0x82, 0x01, 0x10, 0x06, 0x00, 0x87, 0x04, 0x00, 0x00, 0x88, 0x00, 0x00, 0x01, 0x03, 0x00, 0x81, 0x04, 0x15, 0x00, 0x82, 0x01, 0x08, 0x06, 0x00, 0x87, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x01, 0x03, 0x00, 0x81, 0x04, 0x15, 0x00, 0x82, 0x01, 0x04, 0x06, 0x00, 0x87, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x01, 0x03, 0x00, 0x81, 0x04, 0x15, 0x00, 0x93, 0x01, 0x04, 0x3e, 0x17, 0x01, 0xd0, 0x70, 0x5c, 0x04, 0x00, 0x01, 0x00, 0x41, 0x0f, 0x87, 0xe0, 0x70, 0xf7, 0x04, 0x15, 0x00, 0x93, 0x01, 0x04, 0x01, 0x18, 0x82, 0x30, 0x88, 0x62, 0x04, 0x00, 0x01, 0x00, 0x41, 0x10, 0x41, 0x00, 0x88, 0x88, 0x84, 0x15, 0x00, 0x93, 0x01, 0x04, 0x01, 0x10, 0x44, 0x11, 0x04, 0x41, 0x04, 0x00, 0x01, 0x00, 0x41, 0x10, 0x01, 0x01, 0x04, 0x88, 0x84, 0x15, 0x00, 0x93, 0x01, 0x04, 0x3f, 0x10, 0x44, 0x11, 0x04, 0x40, 0x04, 0x00, 0x01, 0x00, 0x41, 0x10, 0x01, 0x01, 0x04, 0x88, 0x84, 0x15, 0x00, 0x93, 0x01, 0x04, 0x41, 0x10, 0x44, 0x11, 0xfc, 0x40, 0x04, 0x00, 0x01, 0x00, 0x41, 0x0f, 0x81, 0x01, 0x04, 0x88, 0x84, 0x15, 0x00, 0x93, 0x01, 0x04, 0x41, 0x10, 0x44, 0x11, 0x00, 0x40, 0x00, 0x00, 0x01, 0x04, 0x41, 0x00, 0x41, 0x01, 0x04, 0x88, 0x80, 0x15, 0x00, 0x93, 0x01, 0x08, 0x41, 0x10, 0x42, 0x31, 0x00, 0x40, 0x00, 0x00, 0x01, 0x04, 0x41, 0x00, 0x41, 0x01, 0x04, 0x88, 0x80, 0x15, 0x00, 0x93, 0x01, 0x10, 0x43, 0x10, 0x41, 0xd0, 0x84, 0x40, 0x04, 0x00, 0x00, 0x88, 0x23, 0x10, 0x41, 0x10, 0x88, 0x80, 0x84, 0x15, 0x00, 0x93, 0x01, 0xe0, 0x3d, 0x10, 0x40, 0x10, 0x78, 0x40, 0x04, 0x00, 0x00, 0x70, 0x1d, 0x0f, 0x80, 0xe0, 0x70, 0x80, 0x84, 0x1a, 0x00, 0x81, 0x10, 0x26, 0x00, 0x82, 0x04, 0x10, 0x26, 0x00, 0x82, 0x02, 0x20, 0x26, 0x00, 0x82, 0x01, 0xc0, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x46, 0x00, 0x00 }; diff --git a/stm32/q1-bootloader/assets/screens.h b/stm32/q1-bootloader/assets/q1_screens.h similarity index 94% rename from stm32/q1-bootloader/assets/screens.h rename to stm32/q1-bootloader/assets/q1_screens.h index 0284faab..cb09696a 100644 --- a/stm32/q1-bootloader/assets/screens.h +++ b/stm32/q1-bootloader/assets/q1_screens.h @@ -25,6 +25,9 @@ extern const unsigned char screen_corrupt[]; extern const unsigned char screen_logout[]; +extern const unsigned char screen_poweroff[]; + + extern const unsigned char screen_devmode[]; diff --git a/stm32/q1-bootloader/assets/sampler.png b/stm32/q1-bootloader/assets/sampler.png index 183bc7a3..9fa06a75 100644 Binary files a/stm32/q1-bootloader/assets/sampler.png and b/stm32/q1-bootloader/assets/sampler.png differ diff --git a/stm32/q1-bootloader/gpio.c b/stm32/q1-bootloader/gpio.c index 65ad43a3..fc3619d7 100644 --- a/stm32/q1-bootloader/gpio.c +++ b/stm32/q1-bootloader/gpio.c @@ -78,21 +78,23 @@ gpio_setup(void) // Port C - Outputs // SD1 active LED: PC7 // USB active LED: PC6 + // TURN OFF: PC0 { GPIO_InitTypeDef setup = { - .Pin = GPIO_PIN_7 | GPIO_PIN_6, + .Pin = GPIO_PIN_7 | GPIO_PIN_6 | GPIO_PIN_0, .Mode = GPIO_MODE_OUTPUT_PP, .Pull = GPIO_NOPULL, .Speed = GPIO_SPEED_FREQ_LOW, }; + HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, 0); // stay on! HAL_GPIO_Init(GPIOC, &setup); HAL_GPIO_WritePin(GPIOC, GPIO_PIN_7|GPIO_PIN_6, 0); // turn LEDs off } // Port C - Inputs - // SD card detect switch: PC13 + // SD card detect switch: PC13, PC1 battery/not { GPIO_InitTypeDef setup = { - .Pin = GPIO_PIN_13, + .Pin = GPIO_PIN_13 | GPIO_PIN_1, .Mode = GPIO_MODE_INPUT, .Pull = GPIO_PULLUP, .Speed = GPIO_SPEED_FREQ_LOW, @@ -152,5 +154,18 @@ gpio_setup(void) #endif } +// turn_power_off() +// +// kill system power; instant +// + void +turn_power_off(void) +{ + gpio_setup(); + + HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, 1); + + LOCKUP_FOREVER(); +} // EOF