Contiki-NG
Loading...
Searching...
No Matches

Shared memory layout between the application core and the network core. More...

#include <arch/cpu/nrf/net/nrf-ipc.h>

Data Fields

uint32_t version
 Protocol version for compatibility checking.
 
volatile uint32_t net_ready
 Set to 1 by the net core when it has initialized the radio.
 
struct nrf_ipc_msg cmd
 Command mailbox (app -> net).
 
volatile uint8_t cmd_seq
 Sequence number set by app core.
 
struct nrf_ipc_msg rsp
 Response mailbox (net -> app).
 
volatile uint8_t rsp_seq
 Echoed from cmd_seq by net core.
 
struct { 
 
rx 
 Received data frame (net -> app, asynchronous).
 
struct { 
 
rx_ack 
 Received ACK frame (net -> app, asynchronous).
 
volatile uint32_t heartbeat
 Heartbeat counter (used as IPC MAC RX frame counter).
 
struct { 
 
   volatile uint16_t   head 
 Written by net core.
 
   volatile uint16_t   tail 
 Written by app core.
 
   volatile uint32_t   overflow 
 Characters dropped due to full buffer.
 
log 
 Log ring buffer (net -> app).
 

Detailed Description

Shared memory layout between the application core and the network core.

The command/response mailbox is used for synchronous operations: the app core writes a command, signals the net core, and busy-waits for the response.

The RX area is used for asynchronous frame reception: the net core writes a received frame and signals the app core.

Definition at line 154 of file nrf-ipc.h.

Field Documentation

◆ [struct]

struct { ... } nrf_ipc_shared_mem::log

Log ring buffer (net -> app).

Single-producer, single-consumer.

◆ [struct]

struct { ... } nrf_ipc_shared_mem::rx

Received data frame (net -> app, asynchronous).

Used for non-ACK frames delivered via the process thread.

Referenced by packet_input().

◆ [struct]

struct { ... } nrf_ipc_shared_mem::rx_ack

Received ACK frame (net -> app, asynchronous).

Separate from rx to avoid CSMA's ACK detection loop consuming data frames. Only 3-byte 802.15.4 ACK frames go here.

Referenced by packet_input().