| Commit message (Collapse) | Author | Age |
|
|
|
|
|
|
|
| |
Event-driven loop (push-style) is still supported and default (controlled
by MICROPY_REPL_EVENT_DRIVEN setting, as expected).
Dedicated loop worked even without adding ets_loop_iter(), though that
needs to be revisited later.
|
|
|
|
|
| |
Also, term_obj can be NULL if socket enables REPL duplication signalling
before os.dupterm is called, so it should be checked.
|
|
|
|
|
|
|
|
| |
The idea is following: underlying interrupt-driven or push-style data source
signals that more data is available for dupterm processing via call to
mp_hal_signal_dupterm_input(). This triggers a task which pumps data between
actual dupterm object (which may perform additional processing on data from
low-level data source) and input ring buffer.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Otherwise device stays mounted on soft reset and leads to corruption
(since block device object is now gone).
|
|
|
|
|
| |
Otherwise, events may be posted to non-initialized task, which leads to
segfaults.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
This is a convenience function similar to pyexec_file. It should be used
instead of raw mp_parse_compile_execute because the latter does not catch
and report exceptions.
|
| |
|
|
|
|
|
|
| |
py/mphal.h contains declarations for generic mp_hal_XXX functions, such
as stdio and delay/ticks, which ports should provide definitions for. A
port will also provide mphalport.h with further HAL declarations.
|
| |
|
|
|
|
|
| |
Initializing too early caused some of the API functions (wifi_*) to fail
when called in main.py
|
| |
|
|
|
|
|
|
|
| |
As user_init() is not a true main functions, the stack pointer captured within
is not pointing at the base of the stack. This caused gc_collect being called
with sp being higher than stack_end, causing integer overflow and crashing as
gc tried to scan almost the entire address space.
|
|
|
|
|
|
|
| |
esp8266 port now has working raw and friendly REPL, as well as working
soft reset (CTRL-D at REPL, or raise SystemExit).
tools/pyboard.py now works with esp8266 port.
|
|
|
|
|
|
|
|
|
|
| |
To enable parsing constants more efficiently, mp_parse should be allowed
to raise an exception, and mp_compile can already raise a MemoryError.
So these functions need to be protected by an nlr push/pop block.
This patch adds that feature in all places. This allows to simplify how
mp_parse and mp_compile are called: they now raise an exception if they
have an error and so explicit checking is not needed anymore.
|
|
|
|
|
|
| |
This enables proper interfacing with underlying OS - MicroPython doesn't
run the main loop, OS does, MicroPython just gets called when some event
takes place.
|
|
|
|
|
| |
We cannot assume that all memory belongs to us - it actually belongs to
ESP8266 OS.
|
|
|
|
|
|
| |
This patch consolidates all global variables in py/ core into one place,
in a global structure. Root pointers are all located together to make
GC tracing easier and more efficient.
|
| |
|
|
|
|
|
|
| |
Some rodata items can go in iram/irom segment, but not others. With
this patch ESP now has 24256 bytes of heap ram. It passes 228 out of
248 tests from tests/basics directory.
|
|
|