summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Moore <nick@zoic.org>2018-10-04 21:59:25 +1000
committerNick Moore <nick@zoic.org>2018-10-04 22:02:25 +1000
commitf9bda0ff93ef1211c84cbca02b76ae58bef60767 (patch)
tree6faf374b8f79b7b01e7bc0cd9c9bc46faf3f200e
parentd33f6214f15d1983c2fa7f54f42d2145e656fa22 (diff)
Makefile & mpconfigport for atmel-samd with wiznet
-rw-r--r--ports/atmel-samd/Makefile29
-rw-r--r--ports/atmel-samd/mpconfigport.h48
-rw-r--r--ports/atmel-samd/mpconfigport.mk3
3 files changed, 76 insertions, 4 deletions
diff --git a/ports/atmel-samd/Makefile b/ports/atmel-samd/Makefile
index f8e5051c2..f01704a81 100644
--- a/ports/atmel-samd/Makefile
+++ b/ports/atmel-samd/Makefile
@@ -123,7 +123,6 @@ endif
CFLAGS += $(INC) -Wall -Werror -std=gnu11 -nostdlib $(BASE_CFLAGS) $(CFLAGS_MOD) $(COPT)
-
ifeq ($(CHIP_FAMILY), samd21)
CFLAGS += \
-mthumb \
@@ -287,6 +286,25 @@ SRC_C = \
freetouch/adafruit_ptc.c \
supervisor/shared/memory.c
+ifeq ($(MICROPY_PY_NETWORK),1)
+CFLAGS += -DMICROPY_PY_NETWORK=1
+
+SRC_MOD += lib/netutils/netutils.c
+
+ifneq ($(MICROPY_PY_WIZNET5K),0)
+WIZNET5K_DIR=drivers/wiznet5k
+INC += -I$(TOP)/$(WIZNET5K_DIR)
+CFLAGS_MOD += -DMICROPY_PY_WIZNET5K=$(MICROPY_PY_WIZNET5K) -D_WIZCHIP_=$(MICROPY_PY_WIZNET5K)
+SRC_MOD += $(addprefix $(WIZNET5K_DIR)/,\
+ ethernet/w$(MICROPY_PY_WIZNET5K)/w$(MICROPY_PY_WIZNET5K).c \
+ ethernet/wizchip_conf.c \
+ ethernet/socket.c \
+ internet/dns/dns.c \
+ )
+
+endif # MICROPY_PY_WIZNET5K
+endif # MICROPY_PY_NETWORK
+
# Choose which flash filesystem impl to use.
# (Right now INTERNAL_FLASH_FILESYSTEM and SPI_FLASH_FILESYSTEM are mutually exclusive.
# But that might not be true in the future.)
@@ -362,7 +380,6 @@ SRC_LIBM = $(addprefix lib/,\
)
endif
-
# These don't have corresponding files in each port but are still located in
# shared-bindings to make it clear what the contents of the modules are.
SRC_BINDINGS_ENUMS = \
@@ -401,6 +418,13 @@ SRC_SHARED_MODULE = \
uheap/__init__.c \
ustack/__init__.c
+ifeq ($(MICROPY_PY_NETWORK),1)
+SRC_SHARED_MODULE += socket/__init__.c network/__init__.c
+ifneq ($(MICROPY_PY_WIZNET5K),0)
+SRC_SHARED_MODULE += wiznet/__init__.c
+endif
+endif
+
# SAMRs don't have a DAC
ifneq ($(CHIP_VARIANT),SAMR21G18A)
SRC_COMMON_HAL += \
@@ -441,6 +465,7 @@ ifeq ($(INTERNAL_LIBM),1)
OBJ += $(addprefix $(BUILD)/, $(SRC_LIBM:.c=.o))
endif
OBJ += $(addprefix $(BUILD)/, $(SRC_S:.s=.o))
+OBJ += $(addprefix $(BUILD)/, $(SRC_MOD:.c=.o))
SRC_QSTR += $(SRC_C) $(SRC_SUPERVISOR) $(SRC_COMMON_HAL_EXPANDED) $(SRC_SHARED_MODULE_EXPANDED) $(STM_SRC_C)
# Sources that only hold QSTRs after pre-processing.
diff --git a/ports/atmel-samd/mpconfigport.h b/ports/atmel-samd/mpconfigport.h
index 14f72ccfb..18fc0ccb3 100644
--- a/ports/atmel-samd/mpconfigport.h
+++ b/ports/atmel-samd/mpconfigport.h
@@ -67,6 +67,18 @@
#define MICROPY_FLOAT_HIGH_QUALITY_HASH (1)
#define MICROPY_STREAMS_NON_BLOCK (1)
+#ifndef MICROPY_PY_NETWORK
+#define MICROPY_PY_NETWORK (0)
+#endif
+
+#ifndef MICROPY_PY_WIZNET5K
+#define MICROPY_PY_WIZNET5K (0)
+#endif
+
+#ifndef MICROPY_PY_CC3K
+#define MICROPY_PY_CC3K (0)
+#endif
+
// fatfs configuration used in ffconf.h
#define MICROPY_FATFS_ENABLE_LFN (1)
#define MICROPY_FATFS_LFN_CODE_PAGE (437) /* 1=SFN/ANSI 437=LFN/U.S.(OEM) */
@@ -84,6 +96,7 @@
#define MICROPY_VFS (1)
#define MICROPY_VFS_FAT (1)
#define MICROPY_PY_MACHINE (1)
+#define MICROPY_MODULE_BUILTIN_INIT (1)
#define MICROPY_MODULE_WEAK_LINKS (0)
#define MICROPY_REPL_AUTO_INDENT (1)
#define MICROPY_HW_ENABLE_DAC (1)
@@ -121,6 +134,9 @@ typedef unsigned mp_uint_t; // must be pointer size
typedef long mp_off_t;
+// XXX check we don't need this
+#define MICROPY_THREAD_YIELD()
+
#define MP_PLAT_PRINT_STRN(str, len) mp_hal_stdout_tx_strn_cooked(str, len)
#define mp_type_fileio mp_type_vfs_fat_fileio
@@ -194,6 +210,9 @@ extern const struct _mp_obj_module_t gamepad_module;
extern const struct _mp_obj_module_t stage_module;
extern const struct _mp_obj_module_t touchio_module;
extern const struct _mp_obj_module_t usb_hid_module;
+extern const struct _mp_obj_module_t network_module;
+extern const struct _mp_obj_module_t socket_module;
+extern const struct _mp_obj_module_t wiznet_module;
// Internal flash size dependent settings.
#if BOARD_FLASH_SIZE > 192000
@@ -234,11 +253,26 @@ extern const struct _mp_obj_module_t usb_hid_module;
#endif
#ifdef CIRCUITPY_DISPLAYIO
- #define DISPLAYIO_MODULE { MP_OBJ_NEW_QSTR(MP_QSTR_displayio), (mp_obj_t)&displayio_module },
+ #define DISPLAYIO_MODULE { MP_OBJ_NEW_QSTR(MP_QSTR_displayio), (mp_obj_t)&displayio_module },
#else
- #define DISPLAYIO_MODULE
+ #define DISPLAYIO_MODULE
#endif
+ #if MICROPY_PY_NETWORK
+ #define NETWORK_MODULE { MP_OBJ_NEW_QSTR(MP_QSTR_network), (mp_obj_t)&network_module },
+ #define SOCKET_MODULE { MP_OBJ_NEW_QSTR(MP_QSTR_socket), (mp_obj_t)&socket_module },
+ #if MICROPY_PY_WIZNET5K
+ #define WIZNET_MODULE { MP_OBJ_NEW_QSTR(MP_QSTR_wiznet), (mp_obj_t)&wiznet_module },
+ #else
+ #define WIZNET_MODULE
+ #endif
+ #else
+ #define NETWORK_MODULE
+ #define SOCKET_MODULE
+ #define WIZNET_MODULE
+ #endif
+
+
#ifndef EXTRA_BUILTIN_MODULES
#define EXTRA_BUILTIN_MODULES \
AUDIOIO_MODULE \
@@ -246,6 +280,9 @@ extern const struct _mp_obj_module_t usb_hid_module;
{ MP_OBJ_NEW_QSTR(MP_QSTR_bitbangio), (mp_obj_t)&bitbangio_module }, \
DISPLAYIO_MODULE \
I2CSLAVE_MODULE \
+ NETWORK_MODULE \
+ SOCKET_MODULE \
+ WIZNET_MODULE \
{ MP_OBJ_NEW_QSTR(MP_QSTR_rotaryio), (mp_obj_t)&rotaryio_module }, \
{ MP_OBJ_NEW_QSTR(MP_QSTR_gamepad),(mp_obj_t)&gamepad_module }
#endif
@@ -345,6 +382,12 @@ extern const struct _mp_obj_module_t usb_hid_module;
#include "peripherals/samd/dma.h"
+#if MICROPY_PY_NETWORK
+ #define NETWORK_ROOT_POINTERS mp_obj_list_t mod_network_nic_list;
+#else
+ #define NETWORK_ROOT_POINTERS
+#endif
+
#define MICROPY_PORT_ROOT_POINTERS \
const char *readline_hist[8]; \
vstr_t *repl_line; \
@@ -352,6 +395,7 @@ extern const struct _mp_obj_module_t usb_hid_module;
mp_obj_t rtc_time_source; \
FLASH_ROOT_POINTERS \
mp_obj_t gamepad_singleton; \
+ NETWORK_ROOT_POINTERS \
void run_background_tasks(void);
#define MICROPY_VM_HOOK_LOOP run_background_tasks();
diff --git a/ports/atmel-samd/mpconfigport.mk b/ports/atmel-samd/mpconfigport.mk
index c2eedfdc3..bc3acebb9 100644
--- a/ports/atmel-samd/mpconfigport.mk
+++ b/ports/atmel-samd/mpconfigport.mk
@@ -16,3 +16,6 @@ endif
INTERNAL_LIBM = 1
+
+MICROPY_PY_NETWORK = 1
+MICROPY_PY_WIZNET5K = 5500