71typedef enum : uintptr_t {
86typedef enum : uint32_t {
124 for (
volatile uint32_t d = 0U; d < (uint32_t)
k_hold_spins; d++) {
125 __asm
volatile(
"nop");
131 const uint32_t pidr = *pcntr2;
213 __asm
volatile(
"nop");
227#ifndef RA8_OFF_TARGET
void cpu1_reset_handler(void)
CPU1 reset handler.
uint32_t g_ra8_ls_cpu1_data_end
uint32_t g_ra8_ls_cpu1_bss_start
uint32_t g_ra8_ls_cpu1_data_load
uint32_t g_ra8_ls_cpu1_bss_end
const uintptr_t g_cpu1_vector_table[]
Minimal Armv8-M vector table for CPU1.
uint32_t g_ra8_ls_cpu1_stack_top
uint32_t g_ra8_ls_cpu1_data_start
static void cpu1_fault_handler(void)
CPU1 default fault handler: park the core.
m33_port_addr_t
MMIO addresses of the PORT registers the M33 hold loop drives.
@ k_port6_pcntr1_addr
PORT6 PCNTR1: {PODR[31:16], PDR[15:0]} (LED1).
@ k_port0_pcntr2_addr
PORT0 PCNTR2: {EIDR[31:16], PIDR[15:0]} (SW1).
static void cpu1_hold_page(void)
CPU1 application loop: hold the page, blink the active-core LED, poll SW1.
m33_hold_const_t
PCNTR field constants and the hold-loop delay bound.
@ k_led1_pdr_out
PCNTR1 PDR pin 0 = output direction.
@ k_hold_spins
Bounded busy-delay spins per hold pass.
@ k_sw1_pressed
SW1 active-low: 0 = pressed.
@ k_sw1_released
SW1 active-low: 1 = released (not pressed).
@ k_led1_podr_on
PCNTR1 PODR pin 0 = drive high (bit 16).
@ k_sw1_pidr_bit
SW1 = PORT0 pin 9 (PIDR bit 9).
Shared-SRAM contract for the low-power "hold the page" dual-core demo.
static volatile lowpower_mailbox_t * lowpower_mailbox(void)
Typed pointer to the fixed-address shared mailbox.
Cross-core handoff block backed by a fixed shared-SRAM address.
volatile uint32_t page_num
Held page; M85 sets 0, M33 bumps on turn.
volatile uint32_t m33_heartbeat
M33 increments each hold-loop iteration.
volatile uint32_t sw1_events
M33 counts SW1 (page-turn) press edges.