Loading...
Searching...
No Matches
mtd_emulated.h
1/*
2 * SPDX-FileCopyrightText: 2023 Gunar Schorcht
3 * SPDX-License-Identifier: LGPL-2.1-only
4 */
5
6#pragma once
7
25
26#include <stdbool.h>
27
28#include "board.h"
29#include "macros/utils.h"
30#include "mtd.h"
31
32#ifdef __cplusplus
33extern "C" {
34#endif
35
54#define MTD_EMULATED_DEV(n, sc, pps, ps) \
55 uint8_t _mtd_emulated_memory ## n[sc * pps * ps]; \
56 \
57 mtd_emulated_t mtd_emulated_dev ## n = { \
58 .base = { \
59 .driver = &_mtd_emulated_driver, \
60 .sector_count = sc, \
61 .pages_per_sector = pps, \
62 .page_size = ps, \
63 .write_size = 1, \
64 }, \
65 .size = sc * pps * ps, \
66 .memory = _mtd_emulated_memory ## n, \
67 .init_done = false, \
68 }; \
69 \
70 XFA_CONST(mtd_dev_t, mtd_dev_xfa, 99) CONCAT(*mtd_emulated, n) = (mtd_dev_t *)&mtd_emulated_dev ## n
71
72#if MODULE_VFS_AUTO_MOUNT || DOXYGEN
87#define MTD_EMULATED_DEV_FS(n, m, fs) \
88 VFS_AUTO_MOUNT(fs, VFS_MTD(mtd_emulated_dev ## n), "/mtde" # n, m)
89
90#endif /* MODULE_VFS || DOXYGEN */
91
95typedef struct {
97 size_t size;
98 uint8_t *memory;
99 bool init_done;
101
106
107#ifdef __cplusplus
108}
109#endif
110
Various helper macros.
const mtd_desc_t _mtd_emulated_driver
Emulated MTD device operations table for mtd.
struct mtd_desc mtd_desc_t
MTD driver interface.
Definition mtd.h:100
MTD device descriptor.
Definition mtd.h:108
Device descriptor for a MTD device that is emulated in RAM.
bool init_done
indicates whether initialization is already done
mtd_dev_t base
inherit from mtd_dev_t object
size_t size
total size of the MTD device in bytes
uint8_t * memory
RAM that is used for the emulated MTD device.