mirror of
https://github.com/ringtailsoftware/uvm32.git
synced 2026-06-05 22:43:39 +00:00
Example of setting up malloc heap on extram
This commit is contained in:
parent
7fae8c129f
commit
f27ed6213c
5 changed files with 369 additions and 0 deletions
66
apps/heap/heap.c
Normal file
66
apps/heap/heap.c
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
#include "uvm32_target.h"
|
||||
#include "malloc_freelist.h"
|
||||
|
||||
uint32_t* extram = (uint32_t*)UVM32_EXTRAM_BASE;
|
||||
uint32_t extram_len = HEAP_SIZE;
|
||||
|
||||
void* memcpy(void* dst, const void* src, int len) {
|
||||
uint8_t* d = (uint8_t*)dst;
|
||||
const uint8_t* s = (const uint8_t*)src;
|
||||
while (len--) {
|
||||
*(d++) = *(s++);
|
||||
}
|
||||
return dst;
|
||||
}
|
||||
|
||||
void* memset(void* buf, int c, int len) {
|
||||
uint8_t* b = (uint8_t*)buf;
|
||||
while (len--) {
|
||||
*(b++) = c;
|
||||
}
|
||||
return buf;
|
||||
}
|
||||
|
||||
void* memmove(void* dest, const void* src, size_t len) {
|
||||
char* d = dest;
|
||||
const char* s = src;
|
||||
if (d < s)
|
||||
while (len--)
|
||||
*d++ = *s++;
|
||||
else {
|
||||
const char* lasts = s + (len - 1);
|
||||
char* lastd = d + (len - 1);
|
||||
while (len--)
|
||||
*lastd-- = *lasts--;
|
||||
}
|
||||
return dest;
|
||||
}
|
||||
|
||||
void force_crash(void) {
|
||||
uint8_t *p = (uint8_t *)0;
|
||||
p[0] = 0;
|
||||
}
|
||||
|
||||
void main(void) {
|
||||
malloc_addblock(extram, extram_len);
|
||||
|
||||
uint8_t* p1 = fl_malloc(128);
|
||||
if (p1 == NULL) {
|
||||
println("malloc failed");
|
||||
} else {
|
||||
println("malloc ok");
|
||||
}
|
||||
memset(p1, 'a', 128);
|
||||
fl_free(p1);
|
||||
|
||||
uint8_t* p2 = fl_malloc(256);
|
||||
if (p2 == NULL) {
|
||||
println("malloc failed");
|
||||
} else {
|
||||
println("malloc ok");
|
||||
}
|
||||
memset(p2, 'b', 256);
|
||||
fl_free(p2);
|
||||
|
||||
//force_crash(); // allows dump to be inspected
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue