stmhal: Move pybstdio.c to lib/utils/sys_stdio_mphal.c for common use.
It provides sys.stdin, sys.stdout, sys.stderr for bare-metal targets based on mp_hal functions.
This commit is contained in:
parent
76ec04a6d9
commit
4f9858e86d
|
@ -147,12 +147,12 @@ APP_LIB_SRC_C = $(addprefix lib/,\
|
||||||
netutils/netutils.c \
|
netutils/netutils.c \
|
||||||
timeutils/timeutils.c \
|
timeutils/timeutils.c \
|
||||||
utils/pyexec.c \
|
utils/pyexec.c \
|
||||||
|
utils/sys_stdio_mphal.c \
|
||||||
)
|
)
|
||||||
|
|
||||||
APP_STM_SRC_C = $(addprefix stmhal/,\
|
APP_STM_SRC_C = $(addprefix stmhal/,\
|
||||||
bufhelper.c \
|
bufhelper.c \
|
||||||
irq.c \
|
irq.c \
|
||||||
pybstdio.c \
|
|
||||||
)
|
)
|
||||||
|
|
||||||
OBJ = $(PY_O) $(addprefix $(BUILD)/, $(APP_FATFS_SRC_C:.c=.o) $(APP_RTOS_SRC_C:.c=.o) $(APP_FTP_SRC_C:.c=.o) $(APP_HAL_SRC_C:.c=.o) $(APP_MISC_SRC_C:.c=.o))
|
OBJ = $(PY_O) $(addprefix $(BUILD)/, $(APP_FATFS_SRC_C:.c=.o) $(APP_RTOS_SRC_C:.c=.o) $(APP_FTP_SRC_C:.c=.o) $(APP_HAL_SRC_C:.c=.o) $(APP_MISC_SRC_C:.c=.o))
|
||||||
|
|
|
@ -92,10 +92,6 @@ SRC_C = \
|
||||||
hspi.c \
|
hspi.c \
|
||||||
$(SRC_MOD)
|
$(SRC_MOD)
|
||||||
|
|
||||||
STM_SRC_C = $(addprefix stmhal/,\
|
|
||||||
pybstdio.c \
|
|
||||||
)
|
|
||||||
|
|
||||||
EXTMOD_SRC_C = $(addprefix extmod/,\
|
EXTMOD_SRC_C = $(addprefix extmod/,\
|
||||||
modlwip.c \
|
modlwip.c \
|
||||||
)
|
)
|
||||||
|
@ -125,6 +121,7 @@ LIB_SRC_C = $(addprefix lib/,\
|
||||||
timeutils/timeutils.c \
|
timeutils/timeutils.c \
|
||||||
utils/pyexec.c \
|
utils/pyexec.c \
|
||||||
utils/interrupt_char.c \
|
utils/interrupt_char.c \
|
||||||
|
utils/sys_stdio_mphal.c \
|
||||||
)
|
)
|
||||||
|
|
||||||
ifeq ($(MICROPY_FATFS), 1)
|
ifeq ($(MICROPY_FATFS), 1)
|
||||||
|
@ -144,14 +141,13 @@ OBJ =
|
||||||
OBJ += $(PY_O)
|
OBJ += $(PY_O)
|
||||||
OBJ += $(addprefix $(BUILD)/, $(SRC_C:.c=.o))
|
OBJ += $(addprefix $(BUILD)/, $(SRC_C:.c=.o))
|
||||||
OBJ += $(addprefix $(BUILD)/, $(SRC_S:.s=.o))
|
OBJ += $(addprefix $(BUILD)/, $(SRC_S:.s=.o))
|
||||||
OBJ += $(addprefix $(BUILD)/, $(STM_SRC_C:.c=.o))
|
|
||||||
OBJ += $(addprefix $(BUILD)/, $(EXTMOD_SRC_C:.c=.o))
|
OBJ += $(addprefix $(BUILD)/, $(EXTMOD_SRC_C:.c=.o))
|
||||||
OBJ += $(addprefix $(BUILD)/, $(LIB_SRC_C:.c=.o))
|
OBJ += $(addprefix $(BUILD)/, $(LIB_SRC_C:.c=.o))
|
||||||
OBJ += $(addprefix $(BUILD)/, $(DRIVERS_SRC_C:.c=.o))
|
OBJ += $(addprefix $(BUILD)/, $(DRIVERS_SRC_C:.c=.o))
|
||||||
#OBJ += $(BUILD)/pins_$(BOARD).o
|
#OBJ += $(BUILD)/pins_$(BOARD).o
|
||||||
|
|
||||||
# List of sources for qstr extraction
|
# List of sources for qstr extraction
|
||||||
SRC_QSTR += $(SRC_C) $(STM_SRC_C) $(EXTMOD_SRC_C) $(DRIVERS_SRC_C)
|
SRC_QSTR += $(SRC_C) $(EXTMOD_SRC_C) $(DRIVERS_SRC_C)
|
||||||
# Append any auto-generated sources that are needed by sources listed in SRC_QSTR
|
# Append any auto-generated sources that are needed by sources listed in SRC_QSTR
|
||||||
SRC_QSTR_AUTO_DEPS +=
|
SRC_QSTR_AUTO_DEPS +=
|
||||||
|
|
||||||
|
|
|
@ -125,8 +125,6 @@ SECTIONS
|
||||||
*lib/timeutils/*.o*(.literal*, .text*)
|
*lib/timeutils/*.o*(.literal*, .text*)
|
||||||
*lib/utils/*.o*(.literal*, .text*)
|
*lib/utils/*.o*(.literal*, .text*)
|
||||||
|
|
||||||
*stmhal/pybstdio.o(.literal*, .text*)
|
|
||||||
|
|
||||||
build/main.o(.literal* .text*)
|
build/main.o(.literal* .text*)
|
||||||
*gccollect.o(.literal* .text*)
|
*gccollect.o(.literal* .text*)
|
||||||
*gchelper.o(.literal* .text*)
|
*gchelper.o(.literal* .text*)
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
/*
|
/*
|
||||||
* This file is part of the Micro Python project, http://micropython.org/
|
* This file is part of the MicroPython project, http://micropython.org/
|
||||||
*
|
*
|
||||||
* The MIT License (MIT)
|
* The MIT License (MIT)
|
||||||
*
|
*
|
||||||
* Copyright (c) 2013, 2014, 2015 Damien P. George
|
* Copyright (c) 2013-2017 Damien P. George
|
||||||
*
|
*
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
* of this software and associated documentation files (the "Software"), to deal
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -37,28 +37,28 @@
|
||||||
// objects are in a read-only module (py/modsys.c).
|
// objects are in a read-only module (py/modsys.c).
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
// Micro Python bindings
|
// MicroPython bindings
|
||||||
|
|
||||||
#define STDIO_FD_IN (0)
|
#define STDIO_FD_IN (0)
|
||||||
#define STDIO_FD_OUT (1)
|
#define STDIO_FD_OUT (1)
|
||||||
#define STDIO_FD_ERR (2)
|
#define STDIO_FD_ERR (2)
|
||||||
|
|
||||||
typedef struct _pyb_stdio_obj_t {
|
typedef struct _sys_stdio_obj_t {
|
||||||
mp_obj_base_t base;
|
mp_obj_base_t base;
|
||||||
int fd;
|
int fd;
|
||||||
} pyb_stdio_obj_t;
|
} sys_stdio_obj_t;
|
||||||
|
|
||||||
#if MICROPY_PY_SYS_STDIO_BUFFER
|
#if MICROPY_PY_SYS_STDIO_BUFFER
|
||||||
STATIC const pyb_stdio_obj_t stdio_buffer_obj;
|
STATIC const sys_stdio_obj_t stdio_buffer_obj;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void stdio_obj_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) {
|
void stdio_obj_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) {
|
||||||
pyb_stdio_obj_t *self = self_in;
|
sys_stdio_obj_t *self = self_in;
|
||||||
mp_printf(print, "<io.FileIO %d>", self->fd);
|
mp_printf(print, "<io.FileIO %d>", self->fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
STATIC mp_uint_t stdio_read(mp_obj_t self_in, void *buf, mp_uint_t size, int *errcode) {
|
STATIC mp_uint_t stdio_read(mp_obj_t self_in, void *buf, mp_uint_t size, int *errcode) {
|
||||||
pyb_stdio_obj_t *self = self_in;
|
sys_stdio_obj_t *self = self_in;
|
||||||
if (self->fd == STDIO_FD_IN) {
|
if (self->fd == STDIO_FD_IN) {
|
||||||
for (uint i = 0; i < size; i++) {
|
for (uint i = 0; i < size; i++) {
|
||||||
int c = mp_hal_stdin_rx_chr();
|
int c = mp_hal_stdin_rx_chr();
|
||||||
|
@ -75,7 +75,7 @@ STATIC mp_uint_t stdio_read(mp_obj_t self_in, void *buf, mp_uint_t size, int *er
|
||||||
}
|
}
|
||||||
|
|
||||||
STATIC mp_uint_t stdio_write(mp_obj_t self_in, const void *buf, mp_uint_t size, int *errcode) {
|
STATIC mp_uint_t stdio_write(mp_obj_t self_in, const void *buf, mp_uint_t size, int *errcode) {
|
||||||
pyb_stdio_obj_t *self = self_in;
|
sys_stdio_obj_t *self = self_in;
|
||||||
if (self->fd == STDIO_FD_OUT || self->fd == STDIO_FD_ERR) {
|
if (self->fd == STDIO_FD_OUT || self->fd == STDIO_FD_ERR) {
|
||||||
mp_hal_stdout_tx_strn_cooked(buf, size);
|
mp_hal_stdout_tx_strn_cooked(buf, size);
|
||||||
return size;
|
return size;
|
||||||
|
@ -126,9 +126,9 @@ STATIC const mp_obj_type_t stdio_obj_type = {
|
||||||
.locals_dict = (mp_obj_dict_t*)&stdio_locals_dict,
|
.locals_dict = (mp_obj_dict_t*)&stdio_locals_dict,
|
||||||
};
|
};
|
||||||
|
|
||||||
const pyb_stdio_obj_t mp_sys_stdin_obj = {{&stdio_obj_type}, .fd = STDIO_FD_IN};
|
const sys_stdio_obj_t mp_sys_stdin_obj = {{&stdio_obj_type}, .fd = STDIO_FD_IN};
|
||||||
const pyb_stdio_obj_t mp_sys_stdout_obj = {{&stdio_obj_type}, .fd = STDIO_FD_OUT};
|
const sys_stdio_obj_t mp_sys_stdout_obj = {{&stdio_obj_type}, .fd = STDIO_FD_OUT};
|
||||||
const pyb_stdio_obj_t mp_sys_stderr_obj = {{&stdio_obj_type}, .fd = STDIO_FD_ERR};
|
const sys_stdio_obj_t mp_sys_stderr_obj = {{&stdio_obj_type}, .fd = STDIO_FD_ERR};
|
||||||
|
|
||||||
#if MICROPY_PY_SYS_STDIO_BUFFER
|
#if MICROPY_PY_SYS_STDIO_BUFFER
|
||||||
STATIC mp_uint_t stdio_buffer_read(mp_obj_t self_in, void *buf, mp_uint_t size, int *errcode) {
|
STATIC mp_uint_t stdio_buffer_read(mp_obj_t self_in, void *buf, mp_uint_t size, int *errcode) {
|
||||||
|
@ -159,5 +159,5 @@ STATIC const mp_obj_type_t stdio_buffer_obj_type = {
|
||||||
.locals_dict = (mp_obj_t)&stdio_locals_dict,
|
.locals_dict = (mp_obj_t)&stdio_locals_dict,
|
||||||
};
|
};
|
||||||
|
|
||||||
STATIC const pyb_stdio_obj_t stdio_buffer_obj = {{&stdio_buffer_obj_type}, .fd = 0}; // fd unused
|
STATIC const sys_stdio_obj_t stdio_buffer_obj = {{&stdio_buffer_obj_type}, .fd = 0}; // fd unused
|
||||||
#endif
|
#endif
|
|
@ -39,8 +39,8 @@ SRC_C = \
|
||||||
modpyb.c \
|
modpyb.c \
|
||||||
modpybled.c \
|
modpybled.c \
|
||||||
modpybswitch.c \
|
modpybswitch.c \
|
||||||
stmhal/pybstdio.c \
|
|
||||||
lib/utils/pyexec.c \
|
lib/utils/pyexec.c \
|
||||||
|
lib/utils/sys_stdio_mphal.c \
|
||||||
lib/mp-readline/readline.c \
|
lib/mp-readline/readline.c \
|
||||||
|
|
||||||
SRC_S = \
|
SRC_S = \
|
||||||
|
|
|
@ -63,17 +63,13 @@ LIB_SRC_C = $(addprefix lib/,\
|
||||||
libm/asinfacosf.c \
|
libm/asinfacosf.c \
|
||||||
libm/atanf.c \
|
libm/atanf.c \
|
||||||
libm/atan2f.c \
|
libm/atan2f.c \
|
||||||
)
|
utils/sys_stdio_mphal.c \
|
||||||
|
|
||||||
STM_SRC_C = $(addprefix stmhal/,\
|
|
||||||
pybstdio.c \
|
|
||||||
)
|
)
|
||||||
|
|
||||||
OBJ_COMMON =
|
OBJ_COMMON =
|
||||||
OBJ_COMMON += $(PY_O)
|
OBJ_COMMON += $(PY_O)
|
||||||
OBJ_COMMON += $(addprefix $(BUILD)/, $(SRC_COMMON_C:.c=.o))
|
OBJ_COMMON += $(addprefix $(BUILD)/, $(SRC_COMMON_C:.c=.o))
|
||||||
OBJ_COMMON += $(addprefix $(BUILD)/, $(LIB_SRC_C:.c=.o))
|
OBJ_COMMON += $(addprefix $(BUILD)/, $(LIB_SRC_C:.c=.o))
|
||||||
OBJ_COMMON += $(addprefix $(BUILD)/, $(STM_SRC_C:.c=.o))
|
|
||||||
|
|
||||||
OBJ_RUN =
|
OBJ_RUN =
|
||||||
OBJ_RUN += $(addprefix $(BUILD)/, $(SRC_RUN_C:.c=.o))
|
OBJ_RUN += $(addprefix $(BUILD)/, $(SRC_RUN_C:.c=.o))
|
||||||
|
@ -86,7 +82,7 @@ OBJ_TEST += $(BUILD)/tinytest.o
|
||||||
OBJ = $(OBJ_COMMON) $(OBJ_RUN) $(OBJ_TEST)
|
OBJ = $(OBJ_COMMON) $(OBJ_RUN) $(OBJ_TEST)
|
||||||
|
|
||||||
# List of sources for qstr extraction
|
# List of sources for qstr extraction
|
||||||
SRC_QSTR += $(SRC_COMMON_C) $(SRC_RUN_C) $(STM_SRC_C)
|
SRC_QSTR += $(SRC_COMMON_C) $(SRC_RUN_C)
|
||||||
|
|
||||||
all: run
|
all: run
|
||||||
|
|
||||||
|
|
|
@ -110,6 +110,7 @@ SRC_LIB = $(addprefix lib/,\
|
||||||
timeutils/timeutils.c \
|
timeutils/timeutils.c \
|
||||||
utils/pyexec.c \
|
utils/pyexec.c \
|
||||||
utils/interrupt_char.c \
|
utils/interrupt_char.c \
|
||||||
|
utils/sys_stdio_mphal.c \
|
||||||
)
|
)
|
||||||
|
|
||||||
DRIVERS_SRC_C = $(addprefix drivers/,\
|
DRIVERS_SRC_C = $(addprefix drivers/,\
|
||||||
|
@ -145,7 +146,6 @@ SRC_C = \
|
||||||
usb.c \
|
usb.c \
|
||||||
wdt.c \
|
wdt.c \
|
||||||
gccollect.c \
|
gccollect.c \
|
||||||
pybstdio.c \
|
|
||||||
help.c \
|
help.c \
|
||||||
machine_i2c.c \
|
machine_i2c.c \
|
||||||
modmachine.c \
|
modmachine.c \
|
||||||
|
|
|
@ -96,7 +96,6 @@ STM_SRC_C = $(addprefix stmhal/,\
|
||||||
irq.c \
|
irq.c \
|
||||||
pin.c \
|
pin.c \
|
||||||
pin_named_pins.c \
|
pin_named_pins.c \
|
||||||
pybstdio.c \
|
|
||||||
)
|
)
|
||||||
|
|
||||||
STM_SRC_S = $(addprefix stmhal/,\
|
STM_SRC_S = $(addprefix stmhal/,\
|
||||||
|
@ -107,6 +106,7 @@ LIB_SRC_C = $(addprefix lib/,\
|
||||||
libc/string0.c \
|
libc/string0.c \
|
||||||
mp-readline/readline.c \
|
mp-readline/readline.c \
|
||||||
utils/pyexec.c \
|
utils/pyexec.c \
|
||||||
|
utils/sys_stdio_mphal.c \
|
||||||
)
|
)
|
||||||
|
|
||||||
SRC_TEENSY = $(addprefix core/,\
|
SRC_TEENSY = $(addprefix core/,\
|
||||||
|
|
Loading…
Reference in New Issue