mirror of
https://github.com/openmv/openmv.git
synced 2025-11-04 14:49:50 +08:00
Disable USB IRQ before stopping script.
* This ensures that FS IRQ will never run during a soft-reset which causes issues when using SD card.
This commit is contained in:
parent
31697a163b
commit
ebf13197a9
@ -378,6 +378,9 @@ soft_reset:
|
|||||||
__fatal_error(buf);
|
__fatal_error(buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Re-enable FS IRQ (disabled in usbdbg)
|
||||||
|
HAL_NVIC_EnableIRQ(OTG_FS_IRQn);
|
||||||
|
|
||||||
// Run self tests the first time only
|
// Run self tests the first time only
|
||||||
f_res = f_stat("selftest.py", NULL);
|
f_res = f_stat("selftest.py", NULL);
|
||||||
if (first_soft_reset && f_res == FR_OK) {
|
if (first_soft_reset && f_res == FR_OK) {
|
||||||
@ -413,6 +416,9 @@ soft_reset:
|
|||||||
nlr_pop();
|
nlr_pop();
|
||||||
}// if this gets interrupted again ignore it.
|
}// if this gets interrupted again ignore it.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Re-enable FS IRQ (disabled in usbdbg)
|
||||||
|
HAL_NVIC_EnableIRQ(OTG_FS_IRQn);
|
||||||
}
|
}
|
||||||
|
|
||||||
// If there's no script ready, just re-exec REPL
|
// If there's no script ready, just re-exec REPL
|
||||||
@ -427,6 +433,9 @@ soft_reset:
|
|||||||
|
|
||||||
nlr_pop();
|
nlr_pop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Re-enable FS IRQ (disabled in usbdbg)
|
||||||
|
HAL_NVIC_EnableIRQ(OTG_FS_IRQn);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (usbdbg_script_ready()) {
|
if (usbdbg_script_ready()) {
|
||||||
@ -441,7 +450,8 @@ soft_reset:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Disable all IRQs except Systick and Flash IRQs
|
// Disable all other IRQs except Systick and Flash IRQs
|
||||||
|
// Note: FS IRQ is disable, since we're going for a soft-reset.
|
||||||
irq_set_base_priority(2);
|
irq_set_base_priority(2);
|
||||||
|
|
||||||
// soft reset
|
// soft reset
|
||||||
|
|||||||
@ -238,6 +238,9 @@ void usbdbg_control(void *buffer, uint8_t request, uint32_t length)
|
|||||||
// Disable IDE IRQ (re-enabled by pyexec or main).
|
// Disable IDE IRQ (re-enabled by pyexec or main).
|
||||||
usbdbg_set_irq_enabled(false);
|
usbdbg_set_irq_enabled(false);
|
||||||
|
|
||||||
|
// We can safely disable FS IRQ here
|
||||||
|
HAL_NVIC_DisableIRQ(OTG_FS_IRQn); __DSB(); __ISB();
|
||||||
|
|
||||||
// interrupt running code by raising an exception
|
// interrupt running code by raising an exception
|
||||||
mp_obj_exception_clear_traceback(mp_const_ide_interrupt);
|
mp_obj_exception_clear_traceback(mp_const_ide_interrupt);
|
||||||
pendsv_nlr_jump_hard(mp_const_ide_interrupt);
|
pendsv_nlr_jump_hard(mp_const_ide_interrupt);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user