Please see the comment below.
On 2023-07-05 13:18, Sebastian Huber wrote:
---
bsps/sparc/leon3/include/bsp/leon3.h | 12 ++++
bsps/sparc/leon3/start/bspclean.c | 89 +++++++++++++++++++---------
bsps/sparc/leon3/start/bspsmp.c | 16 +----
3 files changed, 77 insertions(+), 40 deletions(-)
@@ -92,7 +124,10 @@ void bsp_fatal_extension(
#endif
#if BSP_RESET_BOARD_AT_EXIT
- /* If user wants to implement custom reset/reboot it can be done here */
- bsp_reset();
+ /*
+ * Stop the system termination right now. This skips the dynamically
+ * installed fatal error extensions and the generics shutdown procedure.
+ */
+ _CPU_Fatal_halt( source, code );
#endif
}
Some thoughts and questions on the implication of this.
As I understand it, bsp_reset() here was intended as a way for the user to
provide an application/mission specific way to take late action on a fatal
event. And also that bsp_reset() was called in a "single-processor
state" where
the other processors had already been stopped (powered down).
Some potential use cases for action in a bsp_reset(), I can think of:
- Log an entry in an off-chip, on-board non-volatile memory with a record
consisting of system date, fatal_source and fatal_code.
- Signal the event, using GPIO, to an external failure/redundancy
controller.
- Tell an on-board reset circuit to initiate a board reset/shutdown.
- Issuing a "warm" system restart by jumping to a known location in a
ROM boot
loader.
The _CPU_Fatal_halt looks like a path of no return (error mode) and no more
user hooks. But would it perhaps be possibility for the application to
provide
an extension with CONFIGURE_INITIAL_EXTENSIONS to have application specific
actions like the ones above?
--
Best regards,
Martin Åberg
Software Engineer
Frontgrade Gaisler
martin.ab...@gaisler.com
Frontgrade Gaisler AB, Kungsgatan 12, SE-411 19 GÖTEBORG, Sweden.
+46 (0) 31 775 8650, www.gaisler.com
_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel