forked from plieningerweb/esp8266-software-uart
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 74ee970
Showing
7 changed files
with
625 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
*.swp | ||
firmware/* | ||
build/* |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,147 @@ | ||
# tnx to mamalala | ||
# Changelog | ||
# Changed the variables to include the header file directory | ||
# Added global var for the XTENSA tool root | ||
# | ||
# This make file still needs some work. | ||
# | ||
# | ||
# Output directors to store intermediate compiled files | ||
# relative to the project directory | ||
BUILD_BASE = build | ||
FW_BASE = firmware | ||
|
||
# Base directory for the compiler | ||
#XTENSA_TOOLS_ROOT ?= /opt/Espressif/crosstool-NG/builds/xtensa-lx106-elf/bin | ||
XTENSA_TOOLS_ROOT ?= /home/main/esp8266/esp-open-sdk/xtensa-lx106-elf/bin | ||
|
||
# base directory of the ESP8266 SDK package, absolute | ||
#SDK_BASE ?= /opt/Espressif/ESP8266_SDK | ||
SDK_BASE ?= /home/main/esp8266/esp-open-sdk/sdk | ||
|
||
#Esptool.py path and port | ||
ESPTOOL ?= /home/main/esp8266/esp-open-sdk/esptool/esptool.py | ||
ESPPORT ?= /dev/ttyUSB0 | ||
|
||
# name for the target project | ||
TARGET = app | ||
|
||
# which modules (subdirectories) of the project to include in compiling | ||
MODULES = driver user softuart | ||
EXTRA_INCDIR = include /opt/Espressif/include | ||
|
||
# libraries used in this project, mainly provided by the SDK | ||
LIBS = c gcc hal pp phy net80211 lwip wpa main | ||
|
||
# compiler flags using during compilation of source files | ||
CFLAGS = -Os -g -O2 -Wpointer-arith -Wundef -Werror -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -D__ets__ -DICACHE_FLASH | ||
|
||
# linker flags used to generate the main object file | ||
LDFLAGS = -nostdlib -Wl,--no-check-sections -u call_user_start -Wl,-static | ||
|
||
# linker script used for the above linkier step | ||
LD_SCRIPT = eagle.app.v6.ld | ||
|
||
# various paths from the SDK used in this project | ||
SDK_LIBDIR = lib | ||
SDK_LDDIR = ld | ||
SDK_INCDIR = include include/json | ||
|
||
# we create two different files for uploading into the flash | ||
# these are the names and options to generate them | ||
FW_FILE_1 = 0x00000 | ||
FW_FILE_1_ARGS = -bo $@ -bs .text -bs .data -bs .rodata -bc -ec | ||
FW_FILE_2 = 0x40000 | ||
FW_FILE_2_ARGS = -es .irom0.text $@ -ec | ||
|
||
# select which tools to use as compiler, librarian and linker | ||
CC := $(XTENSA_TOOLS_ROOT)/xtensa-lx106-elf-gcc | ||
AR := $(XTENSA_TOOLS_ROOT)/xtensa-lx106-elf-ar | ||
LD := $(XTENSA_TOOLS_ROOT)/xtensa-lx106-elf-gcc | ||
|
||
|
||
|
||
#### | ||
#### no user configurable options below here | ||
#### | ||
SRC_DIR := $(MODULES) | ||
BUILD_DIR := $(addprefix $(BUILD_BASE)/,$(MODULES)) | ||
|
||
SDK_LIBDIR := $(addprefix $(SDK_BASE)/,$(SDK_LIBDIR)) | ||
SDK_INCDIR := $(addprefix -I$(SDK_BASE)/,$(SDK_INCDIR)) | ||
|
||
SRC := $(foreach sdir,$(SRC_DIR),$(wildcard $(sdir)/*.c)) | ||
OBJ := $(patsubst %.c,$(BUILD_BASE)/%.o,$(SRC)) | ||
LIBS := $(addprefix -l,$(LIBS)) | ||
APP_AR := $(addprefix $(BUILD_BASE)/,$(TARGET)_app.a) | ||
TARGET_OUT := $(addprefix $(BUILD_BASE)/,$(TARGET).out) | ||
|
||
LD_SCRIPT := $(addprefix -T$(SDK_BASE)/$(SDK_LDDIR)/,$(LD_SCRIPT)) | ||
|
||
INCDIR := $(addprefix -I,$(SRC_DIR)) | ||
EXTRA_INCDIR := $(addprefix -I,$(EXTRA_INCDIR)) | ||
MODULE_INCDIR := $(addsuffix /include,$(INCDIR)) | ||
|
||
FW_FILE_1 := $(addprefix $(FW_BASE)/,$(FW_FILE_1).bin) | ||
FW_FILE_2 := $(addprefix $(FW_BASE)/,$(FW_FILE_2).bin) | ||
|
||
V ?= $(VERBOSE) | ||
ifeq ("$(V)","1") | ||
Q := | ||
vecho := @true | ||
else | ||
Q := @ | ||
vecho := @echo | ||
endif | ||
|
||
vpath %.c $(SRC_DIR) | ||
|
||
define compile-objects | ||
$1/%.o: %.c | ||
$(vecho) "CC $$<" | ||
$(Q) $(CC) $(INCDIR) $(MODULE_INCDIR) $(EXTRA_INCDIR) $(SDK_INCDIR) $(CFLAGS) -c $$< -o $$@ | ||
endef | ||
|
||
.PHONY: all checkdirs flash clean | ||
|
||
all: checkdirs $(TARGET_OUT) $(FW_FILE_1) $(FW_FILE_2) | ||
|
||
$(FW_FILE_1): $(TARGET_OUT) | ||
$(vecho) "FW $@" | ||
$(ESPTOOL) elf2image $< -o $(FW_BASE)/ | ||
|
||
$(FW_FILE_2): $(TARGET_OUT) | ||
$(vecho) "FW $@" | ||
$(ESPTOOL) elf2image $< -o $(FW_BASE)/ | ||
|
||
$(TARGET_OUT): $(APP_AR) | ||
$(vecho) "LD $@" | ||
$(Q) $(LD) -L$(SDK_LIBDIR) $(LD_SCRIPT) $(LDFLAGS) -Wl,--start-group $(LIBS) $(APP_AR) -Wl,--end-group -o $@ | ||
|
||
$(APP_AR): $(OBJ) | ||
$(vecho) "AR $@" | ||
$(Q) $(AR) cru $@ $^ | ||
|
||
checkdirs: $(BUILD_DIR) $(FW_BASE) | ||
|
||
$(BUILD_DIR): | ||
$(Q) mkdir -p $@ | ||
|
||
firmware: | ||
$(Q) mkdir -p $@ | ||
|
||
flash: firmware/0x00000.bin firmware/0x40000.bin | ||
-$(ESPTOOL) --baud 115200 --port $(ESPPORT) write_flash 0x00000 firmware/0x00000.bin 0x40000 firmware/0x40000.bin | ||
|
||
clean: | ||
$(Q) rm -f $(APP_AR) | ||
$(Q) rm -f $(TARGET_OUT) | ||
$(Q) rm -rf $(BUILD_DIR) | ||
$(Q) rm -rf $(BUILD_BASE) | ||
|
||
|
||
$(Q) rm -f $(FW_FILE_1) | ||
$(Q) rm -f $(FW_FILE_2) | ||
$(Q) rm -rf $(FW_BASE) | ||
|
||
$(foreach bdir,$(BUILD_DIR),$(eval $(call compile-objects,$(bdir)))) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
#ifndef SOFTUART_H_ | ||
#define SOFTUART_H_ | ||
|
||
#include "user_interface.h" | ||
|
||
#define SOFTUART_MAX_RX_BUFF 64 | ||
|
||
#define SOFTUART_GPIO_COUNT 16 | ||
|
||
typedef struct softuart_pin_t { | ||
uint8_t gpio_id; | ||
uint32_t gpio_mux_name; | ||
uint8_t gpio_func; | ||
} softuart_pin_t; | ||
|
||
typedef struct softuart_buffer_t { | ||
char receive_buffer[SOFTUART_MAX_RX_BUFF]; | ||
uint8_t receive_buffer_tail; | ||
uint8_t receive_buffer_head; | ||
uint8_t buffer_overflow; | ||
} softuart_buffer_t; | ||
|
||
typedef struct { | ||
softuart_pin_t pin_rx; | ||
softuart_pin_t pin_tx; | ||
volatile softuart_buffer_t buffer; | ||
uint16_t bit_time; | ||
} Softuart; | ||
|
||
|
||
BOOL Softuart_Available(Softuart *s); | ||
void Softuart_Intr_Handler(Softuart *s); | ||
|
||
|
||
//define mapping from pin to functio mode | ||
typedef struct { | ||
uint32_t gpio_mux_name; | ||
uint8_t gpio_func; | ||
} softuart_reg_t; | ||
|
||
#endif /* SOFTUART_H_ */ |
Oops, something went wrong.