39static const char*
s_tag =
"RESET";
55typedef enum : uint32_t {
355 if (rstsr0_clear != 0U) {
363 const uint32_t rstsr1_clear =
365 if (rstsr1_clear != 0U) {
507 volatile uint8_t* reg =
nullptr;
518 const uint16_t prcr_cur = *prcr;
525 const uint8_t before = *reg;
526 *reg = disable ? (uint8_t)(before | mask) : (uint8_t)(before & (uint8_t)~mask);
530 const uint16_t prcr_now = *prcr;
541 volatile uint8_t* reg =
nullptr;
550 *disabled = ((*reg & mask) != 0U);
static const char * s_tag
Logging / check tag.
Annotation-attribute framework macros for ra8-firmware.
#define RA8_INTERNAL
Marker that a function is intended to be static (file-local).
Validation and Error-Checking Macros for ra8-firmware.
#define RA8_CHECK_NULL_PTR(ptr, tag, message)
Reject nullptr pointer, returning k_ra8_err_null_ptr.
Error Code Definitions for ra8-firmware.
@ k_ra8_err_invalid_arg
Invalid function argument.
@ k_ra8_ok
Success – operation completed with all postconditions satisfied.
ra8_err_codes_t ra8_err_t
Canonical error-return type used by every ra8-firmware API.
Shared CPU-intrinsic seam for the HAL drivers (host/target split).
static void ra8_hw_wait_for_reset(void)
Barrier-then-spin used after requesting a system reset.
Lightweight Logging Interface for ra8-firmware.
#define ra8_log_info_val(tag, message, value)
RA8 log info val.
#define ra8_log_info(tag, message)
RA8 log info.
#define ra8_log_error(tag, message)
RA8 log error.
static ra8_reset_cause_t internal_decode_rstsr3(uint8_t rstsr3)
Decode the RSTSR3 byte.
ra8_err_t ra8_reset_get_cause(ra8_reset_cause_t *out)
Decode the latched RSTSRn flags into a single primary cause.
ra8_err_t ra8_reset_get_source_mask(ra8_reset_source_t source, bool *disabled)
Read whether a specific reset source is currently masked (disabled).
ra8_err_t ra8_reset_init(void)
Snapshot the reset cause at boot.
static void internal_read_raw(ra8_reset_raw_t *out)
Read RSTSR0/1/2/3 into out.
void ra8_reset_test_only_reset_state(void)
Reset the cached reset-cause snapshot for host tests.
void ra8_reset_software_reset(void)
Trigger a software-initiated system reset.
ra8_err_t ra8_reset_get_raw(ra8_reset_raw_t *out)
Read the raw RSTSR0 / RSTSR1 / RSTSR2 / RSTSR3 register words.
static ra8_reset_cause_t internal_decode_rstsr0(uint8_t rstsr0)
Decode the RSTSR0 byte.
static bool internal_source_loc(ra8_reset_source_t source, volatile uint8_t **reg, uint8_t *mask)
Resolve a reset source to its SYRSTMSKn register + bit mask.
ra8_err_t ra8_reset_set_source_mask(ra8_reset_source_t source, bool disable)
Enable or disable the occurrence of a specific reset source.
ra8_err_t ra8_reset_get_attribution(uint32_t *out)
Read the RSTSAR (Reset Security Attribution) register.
ra8_err_t ra8_reset_clear_cause(uint32_t mask)
Clear (write 0 to) the requested set of latched RSTSRn flags.
ra8_reset_clear_layout_t
Bit layout of the mask argument to ra8_reset_clear_cause.
@ k_ra8_reset_mask_rstsr2_cwsf
Write 1 to RSTSR2.CWSF.
@ k_ra8_reset_mask_rstsr1_window
RSTSR1 selector window.
@ k_ra8_reset_mask_rstsr1_shift
RSTSR1 mask <<8.
@ k_ra8_reset_mask_rstsr0_msk
RSTSR0 selector window.
static ra8_reset_cause_t internal_decode_rstsr1(uint32_t rstsr1)
Decode the RSTSR1 word.
static ra8_reset_cause_t internal_decode(const ra8_reset_raw_t *raw)
Decode raw RSTSRn words into a single primary cause.
Reset cause introspection + software reset trigger.
ra8_reset_cause_t
Decoded reset-cause taxonomy.
@ k_ra8_reset_cause_common_memory
RSTSR1.CMRF.
@ k_ra8_reset_cause_lockup0
RSTSR1.CLURF.
@ k_ra8_reset_cause_lvd4
RSTSR0.LVD4RF.
@ k_ra8_reset_cause_power_on
RSTSR0.PORF.
@ k_ra8_reset_cause_temperature
RSTSR3.TEMPRF.
@ k_ra8_reset_cause_wdt0
RSTSR1.WDTRF.
@ k_ra8_reset_cause_local_memory1
RSTSR1.LM1RF.
@ k_ra8_reset_cause_lockup1
RSTSR1.CLU1RF.
@ k_ra8_reset_cause_bus_peripheral_mpu
RSTSR1.BUSSRF.
@ k_ra8_reset_cause_overcurrent
RSTSR3.OCPRF.
@ k_ra8_reset_cause_software
RSTSR1.SWRF.
@ k_ra8_reset_cause_lvd5
RSTSR0.LVD5RF.
@ k_ra8_reset_cause_local_memory0
RSTSR1.LM0RF.
@ k_ra8_reset_cause_deep_sw_standby
RSTSR0.DPSRSTF.
@ k_ra8_reset_cause_wdt1
RSTSR1.WDT1RF.
@ k_ra8_reset_cause_network
RSTSR1.NWRF.
@ k_ra8_reset_cause_core_voltage
RSTSR3.CVMRF.
@ k_ra8_reset_cause_warm_start
RSTSR2.CWSF == 1.
@ k_ra8_reset_cause_lvd0
RSTSR0.LVD0RF.
@ k_ra8_reset_cause_lvd2
RSTSR0.LVD2RF.
@ k_ra8_reset_cause_unknown
No flag latched.
@ k_ra8_reset_cause_iwdt
RSTSR1.IWDTRF.
@ k_ra8_reset_cause_lvd1
RSTSR0.LVD1RF.
ra8_reset_source_t
Reset sources whose occurrence can be individually disabled.
@ k_ra8_reset_source_pvd1
Voltage-monitor-1 reset (SYRSTMSK2).
@ k_ra8_reset_source_bus
Bus error reset (SYRSTMSK0).
@ k_ra8_reset_source_count
Sentinel: number of maskable sources.
@ k_ra8_reset_source_pvd2
Voltage-monitor-2 reset (SYRSTMSK2).
@ k_ra8_reset_source_iwdt
Independent watchdog reset (SYRSTMSK0).
@ k_ra8_reset_source_lm1
Local-memory-1 error reset (SYRSTMSK1).
@ k_ra8_reset_source_cm
Common-memory error reset (SYRSTMSK0).
@ k_ra8_reset_source_sw
Software reset (SYRSTMSK0).
@ k_ra8_reset_source_wdt1
CPU1 watchdog reset (SYRSTMSK1).
@ k_ra8_reset_source_lm0
Local-memory-0 error reset (SYRSTMSK0).
@ k_ra8_reset_source_clu1
CPU1 lockup reset (SYRSTMSK1).
@ k_ra8_reset_source_wdt0
CPU0 watchdog reset (SYRSTMSK0).
@ k_ra8_reset_source_clu0
CPU0 lockup reset (SYRSTMSK0).
Reset block register layout (offsets, bit masks, accessors)for the Renesas RA8D2.
static volatile uint8_t * ra8_reset_syrstmsk0(void)
Pointer to the 8-bit SYRSTMSK0 register.
static volatile uint8_t * ra8_reset_rstsr2(void)
Pointer to the 8-bit RSTSR2 register.
@ k_ra8_reset_rstsr3_temprf_msk
TEMPRF mask.
@ k_ra8_reset_rstsr3_cvmrf_msk
CVMRF mask.
@ k_ra8_reset_rstsr3_ocprf_msk
OCPRF mask.
@ k_ra8_reset_rstsr2_cwsf_msk
CWSF mask.
static volatile uint32_t * ra8_reset_aircr(void)
Pointer to the Cortex-M85 SCB AIRCR register.
static volatile uint32_t * ra8_reset_rstsar(void)
Pointer to the 32-bit RSTSAR (security attribution) register.
@ k_ra8_reset_syrstmsk0_lm0_msk
LM0MASK: local-memory-0 error.
@ k_ra8_reset_syrstmsk0_wdt0_msk
WDT0MASK: CPU0 WDT reset.
@ k_ra8_reset_syrstmsk0_cm_msk
CMMASK: common-memory error.
@ k_ra8_reset_syrstmsk0_clu0_msk
CLU0MASK: CPU0 lockup reset.
@ k_ra8_reset_syrstmsk0_iwdt_msk
IWDTMASK: independent WDT reset.
@ k_ra8_reset_syrstmsk0_bus_msk
BUSMASK: bus error reset.
@ k_ra8_reset_syrstmsk0_sw_msk
SWMASK: software reset.
static volatile uint8_t * ra8_reset_syrstmsk2(void)
Pointer to the 8-bit SYRSTMSK2 register.
static volatile uint8_t * ra8_reset_rstsr0(void)
Pointer to the 8-bit RSTSR0 register.
static volatile uint16_t * ra8_reset_prcr(void)
Pointer to the 16-bit PRCR write-protect register.
static volatile uint8_t * ra8_reset_syrstmsk1(void)
Pointer to the 8-bit SYRSTMSK1 register.
@ k_ra8_reset_syrstmsk1_clu1_msk
CLU1MASK: CPU1 lockup reset.
@ k_ra8_reset_syrstmsk1_wdt1_msk
WDT1MASK: CPU1 WDT reset.
@ k_ra8_reset_syrstmsk1_lm1_msk
LM1MASK: local-memory-1 error.
@ k_ra8_reset_aircr_vectkey_value
Mandatory write key.
@ k_ra8_reset_aircr_sysresetreq_msk
SYSRESETREQ mask.
@ k_ra8_reset_aircr_vectkey_pos
VECTKEY field position.
@ k_ra8_reset_prcr_key
Mandatory 0xA5 password, upper byte.
@ k_ra8_reset_prcr_pr_bits_msk
Writable PR0..PR7 enable bits (low byte).
@ k_ra8_reset_prcr_prc5_msk
PRC5: reset-control register group.
@ k_ra8_reset_rstsr0_porf_msk
PORF mask.
@ k_ra8_reset_rstsr0_lvd0rf_msk
LVD0RF mask.
@ k_ra8_reset_rstsr0_dpsrstf_msk
DPSRSTF mask.
@ k_ra8_reset_rstsr0_lvd5rf_msk
LVD5RF mask.
@ k_ra8_reset_rstsr0_lvd2rf_msk
LVD2RF mask.
@ k_ra8_reset_rstsr0_lvd1rf_msk
LVD1RF mask.
@ k_ra8_reset_rstsr0_lvd4rf_msk
LVD4RF mask.
static volatile uint32_t * ra8_reset_rstsr1(void)
Pointer to the 32-bit RSTSR1 register.
@ k_ra8_reset_rstsr1_swrf_msk
SWRF mask.
@ k_ra8_reset_rstsr1_nwrf_msk
NWRF mask.
@ k_ra8_reset_rstsr1_lm0rf_msk
LM0RF mask.
@ k_ra8_reset_rstsr1_iwdtrf_msk
IWDTRF mask.
@ k_ra8_reset_rstsr1_lm1rf_msk
LM1RF mask.
@ k_ra8_reset_rstsr1_cmrf_msk
CMRF mask.
@ k_ra8_reset_rstsr1_clurf_msk
CLURF mask.
@ k_ra8_reset_rstsr1_wdt1rf_msk
WDT1RF mask.
@ k_ra8_reset_rstsr1_wdtrf_msk
WDTRF mask.
@ k_ra8_reset_rstsr1_bussrf_msk
BUSSRF mask.
@ k_ra8_reset_rstsr1_clu1rf_msk
CLU1RF mask.
static volatile uint8_t * ra8_reset_rstsr3(void)
Pointer to the 8-bit RSTSR3 register.
@ k_ra8_reset_syrstmsk2_pvd1_msk
PVD1MASK: voltage-monitor-1 reset.
@ k_ra8_reset_syrstmsk2_pvd2_msk
PVD2MASK: voltage-monitor-2 reset.
Raw register snapshot returned by ra8_reset_get_raw.
uint32_t rstsr1
Raw RSTSR1 word.
uint8_t rstsr0
Raw RSTSR0 byte.
uint8_t rstsr3
Raw RSTSR3 byte.
uint8_t rstsr2
Raw RSTSR2 byte.
File-scope cached snapshot of reset cause + raw registers.
ra8_reset_cause_t cause
Decoded primary cause.
bool initialized
True once ra8_reset_init ran.
ra8_reset_raw_t raw
Raw register words at boot.