diff options
Diffstat (limited to 'stm/main.c')
-rw-r--r-- | stm/main.c | 25 |
1 files changed, 7 insertions, 18 deletions
diff --git a/stm/main.c b/stm/main.c index 2ce2b6dc61..389fea2634 100644 --- a/stm/main.c +++ b/stm/main.c @@ -48,6 +48,7 @@ int errno; extern uint32_t _heap_start; +extern uint32_t _heap_end; static FATFS fatfs0; @@ -455,21 +456,12 @@ bool do_file(const char *filename) { } } -#define RAM_START (0x20000000) // fixed for chip -#define HEAP_END (0x2001c000) // tunable -#define RAM_END (0x20020000) // fixed for chip - -void gc_helper_get_regs_and_clean_stack(machine_uint_t *regs, machine_uint_t heap_end); +mp_obj_t pyb_gc(void) { + uint32_t start,ticks; -void gc_collect(void) { - uint32_t start = sys_tick_counter; - gc_collect_start(); - gc_collect_root((void**)RAM_START, (((uint32_t)&_heap_start) - RAM_START) / 4); - machine_uint_t regs[10]; - gc_helper_get_regs_and_clean_stack(regs, HEAP_END); - gc_collect_root((void**)HEAP_END, (RAM_END - HEAP_END) / 4); // will trace regs since they now live in this function on the stack - gc_collect_end(); - uint32_t ticks = sys_tick_counter - start; // TODO implement a function that does this properly + start = sys_tick_counter; + gc_collect(); + ticks = sys_tick_counter - start; // TODO implement a function that does this properly if (0) { // print GC info @@ -480,10 +472,7 @@ void gc_collect(void) { printf(" %lu : %lu\n", info.used, info.free); printf(" 1=%lu 2=%lu m=%lu\n", info.num_1block, info.num_2block, info.max_block); } -} -mp_obj_t pyb_gc(void) { - gc_collect(); return mp_const_none; } @@ -609,7 +598,7 @@ int main(void) { soft_reset: // GC init - gc_init(&_heap_start, (void*)HEAP_END); + gc_init(&_heap_start, &_heap_end); // Micro Python init qstr_init(); |