Choco OS  V.0.16.9.0
Join to the chocolate world
oc_mem_lld.h
Go to the documentation of this file.
1 
72 #ifndef SYSTEM_PORTABLE_INC_LLD_OC_MEM_LLD_H_
73 #define SYSTEM_PORTABLE_INC_LLD_OC_MEM_LLD_H_
74 
75 #include <oc_machine.h>
76 #include <oc_errors.h>
77 #include <stdbool.h>
78 #include <oc_mcs.h>
79 
85 #define _________________________________________DEFINITIONS_SECTION________________________________________________________________________
86 
89 //==========================================================================================================================================
96 //==========================================================================================================================================
97 #define oC_MEM_LLD_MEMORY_ALIGNMENT oC_MCS_MEMORY_ALIGNMENT
98 
99 //==========================================================================================================================================
104 //==========================================================================================================================================
105 #define oC_MEM_LLD_STACK_ALIGNMENT oC_MCS_STACK_MEMORY_ALIGNMENT
106 
107 //==========================================================================================================================================
113 //==========================================================================================================================================
114 typedef struct
115 {
116  const void * BaseAddress;
117  oC_MemorySize_t Size;
121  bool Cachable;
122  bool Bufforable;
123  uint32_t RegionNumber;
126 
127 //==========================================================================================================================================
133 //==========================================================================================================================================
134 typedef enum
135 {
139 
140 #undef _________________________________________DEFINITIONS_SECTION________________________________________________________________________
141 
148 #define _________________________________________TYPES_SECTION_____________________________________________________________________________
149 
152 //==========================================================================================================================================
156 //==========================================================================================================================================
157 typedef oC_UInt_t oC_MEM_LLD_Size_t;
158 
159 //==========================================================================================================================================
166 //==========================================================================================================================================
167 typedef void (*oC_MEM_LLD_Interrupt_t)(void);
168 
169 #undef _________________________________________TYPES_SECTION_____________________________________________________________________________
170 
177 #define _________________________________________FUNCTIONS_SECTION__________________________________________________________________________
178 
181 //==========================================================================================================================================
190 //==========================================================================================================================================
191 extern oC_ErrorCode_t oC_MEM_LLD_TurnOnDriver( void );
192 //==========================================================================================================================================
203 //==========================================================================================================================================
204 extern oC_ErrorCode_t oC_MEM_LLD_TurnOffDriver( void );
205 //==========================================================================================================================================
214 //==========================================================================================================================================
215 extern void * oC_MEM_LLD_GetRamStartAddress( void );
216 //==========================================================================================================================================
225 //==========================================================================================================================================
226 extern void * oC_MEM_LLD_GetRamEndAddress( void );
227 //==========================================================================================================================================
235 //==========================================================================================================================================
237 //==========================================================================================================================================
246 //==========================================================================================================================================
247 extern void * oC_MEM_LLD_GetDmaRamStartAddress( void );
248 //==========================================================================================================================================
257 //==========================================================================================================================================
258 extern void * oC_MEM_LLD_GetDmaRamEndAddress( void );
259 //==========================================================================================================================================
267 //==========================================================================================================================================
269 //==========================================================================================================================================
277 //==========================================================================================================================================
278 extern void * oC_MEM_LLD_GetFlashStartAddress( void );
279 //==========================================================================================================================================
287 //==========================================================================================================================================
288 extern void * oC_MEM_LLD_GetFlashEndAddress( void );
289 //==========================================================================================================================================
297 //==========================================================================================================================================
299 //==========================================================================================================================================
307 //==========================================================================================================================================
308 extern void * oC_MEM_LLD_GetHeapStartAddress( void );
309 //==========================================================================================================================================
317 //==========================================================================================================================================
318 extern void * oC_MEM_LLD_GetHeapEndAddress( void );
319 //==========================================================================================================================================
327 //==========================================================================================================================================
329 //==========================================================================================================================================
337 //==========================================================================================================================================
338 extern void * oC_MEM_LLD_GetStackStartAddress( void );
339 //==========================================================================================================================================
347 //==========================================================================================================================================
348 extern void * oC_MEM_LLD_GetStackEndAddress( void );
349 //==========================================================================================================================================
357 //==========================================================================================================================================
359 //==========================================================================================================================================
367 //==========================================================================================================================================
368 extern void * oC_MEM_LLD_GetDataStartAddress( void );
369 //==========================================================================================================================================
377 //==========================================================================================================================================
378 extern void * oC_MEM_LLD_GetDataEndAddress( void );
379 //==========================================================================================================================================
387 //==========================================================================================================================================
389 //==========================================================================================================================================
397 //==========================================================================================================================================
398 extern void * oC_MEM_LLD_GetBssStartAddress( void );
399 //==========================================================================================================================================
407 //==========================================================================================================================================
408 extern void * oC_MEM_LLD_GetBssEndAddress( void );
409 //==========================================================================================================================================
417 //==========================================================================================================================================
419 //==========================================================================================================================================
427 //==========================================================================================================================================
428 extern void * oC_MEM_LLD_GetUsedFlashStartAddress( void );
429 //==========================================================================================================================================
437 //==========================================================================================================================================
438 extern void * oC_MEM_LLD_GetUsedFlashEndAddress( void );
439 //==========================================================================================================================================
447 //==========================================================================================================================================
449 
450 //==========================================================================================================================================
458 //==========================================================================================================================================
460 
461 //==========================================================================================================================================
469 //==========================================================================================================================================
470 extern bool oC_MEM_LLD_IsRamAddress( const void * Address );
471 //==========================================================================================================================================
479 //==========================================================================================================================================
480 extern bool oC_MEM_LLD_IsFlashAddress( const void * Address );
481 //==========================================================================================================================================
489 //==========================================================================================================================================
490 extern bool oC_MEM_LLD_IsUsedFlashAddress( const void * Address );
491 
492 //==========================================================================================================================================
500 //==========================================================================================================================================
501 extern bool oC_MEM_LLD_IsHeapAddress( const void * Address );
502 
503 //==========================================================================================================================================
511 //==========================================================================================================================================
512 extern bool oC_MEM_LLD_IsExternalAddress( const void * Address );
513 
514 //==========================================================================================================================================
522 //==========================================================================================================================================
523 extern bool oC_MEM_LLD_IsDmaRamAddress( const void * Address );
524 
525 //==========================================================================================================================================
536 //==========================================================================================================================================
537 extern oC_ErrorCode_t oC_MEM_LLD_SetMemoryFaultInterrupt( oC_MEM_LLD_Interrupt_t Interrupt );
538 //==========================================================================================================================================
546 //==========================================================================================================================================
547 extern oC_ErrorCode_t oC_MEM_LLD_SetBusFaultInterrupt( oC_MEM_LLD_Interrupt_t Interrupt );
548 //==========================================================================================================================================
560 //==========================================================================================================================================
561 extern oC_ErrorCode_t oC_MEM_LLD_TurnOnMemoryFaultInterrupt( void );
562 //==========================================================================================================================================
570 //==========================================================================================================================================
571 extern oC_ErrorCode_t oC_MEM_LLD_TurnOffMemoryFaultInterrupt( void );
572 //==========================================================================================================================================
580 //==========================================================================================================================================
581 extern oC_ErrorCode_t oC_MEM_LLD_TurnOnBusFaultInterrupt( void );
582 //==========================================================================================================================================
590 //==========================================================================================================================================
591 extern oC_ErrorCode_t oC_MEM_LLD_TurnOffBusFaultInterrupt( void );
592 
593 //==========================================================================================================================================
602 //==========================================================================================================================================
604 
605 //==========================================================================================================================================
614 //==========================================================================================================================================
615 extern bool oC_MEM_LLD_IsBusFaultInterruptTurnedOn( void );
616 
617 //==========================================================================================================================================
629 //==========================================================================================================================================
630 extern oC_ErrorCode_t oC_MEM_LLD_ConfigureMemoryRegion( oC_MEM_LLD_MemoryRegionConfig_t * Config );
631 
632 //==========================================================================================================================================
642 //==========================================================================================================================================
644 
645 //==========================================================================================================================================
650 //==========================================================================================================================================
652 
653 #undef _________________________________________FUNCTIONS_SECTION__________________________________________________________________________
654 
656 #endif /* SYSTEM_PORTABLE_INC_LLD_OC_MEM_LLD_H_ */
void * oC_MEM_LLD_GetFlashEndAddress(void)
returns end address of the flash
Definition: oc_mem_lld.c:202
bool oC_MEM_LLD_SetMemoryAccessMode(oC_MEM_LLD_MemoryAccessMode_t Mode)
Change current memory access mode.
Definition: oc_mem_lld.c:654
bool oC_MEM_LLD_IsMemoryFaultInterruptTurnedOn(void)
checks if memory fault interrupt is turned on
Definition: oc_mem_lld.c:583
void * oC_MEM_LLD_GetStackEndAddress(void)
returns end address of the stack
Definition: oc_mem_lld.c:268
bool oC_MEM_LLD_IsUsedFlashAddress(const void *Address)
checks if the pointer is in used flash section
Definition: oc_mem_lld.c:444
oC_ErrorCode_t oC_MEM_LLD_TurnOffBusFaultInterrupt(void)
turns off bus fault interrupt
Definition: oc_mem_lld.c:572
oC_MEM_LLD_Size_t oC_MEM_LLD_GetDataSize(void)
returns size of the data section
Definition: oc_mem_lld.c:312
void * oC_MEM_LLD_GetDataEndAddress(void)
returns end address of the data section
Definition: oc_mem_lld.c:301
oC_ErrorCode_t oC_MEM_LLD_SetBusFaultInterrupt(oC_MEM_LLD_Interrupt_t Interrupt)
sets interrupt handler for bus fault
Definition: oc_mem_lld.c:498
void * oC_MEM_LLD_GetFlashStartAddress(void)
returns start address of the flash
Definition: oc_mem_lld.c:191
Memory controller is configured to allow for memory access only for regions that can be accessible by...
Definition: oc_mcs.h:245
oC_ErrorCode_t oC_MEM_LLD_TurnOffDriver(void)
release the driver
Definition: oc_mem_lld.c:92
stores configuration of the memory region
Definition: oc_mem_lld.h:114
bool oC_MEM_LLD_IsExternalAddress(const void *Address)
checks if the pointer is in external section
Definition: oc_mem_lld.c:411
Memory controller is configured to allow for memory access only for regions that can be accessible by...
Definition: oc_mem_lld.h:136
void * oC_MEM_LLD_GetDmaRamStartAddress(void)
returns start address of the DMA RAM
Definition: oc_mem_lld.c:158
const void * BaseAddress
Base address of the region - this must point to the start of the region.
Definition: oc_mem_lld.h:116
oC_ErrorCode_t oC_MEM_LLD_ConfigureMemoryRegion(oC_MEM_LLD_MemoryRegionConfig_t *Config)
configures memory region
Definition: oc_mem_lld.c:609
bool oC_MEM_LLD_IsFlashAddress(const void *Address)
checks if the pointer is in flash section
Definition: oc_mem_lld.c:433
oC_ErrorCode_t oC_MEM_LLD_TurnOnBusFaultInterrupt(void)
turns on bus fault interrupt
Definition: oc_mem_lld.c:551
void * oC_MEM_LLD_GetUsedFlashEndAddress(void)
returns used flash end address
Definition: oc_mem_lld.c:367
oC_ErrorCode_t oC_MEM_LLD_TurnOnDriver(void)
initializes the driver to work
Definition: oc_mem_lld.c:63
void * oC_MEM_LLD_GetHeapEndAddress(void)
returns end address of the heap
Definition: oc_mem_lld.c:235
bool oC_MEM_LLD_IsBusFaultInterruptTurnedOn(void)
checks if bus fault interrupt is turned on
Definition: oc_mem_lld.c:596
void * oC_MEM_LLD_GetBssEndAddress(void)
returns end address of the Bss section
Definition: oc_mem_lld.c:334
oC_MEM_LLD_Size_t oC_MEM_LLD_GetUsedFlashSize(void)
returns size of the used flash section
Definition: oc_mem_lld.c:378
oC_MEM_LLD_Size_t oC_MEM_LLD_GetDmaRamSize(void)
returns size of the DMA ram
Definition: oc_mem_lld.c:180
oC_Access_t UserAccess
Definition of access for user space.
Definition: oc_mem_lld.h:119
bool Cachable
True if the region should be cacheable - If you set a region to be cacheable: When you load from that...
Definition: oc_mem_lld.h:121
oC_Access_t PrivilegedAccess
Definition of access for privileged space (portable or core)
Definition: oc_mem_lld.h:118
Memory controller is configured to allow for memory access for regions that can be accessible by a pr...
Definition: oc_mem_lld.h:137
bool oC_MEM_LLD_IsHeapAddress(const void *Address)
checks if the pointer is in heap section
Definition: oc_mem_lld.c:455
oC_MemorySize_t Size
Size of the region.
Definition: oc_mem_lld.h:117
oC_Access_t
Type for storing access (R/W/RW)
Definition: oc_memory.h:89
uint32_t RegionNumber
(optional) Number of the region to configure.
Definition: oc_mem_lld.h:123
Memory controller is configured to allow for memory access for regions that can be accessible by a pr...
Definition: oc_mcs.h:246
oC_MEM_LLD_MemoryAccessMode_t
stores access memory mode
Definition: oc_mem_lld.h:134
oC_MEM_LLD_Size_t oC_MEM_LLD_GetRamSize(void)
returns size of the ram
Definition: oc_mem_lld.c:147
oC_MEM_LLD_Size_t oC_MEM_LLD_GetHeapSize(void)
returns size of the heap
Definition: oc_mem_lld.c:246
Contains machine core specific functions.
oC_MEM_LLD_Size_t oC_MEM_LLD_GetFlashSize(void)
returns size of the flash section
Definition: oc_mem_lld.c:213
void * oC_MEM_LLD_GetRamEndAddress(void)
returns end address of the RAM
Definition: oc_mem_lld.c:136
void * oC_MEM_LLD_GetUsedFlashStartAddress(void)
returns start address of the used flash section
Definition: oc_mem_lld.c:356
oC_UInt_t oC_MEM_LLD_Size_t
type for storing size of memory
Definition: oc_mem_lld.h:157
void * oC_MEM_LLD_GetBssStartAddress(void)
returns start address of the Bss section
Definition: oc_mem_lld.c:323
void * oC_MEM_LLD_GetHeapStartAddress(void)
returns start address of the heap
Definition: oc_mem_lld.c:224
bool Bufforable
True if the region should be bufforable - Bufferable means whether a write to the address can be buff...
Definition: oc_mem_lld.h:122
The file with interface for the machine module.
bool FindFreeRegion
If true, the RegionNumber field is ignored and filled with the new value after configuration.
Definition: oc_mem_lld.h:124
void * oC_MEM_LLD_GetStackStartAddress(void)
returns start address of the stack
Definition: oc_mem_lld.c:257
oC_MEM_LLD_MemoryAccessMode_t oC_MEM_LLD_GetMemoryAccessMode(void)
returns currently configured memory access mode
Definition: oc_mem_lld.c:665
oC_ErrorCode_t oC_MEM_LLD_SetMemoryFaultInterrupt(oC_MEM_LLD_Interrupt_t Interrupt)
sets interrupt handler for memory fault
Definition: oc_mem_lld.c:466
oC_MEM_LLD_Size_t oC_MEM_LLD_GetBssSize(void)
returns size of the Bss section
Definition: oc_mem_lld.c:345
bool oC_MEM_LLD_IsDmaRamAddress(const void *Address)
checks if the pointer is in DMA RAM section
Definition: oc_mem_lld.c:422
oC_MEM_LLD_Size_t oC_MEM_LLD_GetAlignmentSize(void)
returns size of alignment
Definition: oc_mem_lld.c:389
oC_ErrorCode_t oC_MEM_LLD_TurnOffMemoryFaultInterrupt(void)
turns off memory fault interrupt
Definition: oc_mem_lld.c:540
oC_ErrorCode_t oC_MEM_LLD_TurnOnMemoryFaultInterrupt(void)
turns on memory fault interrupt
Definition: oc_mem_lld.c:529
void(* oC_MEM_LLD_Interrupt_t)(void)
type for storing memory interrupt pointers
Definition: oc_mem_lld.h:167
void * oC_MEM_LLD_GetRamStartAddress(void)
returns start address of the RAM
Definition: oc_mem_lld.c:125
void * oC_MEM_LLD_GetDmaRamEndAddress(void)
returns end address of the DMA RAM
Definition: oc_mem_lld.c:169
oC_Power_t Power
Power state for the region (enabled or disabled)
Definition: oc_mem_lld.h:120
oC_MEM_LLD_Size_t oC_MEM_LLD_GetStackSize(void)
returns size of the stack
Definition: oc_mem_lld.c:279
oC_Power_t
stores registers power state
Definition: oc_stdtypes.h:249
bool oC_MEM_LLD_IsRamAddress(const void *Address)
checks if the pointer is in ram section
Definition: oc_mem_lld.c:400
void * oC_MEM_LLD_GetDataStartAddress(void)
returns start address of the data section
Definition: oc_mem_lld.c:290