rp2: Mark gc_heap NOLOAD for faster boot.

Create a new linker section .unitialized_bss for bss that does not need
zero-initialising.

Move gc_heap to this section, which saves ~30ms from rising edge of RESET
to setting a pin HIGH in MicroPython.

Zero fill happens in Pico SDK crt0.S before ROSC is configured.  It's very,
very slow.

Signed-off-by: Phil Howard <phil@gadgetoid.com>
pull/9041/head
Phil Howard 2022-08-05 09:43:22 +01:00 zatwierdzone przez Damien George
rodzic 6e51dbd95a
commit 71f6eb5ac9
2 zmienionych plików z 7 dodań i 1 usunięć

Wyświetl plik

@ -66,7 +66,7 @@
#endif
extern uint8_t __StackTop, __StackBottom;
static char gc_heap[MICROPY_GC_HEAP_SIZE];
__attribute__((section(".uninitialized_bss"))) static char gc_heap[MICROPY_GC_HEAP_SIZE];
// Embed version info in the binary in machine readable form
bi_decl(bi_program_version_string(MICROPY_GIT_TAG));

Wyświetl plik

@ -180,6 +180,12 @@ SECTIONS
*(.uninitialized_data*)
} > RAM
/* bss without zero init on startup */
.uninitialized_bss (NOLOAD): {
. = ALIGN(4);
*(.uninitialized_bss*)
} > RAM
/* Start and end symbols must be word-aligned */
.scratch_x : {
__scratch_x_start__ = .;