From 4f9858e86debaaa4a65f0663ac3c67be15000064 Mon Sep 17 00:00:00 2001 From: Damien George Date: Thu, 15 Jun 2017 18:55:34 +1000 Subject: [PATCH] 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. --- cc3200/application.mk | 2 +- esp8266/Makefile | 8 ++---- esp8266/esp8266_common.ld | 2 -- .../pybstdio.c => lib/utils/sys_stdio_mphal.c | 26 +++++++++---------- pic16bit/Makefile | 2 +- qemu-arm/Makefile | 8 ++---- stmhal/Makefile | 2 +- teensy/Makefile | 2 +- 8 files changed, 21 insertions(+), 31 deletions(-) rename stmhal/pybstdio.c => lib/utils/sys_stdio_mphal.c (89%) diff --git a/cc3200/application.mk b/cc3200/application.mk index 1f54b764b9..c6b91ed0ed 100644 --- a/cc3200/application.mk +++ b/cc3200/application.mk @@ -147,12 +147,12 @@ APP_LIB_SRC_C = $(addprefix lib/,\ netutils/netutils.c \ timeutils/timeutils.c \ utils/pyexec.c \ + utils/sys_stdio_mphal.c \ ) APP_STM_SRC_C = $(addprefix stmhal/,\ bufhelper.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)) diff --git a/esp8266/Makefile b/esp8266/Makefile index d234ce0227..96f8d504c2 100644 --- a/esp8266/Makefile +++ b/esp8266/Makefile @@ -92,10 +92,6 @@ SRC_C = \ hspi.c \ $(SRC_MOD) -STM_SRC_C = $(addprefix stmhal/,\ - pybstdio.c \ - ) - EXTMOD_SRC_C = $(addprefix extmod/,\ modlwip.c \ ) @@ -125,6 +121,7 @@ LIB_SRC_C = $(addprefix lib/,\ timeutils/timeutils.c \ utils/pyexec.c \ utils/interrupt_char.c \ + utils/sys_stdio_mphal.c \ ) ifeq ($(MICROPY_FATFS), 1) @@ -144,14 +141,13 @@ OBJ = OBJ += $(PY_O) OBJ += $(addprefix $(BUILD)/, $(SRC_C:.c=.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)/, $(LIB_SRC_C:.c=.o)) OBJ += $(addprefix $(BUILD)/, $(DRIVERS_SRC_C:.c=.o)) #OBJ += $(BUILD)/pins_$(BOARD).o # 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 SRC_QSTR_AUTO_DEPS += diff --git a/esp8266/esp8266_common.ld b/esp8266/esp8266_common.ld index bc983df700..de5268c8fe 100644 --- a/esp8266/esp8266_common.ld +++ b/esp8266/esp8266_common.ld @@ -125,8 +125,6 @@ SECTIONS *lib/timeutils/*.o*(.literal*, .text*) *lib/utils/*.o*(.literal*, .text*) - *stmhal/pybstdio.o(.literal*, .text*) - build/main.o(.literal* .text*) *gccollect.o(.literal* .text*) *gchelper.o(.literal* .text*) diff --git a/stmhal/pybstdio.c b/lib/utils/sys_stdio_mphal.c similarity index 89% rename from stmhal/pybstdio.c rename to lib/utils/sys_stdio_mphal.c index bd15c583df..fc8a74e7d6 100644 --- a/stmhal/pybstdio.c +++ b/lib/utils/sys_stdio_mphal.c @@ -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) * - * 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 * 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). /******************************************************************************/ -// Micro Python bindings +// MicroPython bindings #define STDIO_FD_IN (0) #define STDIO_FD_OUT (1) #define STDIO_FD_ERR (2) -typedef struct _pyb_stdio_obj_t { +typedef struct _sys_stdio_obj_t { mp_obj_base_t base; int fd; -} pyb_stdio_obj_t; +} sys_stdio_obj_t; #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 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, "", self->fd); } 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) { for (uint i = 0; i < size; i++) { 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) { - 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) { mp_hal_stdout_tx_strn_cooked(buf, 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, }; -const pyb_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 pyb_stdio_obj_t mp_sys_stderr_obj = {{&stdio_obj_type}, .fd = STDIO_FD_ERR}; +const sys_stdio_obj_t mp_sys_stdin_obj = {{&stdio_obj_type}, .fd = STDIO_FD_IN}; +const sys_stdio_obj_t mp_sys_stdout_obj = {{&stdio_obj_type}, .fd = STDIO_FD_OUT}; +const sys_stdio_obj_t mp_sys_stderr_obj = {{&stdio_obj_type}, .fd = STDIO_FD_ERR}; #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) { @@ -159,5 +159,5 @@ STATIC const mp_obj_type_t stdio_buffer_obj_type = { .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 diff --git a/pic16bit/Makefile b/pic16bit/Makefile index 8c0c1c999e..1da4449521 100644 --- a/pic16bit/Makefile +++ b/pic16bit/Makefile @@ -39,8 +39,8 @@ SRC_C = \ modpyb.c \ modpybled.c \ modpybswitch.c \ - stmhal/pybstdio.c \ lib/utils/pyexec.c \ + lib/utils/sys_stdio_mphal.c \ lib/mp-readline/readline.c \ SRC_S = \ diff --git a/qemu-arm/Makefile b/qemu-arm/Makefile index 07aa685720..67823d9962 100644 --- a/qemu-arm/Makefile +++ b/qemu-arm/Makefile @@ -63,17 +63,13 @@ LIB_SRC_C = $(addprefix lib/,\ libm/asinfacosf.c \ libm/atanf.c \ libm/atan2f.c \ - ) - -STM_SRC_C = $(addprefix stmhal/,\ - pybstdio.c \ + utils/sys_stdio_mphal.c \ ) OBJ_COMMON = OBJ_COMMON += $(PY_O) OBJ_COMMON += $(addprefix $(BUILD)/, $(SRC_COMMON_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 += $(addprefix $(BUILD)/, $(SRC_RUN_C:.c=.o)) @@ -86,7 +82,7 @@ OBJ_TEST += $(BUILD)/tinytest.o OBJ = $(OBJ_COMMON) $(OBJ_RUN) $(OBJ_TEST) # 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 diff --git a/stmhal/Makefile b/stmhal/Makefile index 2d9d44afd9..73c7ed6c4c 100644 --- a/stmhal/Makefile +++ b/stmhal/Makefile @@ -110,6 +110,7 @@ SRC_LIB = $(addprefix lib/,\ timeutils/timeutils.c \ utils/pyexec.c \ utils/interrupt_char.c \ + utils/sys_stdio_mphal.c \ ) DRIVERS_SRC_C = $(addprefix drivers/,\ @@ -145,7 +146,6 @@ SRC_C = \ usb.c \ wdt.c \ gccollect.c \ - pybstdio.c \ help.c \ machine_i2c.c \ modmachine.c \ diff --git a/teensy/Makefile b/teensy/Makefile index 923ea77ecd..8c864161ab 100644 --- a/teensy/Makefile +++ b/teensy/Makefile @@ -96,7 +96,6 @@ STM_SRC_C = $(addprefix stmhal/,\ irq.c \ pin.c \ pin_named_pins.c \ - pybstdio.c \ ) STM_SRC_S = $(addprefix stmhal/,\ @@ -107,6 +106,7 @@ LIB_SRC_C = $(addprefix lib/,\ libc/string0.c \ mp-readline/readline.c \ utils/pyexec.c \ + utils/sys_stdio_mphal.c \ ) SRC_TEENSY = $(addprefix core/,\