Esp8266开发日记-3.RTOS-SDK模板工程
一、从ESP官网下载RTOS-SDK源码
二、为了使RTOS-SDK代码组织形式和NONOS-SDK一样,修改makefile
ESP官方为了使RTOS-SDK的SDK和USER CODE分离,使用了SDK_PATH和BIN_PATH变量,下面是makefile修改步骤
1.建立app文件夹,拷贝examples中project_template下所有文件到app中
*.只需修改app文件夹和sdk文件夹下的makefile代码
*修改规则:(可参照NONOS-SDK的makefile)
app下的makefile:
LDDIR = $(SDK_PATH)/ld LDDIR = ../ld
当前目录是app,../表示回到sdk目录下,LDDIR指示ld目录下
LINKFLAGS_eagle.app.v6 = \ -L$(SDK_PATH)/lib \ LINKFLAGS_eagle.app.v6 = \ -L../lib \
与上同
INCLUDES := $(INCLUDES) -I $(PDIR)include sinclude $(SDK_PATH)/Makefile INCLUDES := $(INCLUDES) -I $(PDIR)include PDIR := ../$(PDIR) sinclude $(PDIR)Makefile
该处参照NONOS-SDK即可
sdk下的makefile:
ifeq ($(APP), 0) @$(RM) -r $(BIN_PATH)/eagle.S $(BIN_PATH)/eagle.dump @$(OBJDUMP) -x -s $< > $(BIN_PATH)/eagle.dump @$(OBJDUMP) -S $< > $(BIN_PATH)/eagle.S else @mkdir -p $(BIN_PATH)/upgrade @$(RM) -r $(BIN_PATH)/upgrade/$(BIN_NAME).S $(BIN_PATH)/upgrade/$(BIN_NAME).dump @$(OBJDUMP) -x -s $< > $(BIN_PATH)/upgrade/$(BIN_NAME).dump @$(OBJDUMP) -S $< > $(BIN_PATH)/upgrade/$(BIN_NAME).S endif ifeq ($(APP), 0) @$(RM) -r ../bin/eagle.S ../bin/eagle.dump @$(OBJDUMP) -x -s $< > ../bin/eagle.dump @$(OBJDUMP) -S $< > ../bin/eagle.S else @$(RM) -r ../bin/upgrade/$(BIN_NAME).S ../bin/upgrade/$(BIN_NAME).dump @$(OBJDUMP) -x -s $< > ../bin/upgrade/$(BIN_NAME).dump @$(OBJDUMP) -S $< > ../bin/upgrade/$(BIN_NAME).S endif
当前目录仍为app下, 即$(BIN_PATH)即等于../bin
ifeq ($(app), 0) @python $(SDK_PATH)/tools/gen_appbin.py $< 0 $(mode) $(freqdiv) $(size_map) @mv eagle.app.flash.bin $(BIN_PATH)/eagle.flash.bin @mv eagle.app.v6.irom0text.bin $(BIN_PATH)/eagle.irom0text.bin @rm eagle.app.v6.* @echo "BIN_PATH: $(BIN_PATH)" @echo "" @echo "No boot needed." @echo "Generate eagle.flash.bin and eagle.irom0text.bin successully in BIN_PATH" @echo "eagle.flash.bin-------->0x00000" @echo "eagle.irom0text.bin---->0x40000" ifeq ($(app), 0) @python ../tools/gen_appbin.py $< 0 $(mode) $(freqdiv) $(size_map) @mv eagle.app.flash.bin ../bin/eagle.flash.bin @mv eagle.app.v6.irom0text.bin ../bin/eagle.irom0text.bin @rm eagle.app.v6.* @echo "" @echo "No boot needed." @echo "Generate eagle.flash.bin and eagle.irom0text.bin successully in bin file" @echo "eagle.flash.bin-------->0x00000" @echo "eagle.irom0text.bin---->0x40000" @echo ""
与上同
ifneq ($(boot), new) @python $(SDK_PATH)/tools/gen_appbin.py $< 1 $(mode) $(freqdiv) $(size_map) @echo "Support boot_v1.1 and +" else @python $(SDK_PATH)/tools/gen_appbin.py $< 2 $(mode) $(freqdiv) $(size_map) ifeq ($(size_map), 6) @echo "Support boot_v1.4 and +" else ifeq ($(size_map), 5) @echo "Support boot_v1.4 and +" else @echo "Support boot_v1.2 and +" endif endif endif .... else ifneq ($(boot), new) @python ../tools/gen_appbin.py $< 1 $(mode) $(freqdiv) $(size_map) @echo "Support boot_v1.1 and +" else @python ../tools/gen_appbin.py $< 2 $(mode) $(freqdiv) $(size_map) ifeq ($(size_map), 6) @echo "Support boot_v1.4 and +" else ifeq ($(size_map), 5) @echo "Support boot_v1.4 and +" else @echo "Support boot_v1.2 and +" endif endif endif @mv eagle.app.flash.bin ../bin/upgrade/$(BIN_NAME).bin @rm eagle.app.v6.* @echo "Generate $(BIN_NAME).bin successully in bin file" @echo "boot.bin------------>0x00000" @echo "$(BIN_NAME).bin--->$(addr)" endif
与上同
INCLUDES := $(INCLUDES) -I $(SDK_PATH)/include -I $(SDK_PATH)/extra_include INCLUDES += -I $(SDK_PATH)/include/espressif INCLUDES += -I $(SDK_PATH)/include/lwip INCLUDES += -I $(SDK_PATH)/include/lwip/ipv4 INCLUDES += -I $(SDK_PATH)/include/lwip/ipv6 INCLUDES += -I $(SDK_PATH)/include/nopoll INCLUDES += -I $(SDK_PATH)/include/spiffs INCLUDES += -I $(SDK_PATH)/include/ssl //参照NONOS-SDK: INCLUDES := $(INCLUDES) -I $(PDIR)include -I $(PDIR)include/$(TARGET) PDIR := ../$(PDIR) sinclude $(PDIR)Makefile //修改为: INCLUDES := $(INCLUDES) -I $(PDIR)include -I $(PDIR)extra_include INCLUDES += -I $(PDIR)include/espressif INCLUDES += -I $(PDIR)include/lwip INCLUDES += -I $(PDIR)include/lwip/ipv4 INCLUDES += -I $(PDIR)include/lwip/ipv6 INCLUDES += -I $(PDIR)include/nopoll INCLUDES += -I $(PDIR)include/spiffs INCLUDES += -I $(PDIR)include/ssl
上述可编译通过但使用下面的也行:
INCLUDES := $(INCLUDES) -I $(PDIR)include -I $(PDIR)include/$(TARGET) PDIR := ../$(PDIR) sinclude $(PDIR)Makefil
这两种方法不知对错,暂时保留!
三、修改user_init()函数:
#include "esp_common.h" void user_init(void) { printf("********\n"); printf("SDK version:%s\n", system_get_sdk_version()); printf("********\n"); }