ra8-firmware 0.1.0
Bare-metal firmware for the Renesas RA8 family (RA8D2 / RA8P1)
Loading...
Searching...
No Matches
ra8_vsource.h
Go to the documentation of this file.
1
52
53#pragma once
54
55#ifdef __cplusplus
56extern "C" {
57#endif
58
59#include <stdint.h>
60
61#include "ra8_err.h"
62
79typedef ra8_err_t (*ra8_vsource_read_fn)(void* ctx, uint64_t offset, uint8_t* buf, uint32_t len);
80
90typedef struct {
92 void* ctx;
93 const uint8_t* xip;
94 uint64_t base;
95 uint64_t size;
97
106typedef struct {
108 uint32_t cap;
109 uint32_t count;
111
133[[nodiscard]] ra8_err_t ra8_vsource_init(ra8_vsource_t* vs, ra8_vsource_obj_t* objs, uint32_t cap);
134
162 void* ctx,
163 uint64_t base,
164 uint64_t size,
165 uint32_t* out_id);
166
190[[nodiscard]] ra8_err_t
191ra8_vsource_add_xip(ra8_vsource_t* vs, const uint8_t* xip_base, uint64_t size, uint32_t* out_id);
192
224[[nodiscard]] ra8_err_t ra8_vsource_loader(void* ctx,
225 uint32_t object_id,
226 uint64_t offset,
227 uint8_t* frame,
228 uint32_t frame_bytes);
229
254[[nodiscard]] ra8_err_t ra8_vsource_xip_ptr(const ra8_vsource_t* vs,
255 uint32_t object_id,
256 uint64_t offset,
257 uint32_t len,
258 const uint8_t** out_ptr);
259
260#ifdef __cplusplus
261}
262#endif
Error Code Definitions for ra8-firmware.
ra8_err_codes_t ra8_err_t
Canonical error-return type used by every ra8-firmware API.
Definition ra8_err.h:546
ra8_err_t ra8_vsource_xip_ptr(const ra8_vsource_t *vs, uint32_t object_id, uint64_t offset, uint32_t len, const uint8_t **out_ptr)
Get a direct pointer into an XIP object (no copy, no cache).
ra8_err_t ra8_vsource_loader(void *ctx, uint32_t object_id, uint64_t offset, uint8_t *frame, uint32_t frame_bytes)
Fill a page frame from an object – the ra8_vmem_loader_fn adapter.
Definition ra8_vsource.c:84
ra8_err_t ra8_vsource_add_paged(ra8_vsource_t *vs, ra8_vsource_read_fn read, void *ctx, uint64_t base, uint64_t size, uint32_t *out_id)
Register a storage-paged object; returns its object_id.
Definition ra8_vsource.c:42
ra8_err_t(* ra8_vsource_read_fn)(void *ctx, uint64_t offset, uint8_t *buf, uint32_t len)
Read len bytes at offset from a paged object's backing.
Definition ra8_vsource.h:79
ra8_err_t ra8_vsource_add_xip(ra8_vsource_t *vs, const uint8_t *xip_base, uint64_t size, uint32_t *out_id)
Register an execute-in-place (memory-mapped) object; returns its id.
Definition ra8_vsource.c:66
ra8_err_t ra8_vsource_init(ra8_vsource_t *vs, ra8_vsource_obj_t *objs, uint32_t cap)
Initialise an empty source registry over a caller-owned object array.
Definition ra8_vsource.c:29
One registered object's backing (paged or XIP).
Definition ra8_vsource.h:90
ra8_vsource_read_fn read
Paged read callback (NULL for an XIP object).
Definition ra8_vsource.h:91
void * ctx
Context passed to read.
Definition ra8_vsource.h:92
uint64_t size
Object length in bytes.
Definition ra8_vsource.h:95
uint64_t base
Paged: absolute base offset of the object.
Definition ra8_vsource.h:94
const uint8_t * xip
XIP base pointer (NULL for a paged object).
Definition ra8_vsource.h:93
Object-source registry (caller-owned; treat as private).
uint32_t count
Registered objects (next id == count).
uint32_t cap
Slot capacity.
ra8_vsource_obj_t * objs
cap object slots (caller-owned).