Nexus Embedded Platform 0.1.0
Statically assembled reusable embedded mechanisms
Loading...
Searching...
No Matches
flash.h
Go to the documentation of this file.
1
8#ifndef NEXUS_FLASH_H
9#define NEXUS_FLASH_H
10
11#include "nexus/core/time.h"
12#ifdef __cplusplus
13extern "C" {
14#endif
20typedef struct {
21 uint32_t offset;
22 uint32_t size;
24
28typedef struct {
29 uint32_t base_address;
30 uint32_t size;
31 uint32_t program_unit;
35
39typedef struct {
41 uint32_t offset;
42 uint32_t size;
45
52typedef struct {
53 const nx_flash_geometry_t* (*geometry)(const void* context);
54 nx_result_t (*read)(const void* context, uint32_t offset, void* data,
55 size_t length);
56 nx_result_t (*program)(void* context, uint32_t offset, const void* data,
57 size_t length, nx_time_us_t deadline);
58 nx_result_t (*erase)(void* context, uint32_t offset, size_t length,
59 nx_time_us_t deadline);
61
69 void* context;
70};
71
93nx_result_t nx_flash_port_read(const nx_flash_port_t* port, uint32_t offset,
94 void* data, size_t length);
120 const void* data, size_t length,
121 nx_time_us_t deadline);
138 size_t length, nx_time_us_t deadline);
162 uint32_t offset, void* data, size_t length);
179 uint32_t offset, const void* data,
180 size_t length, nx_time_us_t deadline);
195 uint32_t offset, size_t length,
196 nx_time_us_t deadline);
197#ifdef __cplusplus
198}
199#endif
200
201#endif
nx_result_t nx_flash_port_read(const nx_flash_port_t *port, uint32_t offset, void *data, size_t length)
Read bounded physical Flash without retaining destination.
nx_result_t nx_flash_port_program(const nx_flash_port_t *port, uint32_t offset, const void *data, size_t length, nx_time_us_t deadline)
Program aligned physical Flash and settle all hardware pulses.
nx_result_t nx_flash_region_validate(const nx_flash_region_t *region)
Validate region bounds against physical geometry.
nx_result_t nx_flash_region_erase(const nx_flash_region_t *region, uint32_t offset, size_t length, nx_time_us_t deadline)
Erase whole physical sectors within a writable region.
nx_result_t nx_flash_port_erase(const nx_flash_port_t *port, uint32_t offset, size_t length, nx_time_us_t deadline)
Erase a whole physical sector range with pulse settlement.
nx_result_t nx_flash_region_program(const nx_flash_region_t *region, uint32_t offset, const void *data, size_t length, nx_time_us_t deadline)
Program within an explicitly writable physical region.
const nx_flash_geometry_t * nx_flash_port_geometry(const nx_flash_port_t *port)
Query exact physical Flash geometry without side effects.
struct nx_flash_port nx_flash_port_t
Definition flash.h:15
nx_result_t nx_flash_region_read(const nx_flash_region_t *region, uint32_t offset, void *data, size_t length)
Read within an explicit physical region.
nx_result_t
Operation result; success at submission means admission only.
Definition status.h:21
Read-only physical geometry; platform reserves no product storage.
Definition flash.h:28
uint32_t base_address
Definition flash.h:29
uint32_t size
Definition flash.h:30
uint32_t program_unit
Definition flash.h:31
size_t sector_count
Definition flash.h:33
const nx_flash_sector_t * sectors
Definition flash.h:32
Shared read-only methods using one provider state.
Definition flash.h:52
nx_result_t(* read)(const void *context, uint32_t offset, void *data, size_t length)
Definition flash.h:54
nx_result_t(* program)(void *context, uint32_t offset, const void *data, size_t length, nx_time_us_t deadline)
Definition flash.h:56
nx_result_t(* erase)(void *context, uint32_t offset, size_t length, nx_time_us_t deadline)
Definition flash.h:58
Immutable interface pointing to caller-owned state.
Definition flash.h:67
const nx_flash_ops_t * ops
Definition flash.h:68
void * context
Definition flash.h:69
Explicit consumer-selected bounds; no implicit product partition.
Definition flash.h:39
uint32_t size
Definition flash.h:42
const nx_flash_port_t * port
Definition flash.h:40
uint32_t offset
Definition flash.h:41
Erase sector geometry, with offset relative to full physical Flash.
Definition flash.h:20
uint32_t size
Definition flash.h:22
uint32_t offset
Definition flash.h:21
Absolute monotonic microsecond deadlines and wrap extension.
uint64_t nx_time_us_t
Microseconds in one boot/clock domain; no wall-clock semantics.
Definition time.h:20