69typedef enum : uint64_t {
78typedef enum : uint8_t {
84typedef enum : uint32_t {
150 for (
unsigned i = 0U; (i < size) && ((idx + (uint64_t)i) < (uint64_t)
k_bkup_reg_count); ++i) {
186 s_bkup.vbtber = (uint8_t)value;
198 for (
unsigned i = 0U; (i < size) && ((idx + (uint64_t)i) < (uint64_t)
k_bkup_reg_count); ++i) {
199 s_bkup_vbtbkr[idx + (uint64_t)i] = (uint8_t)(value >> (8U * i));
215 if (
s_bkup.dropped_prc1 != 0U) {
218 " VBATT-BKUP : VBTBKRn writes=%u dropped=%u (PRCR.PRC1 locked: unlock 0xA502)\n",
223 if (
s_bkup.dropped_vbae != 0U) {
226 " VBATT-BKUP : VBTBKRn writes=%u dropped=%u (VBAE=0: enable VBTBER.VBAE)\n",
231 if (
s_bkup.writes == 0U) {
247 .name =
"VBATT-BKUP",
static uint8_t s_bkup_vbtbkr[k_bkup_reg_count]
Retained VBTBKRn bytes – the battery-backed domain.
static void internal_bkup_reset(void)
Reset only the VBATT control state; the backup bytes are retained.
static uint64_t internal_bkup_read(uc_engine *uc, uint64_t addr, unsigned size)
MMIO read inside the VBATT backup window (width-aware).
bkup_order_t
Per-tick order slot for the VBATT-backup block (relative order).
@ k_bkup_block_order
After the LVD block; report order.
static void internal_bkup_block_register(void)
Register the VBATT-backup block before main (host constructor).
static void internal_bkup_write(uc_engine *uc, uint64_t addr, unsigned size, uint64_t value)
MMIO write inside the VBATT backup window (width-aware).
static bkup_ctrl_t s_bkup
bkup_vbtber_mask_t
VBTBER field masks (HUM Ch 12.2.6 p 504).
@ k_bkup_vbtber_mask_vbae
VBAE @ bit 3: 1 = enable VBTBKRn access.
@ k_bkup_vbtber_reset
"Value after reset" row: VBAE = 1.
bkup_geom_t
VBATT backup window geometry (ra8_bkup_regs.h).
@ k_bkup_off_vbtber
VBTBER access-enable (at base).
@ k_bkup_off_vbtbkr0
VBTBKR0 (0x4001ED00 - 0x4001EC40).
@ k_bkup_span
Covers VBTBER (0x00) .
@ k_bkup_reg_count
128 byte-wide VBTBKRn slots.
static const board_periph_block_t s_k_bkup_block
VBATT-backup block descriptor (self-registered with the core).
static void internal_bkup_report(void)
End-of-run VBATT-backup section: writes accepted / dropped this run.
Decentralized peripheral-block registry for the board emulator core.
void board_periph_register_block(const board_periph_block_t *block)
Register a peripheral block's descriptor with the core registry.
Module-private PRCR unlock state shared with the protected blocks.
bool priv_board_prcr_group_unlocked(uint16_t group_mask)
Report whether every bit in group_mask is currently unlocked.
@ k_board_prcr_grp1_lpm
PRC1: low-power modes + VBATT backup.
Bounded raw-descriptor I/O seam for the RA8 emulator.
emu_io_result_t priv_emu_io_errf(const char *format,...)
Format bounded text and write it to the injected error descriptor.
#define RA8_INTERNAL
Marker that a function is intended to be static (file-local).
VBATT control state (cleared by a reset; data is not).
uint8_t vbtber
VBTBER access-enable shadow (VBAE @ bit 3).
uint32_t dropped_prc1
VBTBKRn writes dropped: PRCR.PRC1 locked.
uint32_t writes
VBTBKRn writes accepted (report).
uint32_t dropped_vbae
VBTBKRn writes dropped: VBTBER.VBAE = 0.
A modelled peripheral block's self-description for the core registry.