summaryrefslogtreecommitdiff
path: root/teensy
diff options
context:
space:
mode:
Diffstat (limited to 'teensy')
-rw-r--r--teensy/Makefile26
-rw-r--r--teensy/import.c17
-rw-r--r--teensy/lexermemzip.c17
-rw-r--r--teensy/memzip.c106
-rw-r--r--teensy/memzip.h83
5 files changed, 16 insertions, 233 deletions
diff --git a/teensy/Makefile b/teensy/Makefile
index 42cb5123e..9db22918c 100644
--- a/teensy/Makefile
+++ b/teensy/Makefile
@@ -78,12 +78,12 @@ SRC_C = \
hal_ftm.c \
hal_gpio.c \
help.c \
- import.c \
main.c \
lcd.c \
led.c \
- lexermemzip.c \
- memzip.c \
+ lib/memzip/import.c \
+ lib/memzip/lexermemzip.c \
+ lib/memzip/memzip.c \
modpyb.c \
pin_defs_teensy.c \
reg.c \
@@ -92,6 +92,7 @@ SRC_C = \
uart.c \
usb.c \
+
STM_SRC_C = $(addprefix stmhal/,\
gccollect.c \
input.c \
@@ -126,12 +127,13 @@ SRC_TEENSY = $(addprefix core/,\
OBJ = $(PY_O) $(addprefix $(BUILD)/, $(SRC_C:.c=.o) $(STM_SRC_C:.c=.o) $(STM_SRC_S:.s=.o) $(SRC_TEENSY:.c=.o))
OBJ += $(addprefix $(BUILD)/, $(LIB_SRC_C:.c=.o))
OBJ += $(BUILD)/pins_gen.o
+OBJ += $(BUILD)/memzip-files.o
all: hex
-hex: $(BUILD)/micropython-mz.hex
+hex: $(BUILD)/micropython.hex
ifeq ($(ARDUINO),)
-post_compile: $(BUILD)/micropython-mz.hex
+post_compile: $(BUILD)/micropython.hex
$(ECHO) "Please define ARDUINO (where TeensyDuino is installed)"
exit 1
@@ -142,7 +144,7 @@ reboot:
else
TOOLS_PATH = $(ARDUINO)/hardware/tools
-post_compile: $(BUILD)/micropython-mz.hex
+post_compile: $(BUILD)/micropython.hex
$(ECHO) "Preparing $@ for upload"
$(Q)$(TOOLS_PATH)/teensy_post_compile -file="$(basename $(<F))" -path="$(abspath $(<D))" -tools="$(TOOLS_PATH)"
@@ -163,15 +165,12 @@ ifeq ($(MEMZIP_DIR),)
MEMZIP_DIR = memzip_files
endif
-$(BUILD)/micropython-mz.hex: $(BUILD)/micropython.hex $(shell find ${MEMZIP_DIR} -type f)
- @$(ECHO) "Creating $@"
- $(Q)./add-memzip.sh $< $@ ${MEMZIP_DIR}
-
$(BUILD)/%.hex: $(BUILD)/%.elf
$(ECHO) "HEX $<"
$(Q)$(OBJCOPY) -O ihex -R .eeprom "$<" "$@"
MAKE_PINS = make-pins.py
+MAKE_MEMZIP = ../lib/memzip/make-memzip.py
BOARD_PINS = teensy_pins.csv
AF_FILE = mk20dx256_af.csv
PREFIX_FILE = mk20dx256_prefix.c
@@ -197,6 +196,13 @@ $(BUILD)/%_gen.c $(HEADER_BUILD)/%.h $(HEADER_BUILD)/%_af_const.h $(BUILD)/%_qst
$(BUILD)/pins_gen.o: $(BUILD)/pins_gen.c
$(call compile_c)
+$(BUILD)/memzip-files.o: $(BUILD)/memzip-files.c
+ $(call compile_c)
+
+$(BUILD)/memzip-files.c: $(shell find ${MEMZIP_DIR} -type f)
+ @$(ECHO) "Creating $@"
+ $(Q)$(PYTHON) $(MAKE_MEMZIP) --zip-file $(BUILD)/memzip-files.zip --c-file $@ $(MEMZIP_DIR)
+
$(BUILD)/%.pp: $(BUILD)/%.c
$(ECHO) "PreProcess $<"
$(Q)$(CC) $(CFLAGS) -E -Wp,-C,-dD,-dI -o $@ $<
diff --git a/teensy/import.c b/teensy/import.c
deleted file mode 100644
index 2d5225b88..000000000
--- a/teensy/import.c
+++ /dev/null
@@ -1,17 +0,0 @@
-#include <stdio.h>
-
-#include "py/lexer.h"
-#include "memzip.h"
-
-mp_import_stat_t mp_import_stat(const char *path) {
- MEMZIP_FILE_INFO info;
-
- if (memzip_stat(path, &info) != MZ_OK) {
- return MP_IMPORT_STAT_NO_EXIST;
- }
-
- if (info.is_dir) {
- return MP_IMPORT_STAT_DIR;
- }
- return MP_IMPORT_STAT_FILE;
-}
diff --git a/teensy/lexermemzip.c b/teensy/lexermemzip.c
deleted file mode 100644
index 72fe6b1c6..000000000
--- a/teensy/lexermemzip.c
+++ /dev/null
@@ -1,17 +0,0 @@
-#include <stdlib.h>
-
-#include "py/lexer.h"
-#include "memzip.h"
-
-mp_lexer_t *mp_lexer_new_from_file(const char *filename)
-{
- void *data;
- size_t len;
-
- if (memzip_locate(filename, &data, &len) != MZ_OK) {
- return NULL;
- }
-
- return mp_lexer_new_from_str_len(qstr_from_str(filename), (const char *)data, (mp_uint_t)len, 0);
-}
-
diff --git a/teensy/memzip.c b/teensy/memzip.c
deleted file mode 100644
index 88c084381..000000000
--- a/teensy/memzip.c
+++ /dev/null
@@ -1,106 +0,0 @@
-#include <stdint.h>
-#include <stdlib.h>
-#include <string.h>
-#include "py/mpconfig.h"
-#include "py/misc.h"
-#include "memzip.h"
-
-extern uint8_t _staticfs[];
-
-const MEMZIP_FILE_HDR *memzip_find_file_header(const char *filename) {
-
- const MEMZIP_FILE_HDR *file_hdr = (const MEMZIP_FILE_HDR *)_staticfs;
- uint8_t *mem_data;
-
- /* Zip file filenames don't have a leading /, so we strip it off */
-
- if (*filename == '/') {
- filename++;
- }
- while (file_hdr->signature == MEMZIP_FILE_HEADER_SIGNATURE) {
- const char *file_hdr_filename = (const char *)&file_hdr[1];
- mem_data = (uint8_t *)file_hdr_filename;
- mem_data += file_hdr->filename_len;
- mem_data += file_hdr->extra_len;
- if (!strncmp(file_hdr_filename, filename, file_hdr->filename_len)) {
- /* We found a match */
- return file_hdr;
- }
- mem_data += file_hdr->uncompressed_size;
- file_hdr = (const MEMZIP_FILE_HDR *)mem_data;
- }
- return NULL;
-}
-
-bool memzip_is_dir(const char *filename) {
- const MEMZIP_FILE_HDR *file_hdr = (const MEMZIP_FILE_HDR *)_staticfs;
- uint8_t *mem_data;
-
- if (strcmp(filename, "/") == 0) {
- // The root directory is a directory.
- return true;
- }
-
- // Zip filenames don't have a leading /, so we strip it off
- if (*filename == '/') {
- filename++;
- }
- size_t filename_len = strlen(filename);
-
- while (file_hdr->signature == MEMZIP_FILE_HEADER_SIGNATURE) {
- const char *file_hdr_filename = (const char *)&file_hdr[1];
- if (filename_len < file_hdr->filename_len &&
- strncmp(file_hdr_filename, filename, filename_len) == 0 &&
- file_hdr_filename[filename_len] == '/') {
- return true;
- }
-
- mem_data = (uint8_t *)file_hdr_filename;
- mem_data += file_hdr->filename_len;
- mem_data += file_hdr->extra_len;
- mem_data += file_hdr->uncompressed_size;
- file_hdr = (const MEMZIP_FILE_HDR *)mem_data;
- }
- return NULL;
-
-}
-
-MEMZIP_RESULT memzip_locate(const char *filename, void **data, size_t *len)
-{
- const MEMZIP_FILE_HDR *file_hdr = memzip_find_file_header(filename);
- if (file_hdr == NULL) {
- return MZ_NO_FILE;
- }
- if (file_hdr->compression_method != 0) {
- return MZ_FILE_COMPRESSED;
- }
-
- uint8_t *mem_data;
- mem_data = (uint8_t *)&file_hdr[1];
- mem_data += file_hdr->filename_len;
- mem_data += file_hdr->extra_len;
-
- *data = mem_data;
- *len = file_hdr->uncompressed_size;
- return MZ_OK;
-}
-
-MEMZIP_RESULT memzip_stat(const char *path, MEMZIP_FILE_INFO *info) {
- const MEMZIP_FILE_HDR *file_hdr = memzip_find_file_header(path);
- if (file_hdr == NULL) {
- if (memzip_is_dir(path)) {
- info->file_size = 0;
- info->last_mod_date = 0;
- info->last_mod_time = 0;
- info->is_dir = 1;
- return MZ_OK;
- }
- return MZ_NO_FILE;
- }
- info->file_size = file_hdr->uncompressed_size;
- info->last_mod_date = file_hdr->last_mod_date;
- info->last_mod_time = file_hdr->last_mod_time;
- info->is_dir = 0;
-
- return MZ_OK;
-}
diff --git a/teensy/memzip.h b/teensy/memzip.h
deleted file mode 100644
index 667e2df7e..000000000
--- a/teensy/memzip.h
+++ /dev/null
@@ -1,83 +0,0 @@
-#pragma pack(push, 1)
-
-#define MEMZIP_FILE_HEADER_SIGNATURE 0x04034b50
-typedef struct
-{
- uint32_t signature;
- uint16_t version;
- uint16_t flags;
- uint16_t compression_method;
- uint16_t last_mod_time;
- uint16_t last_mod_date;
- uint32_t crc32;
- uint32_t compressed_size;
- uint32_t uncompressed_size;
- uint16_t filename_len;
- uint16_t extra_len;
-
- /* char filename[filename_len] */
- /* uint8_t extra[extra_len] */
-
-} MEMZIP_FILE_HDR;
-
-#define MEMZIP_CENTRAL_DIRECTORY_SIGNATURE 0x02014b50
-typedef struct
-{
- uint32_t signature;
- uint16_t version_made_by;
- uint16_t version_read_with;
- uint16_t flags;
- uint16_t compression_method;
- uint16_t last_mod_time;
- uint16_t last_mod_date;
- uint32_t crc32;
- uint32_t compressed_size;
- uint32_t uncompressed_size;
- uint16_t filename_len;
- uint16_t extra_len;
- uint16_t disk_num;
- uint16_t internal_file_attributes;
- uint32_t external_file_attributes;
- uint32_t file_header_offset;
-
- /* char filename[filename_len] */
- /* uint8_t extra[extra_len] */
-
-} MEMZIP_CENTRAL_DIRECTORY_HDR;
-
-#define MEMZIP_END_OF_CENTRAL_DIRECTORY_SIGNATURE 0x06054b50
-typedef struct
-{
- uint32_t signature;
- uint16_t disk_num;
- uint16_t central_directory_disk;
- uint16_t num_central_directories_this_disk;
- uint16_t total_central_directories;
- uint32_t central_directory_size;
- uint32_t central_directory_offset;
- uint16_t comment_len;
-
- /* char comment[comment_len] */
-
-} MEMZIP_END_OF_CENTRAL_DIRECTORY;
-
-#pragma pack(pop)
-
-typedef enum {
- MZ_OK = 0, /* (0) Succeeded */
- MZ_NO_FILE, /* (1) Could not find the file. */
- MZ_FILE_COMPRESSED, /* (2) File is compressed (expecting uncompressed) */
-
-} MEMZIP_RESULT;
-
-typedef struct {
- uint32_t file_size;
- uint16_t last_mod_date;
- uint16_t last_mod_time;
- uint8_t is_dir;
-
-} MEMZIP_FILE_INFO;
-
-MEMZIP_RESULT memzip_locate(const char *filename, void **data, size_t *len);
-
-MEMZIP_RESULT memzip_stat(const char *path, MEMZIP_FILE_INFO *info);