Nexus Embedded Platform
0.1.0
Statically assembled reusable embedded mechanisms
Loading...
Searching...
No Matches
memory.h
Go to the documentation of this file.
1
6
#ifndef NEXUS_CORE_MEMORY_H
7
#define NEXUS_CORE_MEMORY_H
8
9
#include "nexus_config.h"
10
28
#if !defined(__GNUC__) && !defined(__clang__)
29
#error \
30
"Optional memory placement requires the maintained GNU-compatible compiler"
31
#endif
32
33
#define NX_CORE_MEMORY_STRING_DETAIL(value) #value
34
#define NX_CORE_MEMORY_STRING(value) NX_CORE_MEMORY_STRING_DETAIL(value)
35
#define NX_CORE_MEMORY_ATTRIBUTE(name) \
36
__attribute__((section(name "." NX_CORE_MEMORY_STRING(__COUNTER__)), \
37
aligned(4), nocommon))
38
39
#if defined(NEXUS_MEMORY_ADDSRAM) && NEXUS_MEMORY_ADDSRAM == 1
40
#define NX_MEMORY_ADDSRAM_DATA NX_CORE_MEMORY_ATTRIBUTE(".nx_addsram_data")
41
#define NX_MEMORY_ADDSRAM_BSS NX_CORE_MEMORY_ATTRIBUTE(".bss.nx_addsram")
42
#define NX_MEMORY_ADDSRAM_NOINIT \
43
NX_CORE_MEMORY_ATTRIBUTE(".bss.nx_addsram_noinit")
44
#else
45
#define NX_MEMORY_ADDSRAM_DATA \
46
_Pragma("GCC error \"ADDSRAM memory region is not selected\"")
47
#define NX_MEMORY_ADDSRAM_BSS NX_MEMORY_ADDSRAM_DATA
48
#define NX_MEMORY_ADDSRAM_NOINIT NX_MEMORY_ADDSRAM_DATA
49
#endif
50
51
#if defined(NEXUS_MEMORY_TCM) && NEXUS_MEMORY_TCM == 1
52
#define NX_MEMORY_TCM_DATA NX_CORE_MEMORY_ATTRIBUTE(".nx_tcm_data")
53
#define NX_MEMORY_TCM_BSS NX_CORE_MEMORY_ATTRIBUTE(".bss.nx_tcm")
54
#define NX_MEMORY_TCM_NOINIT NX_CORE_MEMORY_ATTRIBUTE(".bss.nx_tcm_noinit")
55
#else
56
#define NX_MEMORY_TCM_DATA \
57
_Pragma("GCC error \"TCM memory region is not selected\"")
58
#define NX_MEMORY_TCM_BSS NX_MEMORY_TCM_DATA
59
#define NX_MEMORY_TCM_NOINIT NX_MEMORY_TCM_DATA
60
#endif
61
62
#if defined(NEXUS_MEMORY_CCM) && NEXUS_MEMORY_CCM == 1
63
#define NX_MEMORY_CCM_DATA NX_CORE_MEMORY_ATTRIBUTE(".nx_ccm_data")
64
#define NX_MEMORY_CCM_BSS NX_CORE_MEMORY_ATTRIBUTE(".bss.nx_ccm")
65
#define NX_MEMORY_CCM_NOINIT NX_CORE_MEMORY_ATTRIBUTE(".bss.nx_ccm_noinit")
66
#else
67
#define NX_MEMORY_CCM_DATA \
68
_Pragma("GCC error \"CCM memory region is not selected\"")
69
#define NX_MEMORY_CCM_BSS NX_MEMORY_CCM_DATA
70
#define NX_MEMORY_CCM_NOINIT NX_MEMORY_CCM_DATA
71
#endif
72
73
#endif
core
include
nexus
core
memory.h
Generated by
1.14.0