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");
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM