esp8266/main: Activate UART(0) on dupterm for REPL before boot.py runs.
So that the user can explicitly deactivate UART(0) if needed. See issue #4314. This introduces some risk to "brick" the device, if the user disables the REPL without providing an alternative REPL (eg WebREPL), or any way to reenable it. In such a case the device needs to be erased and reprogrammed. This seems unavoidable, given the desire to have the option to use the UART for something other than the REPL.
This commit is contained in:
parent
5064df2074
commit
36808d4e6a
@ -63,23 +63,9 @@ STATIC void mp_reset(void) {
|
|||||||
pin_init0();
|
pin_init0();
|
||||||
readline_init0();
|
readline_init0();
|
||||||
dupterm_task_init();
|
dupterm_task_init();
|
||||||
#if MICROPY_MODULE_FROZEN
|
|
||||||
pyexec_frozen_module("_boot.py");
|
|
||||||
pyexec_file("boot.py");
|
|
||||||
if (pyexec_mode_kind == PYEXEC_MODE_FRIENDLY_REPL) {
|
|
||||||
pyexec_file("main.py");
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Check if there are any dupterm objects registered and if not then
|
// Activate UART(0) on dupterm slot 1 for the REPL
|
||||||
// activate UART(0), or else there will never be any chance to get a REPL
|
{
|
||||||
size_t idx;
|
|
||||||
for (idx = 0; idx < MICROPY_PY_OS_DUPTERM; ++idx) {
|
|
||||||
if (MP_STATE_VM(dupterm_objs[idx]) != MP_OBJ_NULL) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (idx == MICROPY_PY_OS_DUPTERM) {
|
|
||||||
mp_obj_t args[2];
|
mp_obj_t args[2];
|
||||||
args[0] = MP_OBJ_NEW_SMALL_INT(0);
|
args[0] = MP_OBJ_NEW_SMALL_INT(0);
|
||||||
args[1] = MP_OBJ_NEW_SMALL_INT(115200);
|
args[1] = MP_OBJ_NEW_SMALL_INT(115200);
|
||||||
@ -87,8 +73,15 @@ STATIC void mp_reset(void) {
|
|||||||
args[1] = MP_OBJ_NEW_SMALL_INT(1);
|
args[1] = MP_OBJ_NEW_SMALL_INT(1);
|
||||||
extern mp_obj_t os_dupterm(size_t n_args, const mp_obj_t *args);
|
extern mp_obj_t os_dupterm(size_t n_args, const mp_obj_t *args);
|
||||||
os_dupterm(2, args);
|
os_dupterm(2, args);
|
||||||
mp_hal_stdout_tx_str("Activated UART(0) for REPL\r\n");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if MICROPY_MODULE_FROZEN
|
||||||
|
pyexec_frozen_module("_boot.py");
|
||||||
|
pyexec_file("boot.py");
|
||||||
|
if (pyexec_mode_kind == PYEXEC_MODE_FRIENDLY_REPL) {
|
||||||
|
pyexec_file("main.py");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void soft_reset(void) {
|
void soft_reset(void) {
|
||||||
|
@ -45,7 +45,7 @@ def setup():
|
|||||||
#import esp
|
#import esp
|
||||||
#esp.osdebug(None)
|
#esp.osdebug(None)
|
||||||
import uos, machine
|
import uos, machine
|
||||||
uos.dupterm(machine.UART(0, 115200), 1)
|
#uos.dupterm(None, 1) # disable REPL on UART(0)
|
||||||
import gc
|
import gc
|
||||||
#import webrepl
|
#import webrepl
|
||||||
#webrepl.start()
|
#webrepl.start()
|
||||||
|
Loading…
Reference in New Issue
Block a user