ra8-firmware 0.1.0
Bare-metal firmware for the Renesas RA8 family (RA8D2 / RA8P1)
Loading...
Searching...
No Matches
dualcore_mailbox.h
Go to the documentation of this file.
1
47
48#pragma once
49
50#include <stdint.h>
51
53
54#ifdef __cplusplus
55extern "C" {
56#endif
57
76
95
123typedef struct {
124 volatile uint32_t request_seq;
125 volatile uint32_t reply_seq;
126 volatile uint32_t request;
127 volatile uint32_t reply;
128 volatile uint32_t m33_signature;
129 volatile uint32_t m33_replies;
131
150static inline volatile dualcore_mailbox_t* dualcore_mailbox(void)
151{
152 return (volatile dualcore_mailbox_t*)(uintptr_t)k_dualcore_mailbox_addr;
153}
154
155#ifdef __cplusplus
156}
157#endif
static volatile dualcore_mailbox_t * dualcore_mailbox(void)
Typed pointer to the fixed-address shared mailbox.
dualcore_mailbox_addr_t
Where this app puts its mailbox inside the board's shared window.
@ k_dualcore_mailbox_addr
Mailbox base = window base.
dualcore_mailbox_const_t
Compile-time signature and transform constants.
@ k_dualcore_m33_add
Reply = request * mul + add.
@ k_dualcore_m33_mul
Reply = request * mul + add.
@ k_dualcore_poll_budget
Bounded spin iters per wait (Rule 2).
@ k_dualcore_m33_signature
M33 stamps this once it boots ("33").
Where the EK-RA8D2's Cortex-M85 and Cortex-M33 meet, stated once.
@ k_ra8_board_shared_ram_base
Start of SRAM2: the CPU0 <-> CPU1 meeting window.
Cross-core message block backed by a fixed shared-SRAM address.
volatile uint32_t reply_seq
M33 sets equal to request_seq when done.
volatile uint32_t request_seq
M85 increments after writing request.
volatile uint32_t request
M85 -> M33: the operand to transform.
volatile uint32_t m33_signature
M33 stamps k_dualcore_m33_signature.
volatile uint32_t m33_replies
M33 increments per reply (liveness count).
volatile uint32_t reply
M33 -> M85: request * 3 + 1.