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.
pull/3147/head
Damien George 2017-06-15 18:55:34 +10:00
rodzic 76ec04a6d9
commit 4f9858e86d
8 zmienionych plików z 21 dodań i 31 usunięć

Wyświetl plik

@ -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))

Wyświetl plik

@ -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 +=

Wyświetl plik

@ -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*)

Wyświetl plik

@ -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

Wyświetl plik

@ -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 = \

Wyświetl plik

@ -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

Wyświetl plik

@ -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 \

Wyświetl plik

@ -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/,\