mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-11-26 01:18:28 +00:00
bootloader: added systick handler
This commit is contained in:
parent
0d15cabfcf
commit
c9857a756c
4
Makefile
4
Makefile
@ -89,10 +89,10 @@ openocd: ## start openocd which connects to the device
|
|||||||
openocd -f interface/stlink-v2.cfg -f target/stm32f4x.cfg
|
openocd -f interface/stlink-v2.cfg -f target/stm32f4x.cfg
|
||||||
|
|
||||||
gdb: ## start remote gdb session which connects to the openocd
|
gdb: ## start remote gdb session which connects to the openocd
|
||||||
gdb $(STMHAL_BUILD_DIR)/firmware.elf -ex 'target remote localhost:3333'
|
arm-none-eabi-gdb $(STMHAL_BUILD_DIR)/firmware.elf -ex 'target remote localhost:3333'
|
||||||
|
|
||||||
gdb_bootloader: ## start remote gdb session which connects to the openocd
|
gdb_bootloader: ## start remote gdb session which connects to the openocd
|
||||||
gdb $(STMHAL_BUILD_DIR)/bootloader.elf -ex 'target remote localhost:3333'
|
arm-none-eabi-gdb $(STMHAL_BUILD_DIR)/bootloader.elf -ex 'target remote localhost:3333'
|
||||||
|
|
||||||
load: ## load contents of src into mass storage of trezor
|
load: ## load contents of src into mass storage of trezor
|
||||||
rm -rf /run/media/${USER}/PYBFLASH/*
|
rm -rf /run/media/${USER}/PYBFLASH/*
|
||||||
|
@ -28,7 +28,44 @@ void nlr_jump_fail(void *val) {
|
|||||||
|
|
||||||
void SystemClock_Config(void);
|
void SystemClock_Config(void);
|
||||||
|
|
||||||
// ###
|
// ### from stm32_it.c
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief This function handles SysTick Handler.
|
||||||
|
* @param None
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
void SysTick_Handler(void) {
|
||||||
|
// Instead of calling HAL_IncTick we do the increment here of the counter.
|
||||||
|
// This is purely for efficiency, since SysTick is called 1000 times per
|
||||||
|
// second at the highest interrupt priority.
|
||||||
|
// Note: we don't need uwTick to be declared volatile here because this is
|
||||||
|
// the only place where it can be modified, and the code is more efficient
|
||||||
|
// without the volatile specifier.
|
||||||
|
extern uint32_t uwTick;
|
||||||
|
uwTick += 1;
|
||||||
|
|
||||||
|
// Read the systick control regster. This has the side effect of clearing
|
||||||
|
// the COUNTFLAG bit, which makes the logic in sys_tick_get_microseconds
|
||||||
|
// work properly.
|
||||||
|
SysTick->CTRL;
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
// Right now we have the storage and DMA controllers to process during
|
||||||
|
// this interrupt and we use custom dispatch handlers. If this needs to
|
||||||
|
// be generalised in the future then a dispatch table can be used as
|
||||||
|
// follows: ((void(*)(void))(systick_dispatch[uwTick & 0xf]))();
|
||||||
|
|
||||||
|
if (STORAGE_IDLE_TICK(uwTick)) {
|
||||||
|
NVIC->STIR = FLASH_IRQn;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (DMA_IDLE_ENABLED() && DMA_IDLE_TICK(uwTick)) {
|
||||||
|
dma_idle_handler(uwTick);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// ### from timer.c
|
// ### from timer.c
|
||||||
|
|
||||||
@ -65,7 +102,16 @@ int main(void) {
|
|||||||
|
|
||||||
display_init();
|
display_init();
|
||||||
display_clear();
|
display_clear();
|
||||||
display_text(0, 0, "TREZOR", 6, FONT_MONO, 0xFFFF, 0x0000);
|
display_text(100, 120, "TREZOR", 6, FONT_MONO, 0xFFFF, 0x0000);
|
||||||
|
display_text(90, 140, "bootloader", 10, FONT_MONO, 0xFFFF, 0x0000);
|
||||||
|
display_backlight(255);
|
||||||
|
HAL_Delay(250);
|
||||||
|
display_backlight(0);
|
||||||
|
HAL_Delay(250);
|
||||||
|
display_backlight(100);
|
||||||
|
HAL_Delay(250);
|
||||||
|
display_backlight(0);
|
||||||
|
HAL_Delay(250);
|
||||||
display_backlight(255);
|
display_backlight(255);
|
||||||
|
|
||||||
__fatal_error("end");
|
__fatal_error("end");
|
||||||
|
Loading…
Reference in New Issue
Block a user