ra8-firmware 0.1.0
Bare-metal firmware for the Renesas RA8 family (RA8D2 / RA8P1)
Loading...
Searching...
No Matches
ra8_reset.c
Go to the documentation of this file.
1
23
24#include "ra8_reset.h"
25
26#include <stdint.h>
27
28#include "ra8_attributes.h"
29#include "ra8_check.h"
30#include "ra8_err.h"
31#include "ra8_hw_intrinsics.h"
32#include "ra8_log.h"
33#include "ra8_reset_regs.h"
34
39static const char* s_tag = "RESET";
40
61
62/* =============================================================================
63 * Cached snapshot
64 * =============================================================================
65 */
66
76
82
83/* =============================================================================
84 * Internal helpers
85 * =============================================================================
86 */
87
102{
103 /* HUM Ch 6.2.2 "RSTSR0 : Reset Status Register 0", p 257 */
104 out->rstsr0 = *ra8_reset_rstsr0();
105 /* HUM Ch 6.2.3 "RSTSR1 : Reset Status Register 1", p 258 */
106 out->rstsr1 = *ra8_reset_rstsr1();
107 /* HUM Ch 6.2.4 "RSTSR2 : Reset Status Register 2", p 261 */
108 out->rstsr2 = *ra8_reset_rstsr2();
109 /* HUM Ch 6.2.5 "RSTSR3 : Reset Status Register 3", p 262 */
110 out->rstsr3 = *ra8_reset_rstsr3();
111}
112
136{
137 if ((rstsr0 & k_ra8_reset_rstsr0_porf_msk) != 0U) {
139 }
140 if ((rstsr0 & k_ra8_reset_rstsr0_lvd0rf_msk) != 0U) {
142 }
143 if ((rstsr0 & k_ra8_reset_rstsr0_lvd1rf_msk) != 0U) {
145 }
146 if ((rstsr0 & k_ra8_reset_rstsr0_lvd2rf_msk) != 0U) {
148 }
149 if ((rstsr0 & k_ra8_reset_rstsr0_lvd4rf_msk) != 0U) {
151 }
152 if ((rstsr0 & k_ra8_reset_rstsr0_lvd5rf_msk) != 0U) {
154 }
155 if ((rstsr0 & k_ra8_reset_rstsr0_dpsrstf_msk) != 0U) {
157 }
159}
160
183{
184 if ((rstsr1 & k_ra8_reset_rstsr1_iwdtrf_msk) != 0U) {
186 }
187 if ((rstsr1 & k_ra8_reset_rstsr1_wdtrf_msk) != 0U) {
189 }
190 if ((rstsr1 & k_ra8_reset_rstsr1_swrf_msk) != 0U) {
192 }
193 if ((rstsr1 & k_ra8_reset_rstsr1_clurf_msk) != 0U) {
195 }
196 if ((rstsr1 & k_ra8_reset_rstsr1_lm0rf_msk) != 0U) {
198 }
199 if ((rstsr1 & k_ra8_reset_rstsr1_bussrf_msk) != 0U) {
201 }
202 if ((rstsr1 & k_ra8_reset_rstsr1_cmrf_msk) != 0U) {
204 }
205 if ((rstsr1 & k_ra8_reset_rstsr1_wdt1rf_msk) != 0U) {
207 }
208 if ((rstsr1 & k_ra8_reset_rstsr1_clu1rf_msk) != 0U) {
210 }
211 if ((rstsr1 & k_ra8_reset_rstsr1_lm1rf_msk) != 0U) {
213 }
214 if ((rstsr1 & k_ra8_reset_rstsr1_nwrf_msk) != 0U) {
216 }
218}
219
242{
243 if ((rstsr3 & k_ra8_reset_rstsr3_cvmrf_msk) != 0U) {
245 }
246 if ((rstsr3 & k_ra8_reset_rstsr3_ocprf_msk) != 0U) {
248 }
249 if ((rstsr3 & k_ra8_reset_rstsr3_temprf_msk) != 0U) {
251 }
253}
254
281{
283 if (cause != k_ra8_reset_cause_unknown) {
284 return cause;
285 }
286
287 cause = internal_decode_rstsr3(raw->rstsr3);
288 if (cause != k_ra8_reset_cause_unknown) {
289 return cause;
290 }
291
292 cause = internal_decode_rstsr1(raw->rstsr1);
293 if (cause != k_ra8_reset_cause_unknown) {
294 return cause;
295 }
296
297 /* HUM Ch 6.2.4 "RSTSR2 : Reset Status Register 2" p 261 */
298 if ((raw->rstsr2 & k_ra8_reset_rstsr2_cwsf_msk) != 0U) {
300 }
301
303}
304
305/* =============================================================================
306 * Public API
307 * =============================================================================
308 */
309
311{
313 s_state.cause = internal_decode(&s_state.raw);
314 s_state.initialized = true;
315 ra8_log_info_val(s_tag, "boot cause", (uint32_t)s_state.cause);
316 return k_ra8_ok;
317}
318
320{
321 s_state.initialized = false;
323 s_state.raw = (ra8_reset_raw_t){};
324}
325
327{
328 RA8_CHECK_NULL_PTR(out, s_tag, "out must not be nullptr");
329 if (s_state.initialized) {
330 *out = s_state.cause;
331 return k_ra8_ok;
332 }
333 ra8_reset_raw_t raw = {};
334 internal_read_raw(&raw);
335 *out = internal_decode(&raw);
336 return k_ra8_ok;
337}
338
340{
341 RA8_CHECK_NULL_PTR(out, s_tag, "out must not be nullptr");
342 if (s_state.initialized) {
343 *out = s_state.raw;
344 return k_ra8_ok;
345 }
347 return k_ra8_ok;
348}
349
351{
352 /* HUM Ch 6.2.2 "RSTSR0 : Reset Status Register 0" p 258 */
353 /* Note from HUM: only 0 can be written; bit must be read as 1 first. */
354 const uint8_t rstsr0_clear = (uint8_t)(mask & k_ra8_reset_mask_rstsr0_msk);
355 if (rstsr0_clear != 0U) {
356 /* HUM Ch 6.2.2 "RSTSR0", p 257 */
357 const uint8_t before = *ra8_reset_rstsr0();
358 *ra8_reset_rstsr0() = (uint8_t)(before & (uint8_t)~rstsr0_clear);
359 }
360
361 /* HUM Ch 6.2.3 "RSTSR1 : Reset Status Register 1" p 258 */
362 /* Same write-0-to-clear semantics as RSTSR0. */
363 const uint32_t rstsr1_clear =
365 if (rstsr1_clear != 0U) {
366 /* HUM Ch 6.2.3 "RSTSR1", p 258 */
367 const uint32_t before = *ra8_reset_rstsr1();
368 *ra8_reset_rstsr1() = before & ~rstsr1_clear;
369 }
370
371 if ((mask & k_ra8_reset_mask_rstsr2_cwsf) != 0U) {
372 /* HUM Ch 6.2.4 "RSTSR2 : Reset Status Register 2" p 261 */
373 /* CWSF is set by writing 1 (Note 2). */
375 }
376
377 /* Refresh the cached cause if init was already called -- the next
378 * reader should see the post-clear state, not the boot snapshot. */
379 if (s_state.initialized) {
381 s_state.cause = internal_decode(&s_state.raw);
382 }
383 return k_ra8_ok;
384}
385
387{
388 RA8_CHECK_NULL_PTR(out, s_tag, "out must not be nullptr");
389 /* HUM Ch 6.2.1 "RSTSAR : Reset Security Attribution Register", p 256 */
390 *out = *ra8_reset_rstsar();
391 return k_ra8_ok;
392}
393
395{
396 /* HUM Ch 6.1 Table 6.1 p 244 -- "Software reset / Register setting
397 * (use the software reset bit AIRCR.SYSRESETREQ)". The Cortex-M85
398 * AIRCR is documented in the ARMv8-M Architecture Reference Manual;
399 * we reproduce the constants in ra8_reset_regs.h so the driver has
400 * a single include. */
401 ra8_log_info(s_tag, "software reset");
402
403 const uint32_t aircr_value = (k_ra8_reset_aircr_vectkey_value << k_ra8_reset_aircr_vectkey_pos) |
405
406 /* HUM Ch 6.1 "Overview" p 244 */
407 /* Table 6.1 names AIRCR.SYSRESETREQ as the software-reset trigger. */
408 *ra8_reset_aircr() = aircr_value;
409
410 /* On real hardware the AIRCR write triggers a system reset within a few
411 * cycles; ::ra8_hw_wait_for_reset issues a DSB so the write retires, then
412 * spins forever so control never falls through into the caller's tail. On
413 * the host the seam returns at once so a unit test can inspect the AIRCR
414 * write it just staged. */
416}
417
418/* =============================================================================
419 * Reset-source masking (SYRSTMSK0/1/2) internals
420 * =============================================================================
421 */
422
447RA8_INTERNAL static bool
448internal_source_loc(ra8_reset_source_t source, volatile uint8_t** reg, uint8_t* mask)
449{
450 switch (source) {
452 *reg = ra8_reset_syrstmsk0();
454 return true;
456 *reg = ra8_reset_syrstmsk0();
458 return true;
460 *reg = ra8_reset_syrstmsk0();
462 return true;
464 *reg = ra8_reset_syrstmsk0();
466 return true;
468 *reg = ra8_reset_syrstmsk0();
470 return true;
472 *reg = ra8_reset_syrstmsk0();
474 return true;
476 *reg = ra8_reset_syrstmsk0();
478 return true;
480 *reg = ra8_reset_syrstmsk1();
482 return true;
484 *reg = ra8_reset_syrstmsk1();
486 return true;
488 *reg = ra8_reset_syrstmsk1();
490 return true;
492 *reg = ra8_reset_syrstmsk2();
494 return true;
496 *reg = ra8_reset_syrstmsk2();
498 return true;
500 default:
501 return false;
502 }
503}
504
506{
507 volatile uint8_t* reg = nullptr;
508 uint8_t mask = 0U;
509 if (!internal_source_loc(source, &reg, &mask)) {
510 ra8_log_error(s_tag, "set_source_mask: invalid reset source");
512 }
513
514 volatile uint16_t* prcr = ra8_reset_prcr();
515 /* Set PRCR.PRC5 to 1 (write enabled) before rewriting the reset-control
516 * group; preserve the other PRC bits. */
517 /* HUM Ch 6.2.6 "SYRSTMSK0" p 263 */
518 const uint16_t prcr_cur = *prcr;
519 *prcr = (uint16_t)((uint16_t)k_ra8_reset_prcr_key |
520 (uint16_t)(prcr_cur & (uint16_t)k_ra8_reset_prcr_pr_bits_msk) |
521 (uint16_t)k_ra8_reset_prcr_prc5_msk);
522
523 /* 1 disables the corresponding reset, 0 enables it. */
524 /* HUM Ch 6.2.6 "System Reset Mask Control" p 262 */
525 const uint8_t before = *reg;
526 *reg = disable ? (uint8_t)(before | mask) : (uint8_t)(before & (uint8_t)~mask);
527
528 /* Relock PRCR.PRC5. */
529 /* HUM Ch 6.2.6 "SYRSTMSK0" p 263 */
530 const uint16_t prcr_now = *prcr;
531 *prcr = (uint16_t)((uint16_t)k_ra8_reset_prcr_key |
532 (uint16_t)((prcr_now & (uint16_t)k_ra8_reset_prcr_pr_bits_msk) &
533 (uint16_t)~(uint16_t)k_ra8_reset_prcr_prc5_msk));
534 return k_ra8_ok;
535}
536
538{
539 RA8_CHECK_NULL_PTR(disabled, s_tag, "disabled must not be nullptr");
540
541 volatile uint8_t* reg = nullptr;
542 uint8_t mask = 0U;
543 if (!internal_source_loc(source, &reg, &mask)) {
544 ra8_log_error(s_tag, "get_source_mask: invalid reset source");
546 }
547
548 /* Reads do not require a PRCR unlock. */
549 /* HUM Ch 6.2.6 "System Reset Mask Control" p 262 */
550 *disabled = ((*reg & mask) != 0U);
551 return k_ra8_ok;
552}
static const char * s_tag
Logging / check tag.
Definition ra8_app.c:17
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.
Definition ra8_check.h:243
Error Code Definitions for ra8-firmware.
@ k_ra8_err_invalid_arg
Invalid function argument.
Definition ra8_err.h:152
@ k_ra8_ok
Success – operation completed with all postconditions satisfied.
Definition ra8_err.h:119
ra8_err_codes_t ra8_err_t
Canonical error-return type used by every ra8-firmware API.
Definition ra8_err.h:546
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.
Definition ra8_log.h:366
#define ra8_log_info(tag, message)
RA8 log info.
Definition ra8_log.h:364
#define ra8_log_error(tag, message)
RA8 log error.
Definition ra8_log.h:335
static uint32_t s_state
static ra8_reset_cause_t internal_decode_rstsr3(uint8_t rstsr3)
Decode the RSTSR3 byte.
Definition ra8_reset.c:241
ra8_err_t ra8_reset_get_cause(ra8_reset_cause_t *out)
Decode the latched RSTSRn flags into a single primary cause.
Definition ra8_reset.c:326
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).
Definition ra8_reset.c:537
ra8_err_t ra8_reset_init(void)
Snapshot the reset cause at boot.
Definition ra8_reset.c:310
static void internal_read_raw(ra8_reset_raw_t *out)
Read RSTSR0/1/2/3 into out.
Definition ra8_reset.c:101
void ra8_reset_test_only_reset_state(void)
Reset the cached reset-cause snapshot for host tests.
Definition ra8_reset.c:319
void ra8_reset_software_reset(void)
Trigger a software-initiated system reset.
Definition ra8_reset.c:394
ra8_err_t ra8_reset_get_raw(ra8_reset_raw_t *out)
Read the raw RSTSR0 / RSTSR1 / RSTSR2 / RSTSR3 register words.
Definition ra8_reset.c:339
static ra8_reset_cause_t internal_decode_rstsr0(uint8_t rstsr0)
Decode the RSTSR0 byte.
Definition ra8_reset.c:135
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.
Definition ra8_reset.c:448
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.
Definition ra8_reset.c:505
ra8_err_t ra8_reset_get_attribution(uint32_t *out)
Read the RSTSAR (Reset Security Attribution) register.
Definition ra8_reset.c:386
ra8_err_t ra8_reset_clear_cause(uint32_t mask)
Clear (write 0 to) the requested set of latched RSTSRn flags.
Definition ra8_reset.c:350
ra8_reset_clear_layout_t
Bit layout of the mask argument to ra8_reset_clear_cause.
Definition ra8_reset.c:55
@ k_ra8_reset_mask_rstsr2_cwsf
Write 1 to RSTSR2.CWSF.
Definition ra8_reset.c:59
@ k_ra8_reset_mask_rstsr1_window
RSTSR1 selector window.
Definition ra8_reset.c:58
@ k_ra8_reset_mask_rstsr1_shift
RSTSR1 mask <<8.
Definition ra8_reset.c:57
@ k_ra8_reset_mask_rstsr0_msk
RSTSR0 selector window.
Definition ra8_reset.c:56
static ra8_reset_cause_t internal_decode_rstsr1(uint32_t rstsr1)
Decode the RSTSR1 word.
Definition ra8_reset.c:182
static ra8_reset_cause_t internal_decode(const ra8_reset_raw_t *raw)
Decode raw RSTSRn words into a single primary cause.
Definition ra8_reset.c:280
Reset cause introspection + software reset trigger.
ra8_reset_cause_t
Decoded reset-cause taxonomy.
Definition ra8_reset.h:93
@ k_ra8_reset_cause_common_memory
RSTSR1.CMRF.
Definition ra8_reset.h:111
@ k_ra8_reset_cause_lockup0
RSTSR1.CLURF.
Definition ra8_reset.h:108
@ k_ra8_reset_cause_lvd4
RSTSR0.LVD4RF.
Definition ra8_reset.h:99
@ k_ra8_reset_cause_power_on
RSTSR0.PORF.
Definition ra8_reset.h:95
@ k_ra8_reset_cause_temperature
RSTSR3.TEMPRF.
Definition ra8_reset.h:104
@ k_ra8_reset_cause_wdt0
RSTSR1.WDTRF.
Definition ra8_reset.h:106
@ k_ra8_reset_cause_local_memory1
RSTSR1.LM1RF.
Definition ra8_reset.h:114
@ k_ra8_reset_cause_lockup1
RSTSR1.CLU1RF.
Definition ra8_reset.h:113
@ k_ra8_reset_cause_bus_peripheral_mpu
RSTSR1.BUSSRF.
Definition ra8_reset.h:110
@ k_ra8_reset_cause_overcurrent
RSTSR3.OCPRF.
Definition ra8_reset.h:103
@ k_ra8_reset_cause_software
RSTSR1.SWRF.
Definition ra8_reset.h:107
@ k_ra8_reset_cause_lvd5
RSTSR0.LVD5RF.
Definition ra8_reset.h:100
@ k_ra8_reset_cause_local_memory0
RSTSR1.LM0RF.
Definition ra8_reset.h:109
@ k_ra8_reset_cause_deep_sw_standby
RSTSR0.DPSRSTF.
Definition ra8_reset.h:101
@ k_ra8_reset_cause_wdt1
RSTSR1.WDT1RF.
Definition ra8_reset.h:112
@ k_ra8_reset_cause_network
RSTSR1.NWRF.
Definition ra8_reset.h:115
@ k_ra8_reset_cause_core_voltage
RSTSR3.CVMRF.
Definition ra8_reset.h:102
@ k_ra8_reset_cause_warm_start
RSTSR2.CWSF == 1.
Definition ra8_reset.h:116
@ k_ra8_reset_cause_lvd0
RSTSR0.LVD0RF.
Definition ra8_reset.h:96
@ k_ra8_reset_cause_lvd2
RSTSR0.LVD2RF.
Definition ra8_reset.h:98
@ k_ra8_reset_cause_unknown
No flag latched.
Definition ra8_reset.h:94
@ k_ra8_reset_cause_iwdt
RSTSR1.IWDTRF.
Definition ra8_reset.h:105
@ k_ra8_reset_cause_lvd1
RSTSR0.LVD1RF.
Definition ra8_reset.h:97
ra8_reset_source_t
Reset sources whose occurrence can be individually disabled.
Definition ra8_reset.h:391
@ k_ra8_reset_source_pvd1
Voltage-monitor-1 reset (SYRSTMSK2).
Definition ra8_reset.h:402
@ k_ra8_reset_source_bus
Bus error reset (SYRSTMSK0).
Definition ra8_reset.h:398
@ k_ra8_reset_source_count
Sentinel: number of maskable sources.
Definition ra8_reset.h:404
@ k_ra8_reset_source_pvd2
Voltage-monitor-2 reset (SYRSTMSK2).
Definition ra8_reset.h:403
@ k_ra8_reset_source_iwdt
Independent watchdog reset (SYRSTMSK0).
Definition ra8_reset.h:392
@ k_ra8_reset_source_lm1
Local-memory-1 error reset (SYRSTMSK1).
Definition ra8_reset.h:401
@ k_ra8_reset_source_cm
Common-memory error reset (SYRSTMSK0).
Definition ra8_reset.h:397
@ k_ra8_reset_source_sw
Software reset (SYRSTMSK0).
Definition ra8_reset.h:394
@ k_ra8_reset_source_wdt1
CPU1 watchdog reset (SYRSTMSK1).
Definition ra8_reset.h:399
@ k_ra8_reset_source_lm0
Local-memory-0 error reset (SYRSTMSK0).
Definition ra8_reset.h:396
@ k_ra8_reset_source_clu1
CPU1 lockup reset (SYRSTMSK1).
Definition ra8_reset.h:400
@ k_ra8_reset_source_wdt0
CPU0 watchdog reset (SYRSTMSK0).
Definition ra8_reset.h:393
@ k_ra8_reset_source_clu0
CPU0 lockup reset (SYRSTMSK0).
Definition ra8_reset.h:395
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.
Definition ra8_reset.h:131
uint32_t rstsr1
Raw RSTSR1 word.
Definition ra8_reset.h:133
uint8_t rstsr0
Raw RSTSR0 byte.
Definition ra8_reset.h:132
uint8_t rstsr3
Raw RSTSR3 byte.
Definition ra8_reset.h:135
uint8_t rstsr2
Raw RSTSR2 byte.
Definition ra8_reset.h:134
File-scope cached snapshot of reset cause + raw registers.
Definition ra8_reset.c:71
ra8_reset_cause_t cause
Decoded primary cause.
Definition ra8_reset.c:73
bool initialized
True once ra8_reset_init ran.
Definition ra8_reset.c:72
ra8_reset_raw_t raw
Raw register words at boot.
Definition ra8_reset.c:74