I am trying to add the libesphttpd library into my FreeRTOS project but I keep getting an error. I tried using sudo to resolve this but it's gives me another error saying system cannot find the files specified, I've checked to make sure all the files are in the right place. I also tried adding VPATH to the folder but no luck. I haven't made much changes to the libesphttpd folder except for defining FREERTOS and was able to compile the nonos esphttpd demo so I assume there's something wrong with my makefile.
Any suggestions or information regarding this would be greatly appreciated.
Error message:-
mingw32-make all
make[1]: Entering directory `/c/Firmware/eclipse-workspace/project/libesphttpd'
AR libesphttpd.a
make[2]: Entering directory `/c/Firmware/eclipse-workspace/project/libesphttpd/espfs/mkespfsimage'
make -C mman-win32
make[3]: Entering directory `/c/Firmware/eclipse-workspace/project/libesphttpd/espfs/mkespfsimage/mman-win32'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/c/Firmware/eclipse-workspace/project/libesphttpd/espfs/mkespfsimage/mman-win32'
make[2]: Leaving directory `/c/Firmware/eclipse-workspace/project/libesphttpd/espfs/mkespfsimage'
140medley.min.js (74%, heatshrink)
DIN-Next-W01-Light.eot (100%, none)
login/login_webpage.css (54%, heatshrink)
login/login_webpage.html (53%, heatshrink)
login/login_webpage_de.html (54%, heatshrink)
logo.png (100%, none)
main/140medley.min.js (74%, heatshrink)
main/connecting.html (57%, heatshrink)
main/main_webpage.css (35%, heatshrink)
main/main_webpage.html (30%, heatshrink)
main/main_webpage.js (29%, heatshrink)
main/main_webpage_de.html (31%, heatshrink)
make[1]: Leaving directory `/c/Firmware/eclipse-workspace/project/libesphttpd'
CC driver/gpio.c
CC driver/uart.c
CC user/startup.c
CC user/user_main.c
CC user/user_cgi.c
C:/Firmware/eclipse-workspace/project/libesphttpd/
AR build/project_app.a
c:/Espressif/xtensa-lx106-elf/bin/xtensa-lx106-elf-ar: libesphttpd: Permission denied
common_rtos.mk:280: recipe for target 'build/project_app.a' failed
mingw32-make: *** [build/project_app.a] Error 1Command where it failed (common_rtos.mk):-
$(APP_AR): libesphttpd $(OBJ)
$(vecho) "AR $@"
$(Q) $(AR) cru $@ $^Please refer to the makefiles for more information.
Makefile:-
# Main settings includes
include settings.mk
# Individual project settings (Optional)
#SDK_BASE = c:/Espressif/ESP8266_RTOS_SDK
#BOOT = new
#APP = 1
#SPI_SPEED = 40
#SPI_MODE = QIO
#SPI_SIZE_MAP = 2
#ESPPORT = COM2
#ESPBAUD = 256000
# Basic project settings
MODULES = driver user libesphttpd
LIBS = gcc hal phy pp net80211 wpa crypto main freertos lwip minic smartconfig json wps esphttpd
ifeq ("$(ESPFS_POS)","")
#No hardcoded espfs position: link it in with the binaries.
LIBS += webpages-espfs
else
#Hardcoded espfs location: Pass espfs position to rest of code
CFLAGS += -DESPFS_POS=$(ESPFS_POS) -DESPFS_SIZE=$(ESPFS_SIZE)
endif
# Root includes
include common_rtos.mk settings.mk:-
# build directory
BUILD_BASE = build
# firmware directory
FW_BASE = firmware
# name for the target project
TARGET = project
# Base directory for the compiler
XTENSA_TOOLS_ROOT ?= c:/Espressif/xtensa-lx106-elf/bin/
# base directory of the ESP8266 SDK package, absolute
SDK_BASE ?= c:/Espressif/ESP8266_RTOS_SDK
SDK_TOOLS ?= c:/Espressif/utils/ESP8266
SDK_PATH ?= $(SDK_BASE)
#Address uses user data address 0x0FC000 - 0x1FBFFF, has 1024kb size
ESPFS_POS = 0x0FC000
ESPFS_SIZE = 0x0FFFFF
# Extra libs, include and ld file
EXTRA_BASE ?= c:/Espressif/extra
# esptool path and port
ESPTOOL ?= $(SDK_TOOLS)/esptool.exe
#ESPTOOL ?= c:/Firmware/Wifi_Module/esptool-master/esptool.py
ESPPORT ?= COM3
# Baud rate for programmer
ESPBAUD ?= 230400
# BOOT = none
# BOOT = old - boot_v1.1
# BOOT = new - boot_v1.2+
BOOT ?= new
# APP = 0 - eagle.flash.bin + eagle.irom0text.bin
# APP = 1 - user1.bin
# APP = 2 - user2.bin
APP ?= 1
# SPI_SPEED = 40, 26, 20, 80
SPI_SPEED ?= 40
# SPI_MODE: QIO, QOUT, DIO, DOUT
SPI_MODE ?= QIO
# SPI_SIZE_MAP
# 0 : 512 KB (256 KB + 256 KB)
# 1 : 256 KB
# 2 : 1024 KB (512 KB + 512 KB)
# 3 : 2048 KB (512 KB + 512 KB)
# 4 : 4096 KB (512 KB + 512 KB)
# 5 : 2048 KB (1024 KB + 1024 KB)
# 6 : 4096 KB (1024 KB + 1024 KB)
SPI_SIZE_MAP ?= 3common_rtos.mk:-
#############################################################
#
# Root Level Makefile
#
# Version 2.0
#
# (c) by CHERTS <sleuthhound@gmail.com>
#
#############################################################
ifeq ($(BOOT), new)
boot = new
else
ifeq ($(BOOT), old)
boot = old
else
boot = none
endif
endif
ifeq ($(APP), 1)
app = 1
else
ifeq ($(APP), 2)
app = 2
else
app = 0
endif
endif
ifeq ($(SPI_SPEED), 26.7)
freqdiv = 1
flashimageoptions = -ff 26m
else
ifeq ($(SPI_SPEED), 20)
freqdiv = 2
flashimageoptions = -ff 20m
else
ifeq ($(SPI_SPEED), 80)
freqdiv = 15
flashimageoptions = -ff 80m
else
freqdiv = 0
flashimageoptions = -ff 40m
endif
endif
endif
ifeq ($(SPI_MODE), QOUT)
mode = 1
flashimageoptions += -fm qout
else
ifeq ($(SPI_MODE), DIO)
mode = 2
flashimageoptions += -fm dio
else
ifeq ($(SPI_MODE), DOUT)
mode = 3
flashimageoptions += -fm dout
else
mode = 0
flashimageoptions += -fm qio
endif
endif
endif
addr = 0x01000
ifeq ($(SPI_SIZE_MAP), 1)
size_map = 1
flash = 256
flashimageoptions += -fs 2m
else
ifeq ($(SPI_SIZE_MAP), 2)
size_map = 2
flash = 1024
flashimageoptions += -fs 8m
ifeq ($(app), 2)
addr = 0x81000
endif
else
ifeq ($(SPI_SIZE_MAP), 3)
size_map = 3
flash = 2048
flashimageoptions += -fs 16m
ifeq ($(app), 2)
addr = 0x81000
endif
else
ifeq ($(SPI_SIZE_MAP), 4)
size_map = 4
flash = 4096
flashimageoptions += -fs 32m
ifeq ($(app), 2)
addr = 0x81000
endif
else
ifeq ($(SPI_SIZE_MAP), 5)
size_map = 5
flash = 2048
flashimageoptions += -fs 16m
ifeq ($(app), 2)
addr = 0x101000
endif
else
ifeq ($(SPI_SIZE_MAP), 6)
size_map = 6
flash = 4096
flashimageoptions += -fs 32m
ifeq ($(app), 2)
addr = 0x101000
endif
else
size_map = 0
flash = 512
flashimageoptions += -fs 4m
ifeq ($(app), 2)
addr = 0x41000
endif
endif
endif
endif
endif
endif
endif
EXTRA_INCDIR = include libesphttpd/include libesphttpd/espfs
# compiler flags using during compilation of source files
CFLAGS = -Os -g -O2 -std=gnu90 -Wpointer-arith -Wundef -Werror -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -mno-serialize-volatile -D__ets__ -DICACHE_FLASH
CXXFLAGS = -Os -g -O2 -Wpointer-arith -Wundef -Werror -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -mno-serialize-volatile -D__ets__ -DICACHE_FLASH -fno-rtti -fno-exceptions
# 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
ifneq ($(boot), none)
ifneq ($(app),0)
ifeq ($(size_map), 6)
LD_SCRIPT = eagle.app.v6.$(boot).2048.ld
else
ifeq ($(size_map), 5)
LD_SCRIPT = eagle.app.v6.$(boot).2048.ld
else
ifeq ($(size_map), 4)
LD_SCRIPT = eagle.app.v6.$(boot).1024.app$(app).ld
else
ifeq ($(size_map), 3)
LD_SCRIPT = eagle.app.v6.$(boot).1024.app$(app).ld
else
ifeq ($(size_map), 2)
LD_SCRIPT = eagle.app.v6.$(boot).1024.app$(app).ld
else
ifeq ($(size_map), 0)
LD_SCRIPT = eagle.app.v6.$(boot).512.app$(app).ld
endif
endif
endif
endif
endif
endif
BIN_NAME = user$(app).$(flash).$(boot).$(size_map)
CFLAGS += -DAT_UPGRADE_SUPPORT
endif
else
app = 0
endif
EXTRA_LD_SCRIPTS = ldscript_memspecific.ld
# various paths from the SDK used in this project
SDK_LIBDIR = lib
SDK_LDDIR = ld
SDK_INCDIR = extra_include include include/espressif include/json include/udhcp include/lwip include/lwip/lwip include/lwip/ipv4 include/lwip/ipv6
# select which tools to use as compiler, librarian and linker
CC := $(XTENSA_TOOLS_ROOT)xtensa-lx106-elf-gcc
CXX := $(XTENSA_TOOLS_ROOT)xtensa-lx106-elf-g++
AR := $(XTENSA_TOOLS_ROOT)xtensa-lx106-elf-ar
LD := $(XTENSA_TOOLS_ROOT)xtensa-lx106-elf-gcc
OBJCOPY := $(XTENSA_TOOLS_ROOT)xtensa-lx106-elf-objcopy
OBJDUMP := $(XTENSA_TOOLS_ROOT)xtensa-lx106-elf-objdump
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*))
C_OBJ := $(patsubst %.c,%.o,$(SRC))
CXX_OBJ := $(patsubst %.cpp,%.o,$(C_OBJ))
OBJ := $(patsubst %.o,$(BUILD_BASE)/%.o,$(CXX_OBJ))
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))
V ?= $(VERBOSE)
ifeq ("$(V)","1")
Q :=
vecho := @true
else
Q := @
vecho := @echo
endif
vpath %.c $(SRC_DIR)
vpath %.cpp $(SRC_DIR)
define compile-objects
$1/%.o: %.c
$(vecho) "CC $$<"
$(Q) $(CC) $(INCDIR) $(MODULE_INCDIR) $(EXTRA_INCDIR) $(SDK_INCDIR) $(CFLAGS) -c $$< -o $$@
$1/%.o: %.cpp
$(vecho) "C+ $$<"
$(Q) $(CXX) $(INCDIR) $(MODULE_INCDIR) $(EXTRA_INCDIR) $(SDK_INCDIR) $(CXXFLAGS) -c $$< -o $$@
endef
VPATH += C:/Firmware/eclipse-workspace/project/libesphttpd/
.PHONY: all checkdirs clean flash flashboot flashbootnew flashinit rebuild eraseflash flashall htmlflash libesphttpd
libesphttpd: libesphttpd/Makefile
$(Q) make -C libesphttpd
all: checkdirs $(TARGET_OUT)
$(TARGET_OUT): $(APP_AR)
$(vecho) "LD $@"
$(Q) $(LD) -Llibesphttpd -L$(SDK_LIBDIR) $(LD_SCRIPT) $(LDFLAGS) -Wl,--start-group $(LIBS) $(APP_AR) -Wl,--end-group -o $@
$(vecho) "Run objcopy, please wait..."
$(Q) $(OBJCOPY) --only-section .text -O binary $@ eagle.app.v6.text.bin
$(Q) $(OBJCOPY) --only-section .data -O binary $@ eagle.app.v6.data.bin
$(Q) $(OBJCOPY) --only-section .rodata -O binary $@ eagle.app.v6.rodata.bin
$(Q) $(OBJCOPY) --only-section .irom0.text -O binary $@ eagle.app.v6.irom0text.bin
$(vecho) "objcopy done"
$(vecho) "Run gen_appbin.exe"
ifeq ($(app), 0)
$(Q) $(SDK_TOOLS)/gen_appbin.exe $@ 0 $(mode) $(freqdiv) $(size_map) $(app)
$(Q) mv eagle.app.flash.bin $(FW_BASE)/eagle.flash.bin
$(Q) mv eagle.app.v6.irom0text.bin $(FW_BASE)/eagle.irom0text.bin
$(Q) rm eagle.app.v6.*
$(vecho) "No boot needed."
$(vecho) "Generate eagle.flash.bin and eagle.irom0text.bin successully in folder $(FW_BASE)"
$(vecho) "eagle.flash.bin-------->0x00000"
$(vecho) "eagle.irom0text.bin---->0x10000"
else
ifneq ($(boot), new)
$(Q) $(SDK_TOOLS)/gen_appbin.exe $@ 1 $(mode) $(freqdiv) $(size_map) $(app)
$(vecho) "Support boot_v1.1 and +"
else
$(Q) $(SDK_TOOLS)/gen_appbin.exe $@ 2 $(mode) $(freqdiv) $(size_map) $(app)
ifeq ($(size_map), 6)
$(vecho) "Support boot_v1.4 and +"
else
ifeq ($(size_map), 5)
$(vecho) "Support boot_v1.4 and +"
else
$(vecho) "Support boot_v1.2 and +"
endif
endif
endif
$(Q) mv eagle.app.flash.bin $(FW_BASE)/upgrade/$(BIN_NAME).bin
$(Q) rm eagle.app.v6.*
$(vecho) "Generate $(BIN_NAME).bin successully in folder $(FW_BASE)/upgrade"
$(vecho) "boot.bin------->0x00000"
$(vecho) "$(BIN_NAME).bin--->$(addr)"
endif
$(vecho) "Done"
$(APP_AR): libesphttpd $(OBJ)
$(vecho) "AR $@"
$(Q) $(AR) cru $@ $^
checkdirs: $(BUILD_DIR) $(FW_BASE)
$(BUILD_DIR):
$(Q) mkdir -p $@
$(FW_BASE):
$(Q) mkdir -p $@
$(Q) mkdir -p $@/upgrade
eraseflash:
$(ESPTOOL) -p $(ESPPORT) -b $(ESPBAUD) erase_flash
flashall: all
$(ESPTOOL) -p $(ESPPORT) -b $(ESPBAUD) write_flash $(flashimageoptions) \
0x00000 $(SDK_BASE)/bin/boot_v1.7.bin \
$(addr) $(FW_BASE)/upgrade/$(BIN_NAME).bin \
0x1fc000 $(SDK_BASE)/bin/esp_init_data_default.bin \
0x1fe000 $(SDK_BASE)/bin/blank.bin
flashboot:
ifeq ($(app), 0)
$(vecho) "No boot needed."
else
ifneq ($(boot), new)
$(vecho) "Flash boot_v1.1 and +"
$(ESPTOOL) -p $(ESPPORT) -b $(ESPBAUD) write_flash $(flashimageoptions) 0x00000 $(SDK_BASE)/bin/boot_v1.1.bin
else
ifeq ($(size_map), 6)
$(vecho) "Flash boot_v1.5 and +"
$(ESPTOOL) -p $(ESPPORT) -b $(ESPBAUD) write_flash $(flashimageoptions) 0x00000 $(SDK_BASE)/bin/boot_v1.6.bin
else
ifeq ($(size_map), 5)
$(vecho) "Flash boot_v1.5 and +"
$(ESPTOOL) -p $(ESPPORT) -b $(ESPBAUD) write_flash $(flashimageoptions) 0x00000 $(SDK_BASE)/bin/boot_v1.6.bin
else
$(vecho) "Flash boot_v1.2 and +"
$(ESPTOOL) -p $(ESPPORT) -b $(ESPBAUD) write_flash $(flashimageoptions) 0x00000 $(SDK_BASE)/bin/boot_v1.7.bin
endif
endif
endif
endif
flash: all
ifeq ($(app), 0)
$(ESPTOOL) -p $(ESPPORT) -b $(ESPBAUD) write_flash $(flashimageoptions) 0x00000 $(FW_BASE)/eagle.flash.bin 0x10000 $(FW_BASE)/eagle.irom0text.bin
else
ifeq ($(boot), none)
$(ESPTOOL) -p $(ESPPORT) -b $(ESPBAUD) write_flash $(flashimageoptions) 0x00000 $(FW_BASE)/eagle.flash.bin 0x10000 $(FW_BASE)/eagle.irom0text.bin
else
$(ESPTOOL) -p $(ESPPORT) -b $(ESPBAUD) write_flash $(flashimageoptions) $(addr) $(FW_BASE)/upgrade/$(BIN_NAME).bin
endif
endif
# ===============================================================
# From http://bbs.espressif.com/viewtopic.php?f=10&t=305
# master-device-key.bin is only need if using espressive services
# master_device_key.bin 0x3e000 is not used , write blank
# See 2A-ESP8266__IOT_SDK_User_Manual__EN_v1.1.0.pdf
# http://bbs.espressif.com/download/file.php?id=532
#
# System parameter area is the last 16KB of flash
# 512KB flash - system parameter area starts from 0x7C000
# download blank.bin to 0x7E000 as initialization.
# 1024KB flash - system parameter area starts from 0xFC000
# download blank.bin to 0xFE000 as initialization.
# 2048KB flash - system parameter area starts from 0x1FC000
# download blank.bin to 0x1FE000 as initialization.
# 4096KB flash - system parameter area starts from 0x3FC000
# download blank.bin to 0x3FE000 as initialization.
# ===============================================================
# FLASH SIZE
flashinit:
$(vecho) "Flash init data default and blank data."
$(ESPTOOL) -p $(ESPPORT) write_flash $(flashimageoptions) 0x1fc000 $(SDK_BASE)/bin/esp_init_data_default.bin 0x1fe000 $(SDK_BASE)/bin/blank.bin
rebuild: clean all
clean:
$(Q) rm -f $(APP_AR)
$(Q) rm -f $(TARGET_OUT)
$(Q) rm -rf $(BUILD_DIR)
$(Q) rm -rf $(BUILD_BASE)
$(Q) rm -rf $(FW_BASE)
$(Q) rm -f webpages.espfs libwebpages-espfs.a
htmlflash: libesphttpd/Makefile
$(Q) make -C libesphttpd USE_OPENSDK=$(USE_OPENSDK)
$(Q) if [ $$(stat -c '%s' libesphttpd/webpages.espfs) -gt $$(( $(ESPFS_SIZE) )) ]; then echo "webpages.espfs too big!"; false; fi
$(Q) $(ESPTOOL) $(ESPTOOL_OPTS) write_flash $(ESPTOOL_FLASHDEF) $(ESPFS_POS) libesphttpd/webpages.espfs
$(foreach bdir,$(BUILD_DIR),$(eval $(call compile-objects,$(bdir))))
#############################################################
# Recursion Magic - Don't touch this!!
#
# Each subtree potentially has an include directory
# corresponding to the common APIs applicable to modules
# rooted at that subtree. Accordingly, the INCLUDE PATH
# of a module can only contain the include directories up
# its parent path, and not its siblings
#
# Required for each makefile to inherit from the parent
#
INCLUDES := $(INCLUDES) -I $(PDIR)include -I $(PDIR)libesphttpd/include -I $(PDIR)libesphttpd/espfs
sinclude $(SDK_PATH)/Makefile