Elara Spacecraft
Source code & API documentation for Elara spacecraft system computers
Loading...
Searching...
No Matches
mem_tools.hpp
Go to the documentation of this file.
1#pragma once
2#include "types.hpp"
3/*
4 Note: the functions implemented in this file have no security/validity checks which makes them dangerous to use
5 at boot-time this is fine but different memory functions should be used later on
6*/
7
8#define AS_PTR(type, addr) ((type*)addr)
9
17static void mem_set(void* dst, uint32_t size, uint8_t value=0)
18{
19 uint8_t* cdst = (uint8_t*)dst;
20 for(uint32_t idx = 0; idx < size; idx++)
21 {
22 *cdst++ = value;
23 }
24}
25
26
33inline static void mem_clr(void* dst, uint32_t size)
34{
35 mem_set(dst, size, 0);
36}
37
38/* Copies `src` to `dst` for `size` */
46static void mem_cpy(void* dst, const void* src, uint32_t size)
47{
48 uint8_t* cdst = (uint8_t*)dst;
49 uint8_t* csrc = (uint8_t*)src;
50
51 for(uint32_t idx = 0; idx < size; idx++)
52 {
53 *cdst++ = *csrc++;
54 }
55}
56
63inline void mem_write(uint32_t addr, uint32_t data)
64{
65 *(AS_PTR(uint32_t, addr)) = data;
66}
67
75{
76 return *(AS_PTR(uint32_t, addr));
77}
uint32_t mem_read(uint32_t addr)
Returns a 32-bit value from addr
Definition mem_tools.hpp:74
#define AS_PTR(type, addr)
Definition mem_tools.hpp:8
void mem_write(uint32_t addr, uint32_t data)
Writes a 32-bit value to addr
Definition mem_tools.hpp:63
unsigned int uint32_t
Definition types.hpp:5
unsigned char uint8_t
Definition types.hpp:3