提交 baaf8187 编写于 作者: G guozhanxin

[bsp][raspberry-pico]All memory is used for heap.

上级 eee1453c
......@@ -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 */
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册