summaryrefslogtreecommitdiff
path: root/minimal/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'minimal/main.c')
-rw-r--r--minimal/main.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/minimal/main.c b/minimal/main.c
index 5e104e7e8..114fb9695 100644
--- a/minimal/main.c
+++ b/minimal/main.c
@@ -7,17 +7,14 @@
#include "py/runtime.h"
#include "py/repl.h"
#include "py/gc.h"
+#include "py/mperrno.h"
#include "lib/utils/pyexec.h"
+#if MICROPY_ENABLE_COMPILER
void do_str(const char *src, mp_parse_input_kind_t input_kind) {
- mp_lexer_t *lex = mp_lexer_new_from_str_len(MP_QSTR__lt_stdin_gt_, src, strlen(src), 0);
- if (lex == NULL) {
- printf("MemoryError: lexer could not allocate memory\n");
- return;
- }
-
nlr_buf_t nlr;
if (nlr_push(&nlr) == 0) {
+ mp_lexer_t *lex = mp_lexer_new_from_str_len(MP_QSTR__lt_stdin_gt_, src, strlen(src), 0);
qstr source_name = lex->source_name;
mp_parse_tree_t parse_tree = mp_parse(lex, input_kind);
mp_obj_t module_fun = mp_compile(&parse_tree, source_name, MP_EMIT_OPT_NONE, true);
@@ -28,6 +25,7 @@ void do_str(const char *src, mp_parse_input_kind_t input_kind) {
mp_obj_print_exception(&mp_plat_print, (mp_obj_t)nlr.ret_val);
}
}
+#endif
static char *stack_top;
static char heap[2048];
@@ -40,6 +38,7 @@ int main(int argc, char **argv) {
gc_init(heap, heap + sizeof(heap));
#endif
mp_init();
+ #if MICROPY_ENABLE_COMPILER
#if MICROPY_REPL_EVENT_DRIVEN
pyexec_event_repl_init();
for (;;) {
@@ -53,6 +52,9 @@ int main(int argc, char **argv) {
#endif
//do_str("print('hello world!', list(x+1 for x in range(10)), end='eol\\n')", MP_PARSE_SINGLE_INPUT);
//do_str("for i in range(10):\r\n print(i)", MP_PARSE_FILE_INPUT);
+ #else
+ pyexec_frozen_module("frozentest.py");
+ #endif
mp_deinit();
return 0;
}
@@ -68,7 +70,7 @@ void gc_collect(void) {
}
mp_lexer_t *mp_lexer_new_from_file(const char *filename) {
- return NULL;
+ mp_raise_OSError(MP_ENOENT);
}
mp_import_stat_t mp_import_stat(const char *path) {
@@ -81,6 +83,7 @@ mp_obj_t mp_builtin_open(uint n_args, const mp_obj_t *args, mp_map_t *kwargs) {
MP_DEFINE_CONST_FUN_OBJ_KW(mp_builtin_open_obj, 1, mp_builtin_open);
void nlr_jump_fail(void *val) {
+ while (1);
}
void NORETURN __fatal_error(const char *msg) {
@@ -103,7 +106,7 @@ extern uint32_t _estack, _sidata, _sdata, _edata, _sbss, _ebss;
void Reset_Handler(void) __attribute__((naked));
void Reset_Handler(void) {
// set stack pointer
- asm volatile ("ldr sp, =_estack");
+ __asm volatile ("ldr sp, =_estack");
// copy .data section from flash to RAM
for (uint32_t *src = &_sidata, *dest = &_sdata; dest < &_edata;) {
*dest++ = *src++;
@@ -122,7 +125,7 @@ void Default_Handler(void) {
}
}
-uint32_t isr_vector[] __attribute__((section(".isr_vector"))) = {
+const uint32_t isr_vector[] __attribute__((section(".isr_vector"))) = {
(uint32_t)&_estack,
(uint32_t)&Reset_Handler,
(uint32_t)&Default_Handler, // NMI_Handler