[bsp][raspberry-pico]All memory is used for heap.
This commit is contained in:
parent
eee1453c80
commit
baaf81872d
@ -16,8 +16,6 @@
|
||||
#include "board.h"
|
||||
#include "hardware/structs/systick.h"
|
||||
|
||||
uint8_t heap[1024 * 80];
|
||||
|
||||
void isr_systick(void)
|
||||
{
|
||||
/* enter interrupt */
|
||||
@ -45,7 +43,7 @@ uint32_t systick_config(uint32_t ticks)
|
||||
|
||||
void rt_hw_board_init()
|
||||
{
|
||||
rt_system_heap_init(heap, (uint8_t *)heap + sizeof(heap));
|
||||
rt_system_heap_init(HEAP_BEGIN, HEAP_END);
|
||||
|
||||
alarm_pool_init_default();
|
||||
|
||||
|
@ -20,9 +20,9 @@
|
||||
#define PICO_SRAM_SIZE 256
|
||||
#define PICO_SRAM_END (0x20000000 + PICO_SRAM_SIZE * 1024)
|
||||
|
||||
extern int __bss_end;
|
||||
#define HEAP_BEGIN (&__bss_end)
|
||||
#define HEAP_END PICO_SRAM_END
|
||||
extern int __bss_end__;
|
||||
#define HEAP_BEGIN (&__bss_end__)
|
||||
#define HEAP_END ((void *)PICO_SRAM_END)
|
||||
|
||||
int rt_hw_uart_init(void);
|
||||
|
||||
|
@ -27,6 +27,7 @@
|
||||
#endif
|
||||
|
||||
extern char __StackLimit; /* Set by linker. */
|
||||
extern void _exit(int status);
|
||||
|
||||
uint32_t __attribute__((section(".ram_vector_table"))) ram_vector_table[48];
|
||||
|
||||
@ -138,43 +139,6 @@ void runtime_init(void) {
|
||||
irq_init_priorities();
|
||||
}
|
||||
|
||||
void _exit(int status) {
|
||||
#if PICO_ENTER_USB_BOOT_ON_EXIT
|
||||
reset_usb_boot(0,0);
|
||||
#else
|
||||
while (1) {
|
||||
__breakpoint();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void *_sbrk(int incr) {
|
||||
extern char end; /* Set by linker. */
|
||||
static char *heap_end;
|
||||
char *prev_heap_end;
|
||||
|
||||
if (heap_end == 0)
|
||||
heap_end = &end;
|
||||
|
||||
prev_heap_end = heap_end;
|
||||
char *next_heap_end = heap_end + incr;
|
||||
|
||||
if (__builtin_expect(next_heap_end >= (&__StackLimit), false)) {
|
||||
#if PICO_USE_OPTIMISTIC_SBRK
|
||||
if (next_heap_end == &__StackLimit) {
|
||||
// errno = ENOMEM;
|
||||
return (char *) -1;
|
||||
}
|
||||
next_heap_end = &__StackLimit;
|
||||
#else
|
||||
return (char *) -1;
|
||||
#endif
|
||||
}
|
||||
|
||||
heap_end = next_heap_end;
|
||||
return (void *) prev_heap_end;
|
||||
}
|
||||
|
||||
// exit is not useful... no desire to pull in __call_exitprocs
|
||||
// void exit(int status) {
|
||||
// _exit(status);
|
||||
|
@ -224,13 +224,6 @@ SECTIONS
|
||||
__bss_end__ = .;
|
||||
} > RAM
|
||||
|
||||
.heap (COPY):
|
||||
{
|
||||
__end__ = .;
|
||||
end = __end__;
|
||||
*(.heap*)
|
||||
__HeapLimit = .;
|
||||
} > RAM
|
||||
|
||||
/* .stack*_dummy section doesn't contains any symbols. It is only
|
||||
* used for linker to calculate size of stack sections, and assign
|
||||
@ -263,7 +256,7 @@ SECTIONS
|
||||
PROVIDE(__stack = __StackTop);
|
||||
|
||||
/* Check if data + heap + stack exceeds RAM limit */
|
||||
ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed")
|
||||
ASSERT(__StackLimit >= __bss_end__, "region RAM overflowed")
|
||||
/* todo assert on extra code */
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user