mirror of
https://github.com/esp-rs/esp-hal.git
synced 2025-10-02 14:44:42 +00:00
Panic when DefaultHandler gets invoked (#1005)
* Panic when DefaultHandler gets invoked * CHANGELOG.md * Use EspDefaultHandler for unhandled interrupts * `defmt`safe EspDefaultHandler
This commit is contained in:
parent
5b177ecc4a
commit
dfad09d85c
@ -32,6 +32,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
- Reworked construction of I2S driver instances (#983)
|
||||
- S2 / S3: Don't require GPIO 18 to create a USB peripheral driver instance (#990)
|
||||
- Updated to latest release candidate (`1.0.0-rc.2`) for `embedded-hal{-async,-nb}` (#994)
|
||||
- Explicit panic when hitting the `DefaultHandler` (#1005)
|
||||
|
||||
### Fixed
|
||||
|
||||
|
@ -14,7 +14,6 @@ PROVIDE(UserExternal = DefaultHandler);
|
||||
PROVIDE(SupervisorExternal = DefaultHandler);
|
||||
PROVIDE(MachineExternal = DefaultHandler);
|
||||
|
||||
PROVIDE(DefaultHandler = DefaultInterruptHandler);
|
||||
PROVIDE(ExceptionHandler = DefaultExceptionHandler);
|
||||
|
||||
PROVIDE(__post_init = default_post_init);
|
||||
|
@ -14,7 +14,6 @@ PROVIDE(UserExternal = DefaultHandler);
|
||||
PROVIDE(SupervisorExternal = DefaultHandler);
|
||||
PROVIDE(MachineExternal = DefaultHandler);
|
||||
|
||||
PROVIDE(DefaultHandler = DefaultInterruptHandler);
|
||||
PROVIDE(ExceptionHandler = DefaultExceptionHandler);
|
||||
|
||||
PROVIDE(__post_init = default_post_init);
|
||||
|
@ -14,7 +14,6 @@ PROVIDE(UserExternal = DefaultHandler);
|
||||
PROVIDE(SupervisorExternal = DefaultHandler);
|
||||
PROVIDE(MachineExternal = DefaultHandler);
|
||||
|
||||
PROVIDE(DefaultHandler = DefaultInterruptHandler);
|
||||
PROVIDE(ExceptionHandler = DefaultExceptionHandler);
|
||||
|
||||
/* The ESP32-C2 and ESP32-C3 have interrupt IDs 1-31, while the ESP32-C6 has
|
||||
|
@ -14,7 +14,6 @@ PROVIDE(UserExternal = DefaultHandler);
|
||||
PROVIDE(SupervisorExternal = DefaultHandler);
|
||||
PROVIDE(MachineExternal = DefaultHandler);
|
||||
|
||||
PROVIDE(DefaultHandler = DefaultInterruptHandler);
|
||||
PROVIDE(ExceptionHandler = DefaultExceptionHandler);
|
||||
|
||||
/* The ESP32-C2 and ESP32-C3 have interrupt IDs 1-31, while the ESP32-C6 and ESP32-H2 have
|
||||
|
@ -1,3 +1,5 @@
|
||||
PROVIDE(DefaultHandler = EspDefaultHandler);
|
||||
|
||||
PROVIDE(interrupt1 = DefaultHandler);
|
||||
PROVIDE(interrupt2 = DefaultHandler);
|
||||
PROVIDE(interrupt3 = DefaultHandler);
|
||||
|
@ -1,3 +1,5 @@
|
||||
PROVIDE(DefaultHandler = EspDefaultHandler);
|
||||
|
||||
PROVIDE(level1_interrupt = DefaultHandler);
|
||||
PROVIDE(level2_interrupt = DefaultHandler);
|
||||
PROVIDE(level3_interrupt = DefaultHandler);
|
||||
|
@ -161,22 +161,32 @@ pub mod trapframe {
|
||||
// be directly exposed.
|
||||
mod soc;
|
||||
|
||||
#[cfg(xtensa)]
|
||||
#[no_mangle]
|
||||
extern "C" fn EspDefaultHandler(_level: u32, _interrupt: peripherals::Interrupt) {
|
||||
#[cfg(feature = "log")]
|
||||
warn!("Unhandled level {} interrupt: {:?}", _level, _interrupt);
|
||||
#[cfg(not(feature = "defmt"))]
|
||||
panic!("Unhandled level {} interrupt: {:?}", _level, _interrupt);
|
||||
|
||||
#[cfg(feature = "defmt")]
|
||||
warn!(
|
||||
panic!(
|
||||
"Unhandled level {} interrupt: {:?}",
|
||||
_level,
|
||||
defmt::Debug2Format(&_interrupt)
|
||||
);
|
||||
}
|
||||
|
||||
#[cfg(xtensa)]
|
||||
#[cfg(riscv)]
|
||||
#[no_mangle]
|
||||
extern "C" fn DefaultHandler() {}
|
||||
extern "C" fn EspDefaultHandler(_interrupt: peripherals::Interrupt) {
|
||||
#[cfg(not(feature = "defmt"))]
|
||||
panic!("Unhandled interrupt: {:?}", _interrupt);
|
||||
|
||||
#[cfg(feature = "defmt")]
|
||||
panic!(
|
||||
"Unhandled interrupt: {:?}",
|
||||
defmt::Debug2Format(&_interrupt)
|
||||
);
|
||||
}
|
||||
|
||||
/// Available CPU cores
|
||||
///
|
||||
|
Loading…
x
Reference in New Issue
Block a user