60 lines
1.1 KiB
C
60 lines
1.1 KiB
C
#include "py/nlr.h"
|
|
#include "py/compile.h"
|
|
#include "py/runtime.h"
|
|
#include "py/repl.h"
|
|
#include "py/gc.h"
|
|
#include "lib/utils/pyexec.h"
|
|
|
|
#include "nrf52_board.h"
|
|
#include "nrf52_ble.h"
|
|
|
|
static char *stack_top;
|
|
static char heap[4 * 1024];
|
|
|
|
void nrf52_board_init(void);
|
|
|
|
void
|
|
gc_collect(void)
|
|
{
|
|
// WARNING: This gc_collect implementation doesn't try to get root
|
|
// pointers from CPU registers, and thus may function incorrectly.
|
|
void *dummy;
|
|
gc_collect_start();
|
|
gc_collect_root(&dummy, ((mp_uint_t)stack_top - (mp_uint_t)&dummy) / sizeof(mp_uint_t));
|
|
gc_collect_end();
|
|
gc_dump_info();
|
|
}
|
|
|
|
int
|
|
main(int argc, char **argv)
|
|
{
|
|
int stack_dummy;
|
|
stack_top = (char*)&stack_dummy;
|
|
|
|
#if MICROPY_ENABLE_GC
|
|
gc_init(heap, heap + sizeof(heap));
|
|
#endif
|
|
|
|
nrf52_board_init();
|
|
nrf52_ble_init();
|
|
|
|
mp_init();
|
|
|
|
#if MICROPY_REPL_EVENT_DRIVEN
|
|
pyexec_event_repl_init();
|
|
for (;;) {
|
|
int c = mp_hal_stdin_rx_chr();
|
|
if (pyexec_event_repl_process_char(c)) {
|
|
break;
|
|
}
|
|
}
|
|
#else
|
|
pyexec_friendly_repl();
|
|
#endif
|
|
|
|
mp_deinit();
|
|
|
|
NVIC_SystemReset();
|
|
return 0;
|
|
}
|