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
18
19#include <stdbool.h>
20
21#include "board.h"
22#include "macros/utils.h"
23#include "mtd.h"
24
25#ifdef __cplusplus
26extern "C" {
27#endif
28
47#define MTD_EMULATED_DEV(n, sc, pps, ps) \
48 uint8_t _mtd_emulated_memory ## n[sc * pps * ps]; \
49 \
50 mtd_emulated_t mtd_emulated_dev ## n = { \
51 .base = { \
52 .driver = &_mtd_emulated_driver, \
53 .sector_count = sc, \
54 .pages_per_sector = pps, \
55 .page_size = ps, \
56 .write_size = 1, \
57 }, \
58 .size = sc * pps * ps, \
59 .memory = _mtd_emulated_memory ## n, \
60 .init_done = false, \
61 }; \
62 \
63 XFA_CONST(mtd_dev_t, mtd_dev_xfa, 99) CONCAT(*mtd_emulated, n) = (mtd_dev_t *)&mtd_emulated_dev ## n
64
65#if MODULE_VFS_AUTO_MOUNT || DOXYGEN
80#define MTD_EMULATED_DEV_FS(n, m, fs) \
81 VFS_AUTO_MOUNT(fs, VFS_MTD(mtd_emulated_dev ## n), "/mtde" # n, m)
82
83#endif /* MODULE_VFS || DOXYGEN */
84
88typedef struct {
90 size_t size;
91 uint8_t *memory;
92 bool init_done;
94
99
100#ifdef __cplusplus
101}
102#endif
103
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.