SimonLiu的ESP8266与AliOS Things 学习教程系列之十六:AliOS Things之ESP8266编译和烧写选项

欢迎加入交流群:ESP8266 AliOS Things 群 号: 107723112
所有教程请看 AliOS Things 入门教程系列
此教程在SimonLiu的CSDN博客同步更新。

1. 编译选项

在ESP8266的non_os SDK中,编译选项在项目根目录的Makefile中:

BOOT?=new
APP?=1
SPI_SPEED?=40
SPI_MODE?=QIO
SPI_SIZE_MAP?=6

但是在AliOS中,这些选项隐藏得很深,它们并不在mk文件中,而是在
platform/mcu/esp8266/gen_crc_bin.mk文件中,里面有一行:
python ../../../platform/mcu/esp8266/tools/gen_appbin.py $(CLEANED_BUILD_STRING)$(RADIXPOINT)$(BINSTYPE_LOWER)$(LINK_OUTPUT_SUFFIX) 2 1 15 5
其中5就是flash map选项,选项在 platform/mcu/esp8266/tools/gen_appbin.py中有说明:

#-------------------
#flash_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)
#-------------------

2. 烧写选项

烧写选项在build/site_scons/upload/esp8266.json中设定,默认是:

{
    "cmd": [
        {
            "Linux32": "esptool.py",
            "Linux64": "esptool.py",
            "OSX": "esptool.py",
            "Win32": "esptool.exe"
        },
        "--chip",
        "esp8266",
        "--port",
        "/dev/cu.wchusbserial1410",
        "--baud",
        "921600",
        "write_flash",
        "--flash_size",
        "detect",
        "0x0",
        "@AOSROOT@/platform/mcu/esp8266/bsp/boot_v1.7_921600.bin",
        "0x3fc000",
        "@AOSROOT@/platform/mcu/esp8266/bsp/esp_init_data_default.bin",
        "0x3fe000",
        "@AOSROOT@/platform/mcu/esp8266/bsp/blank.bin",
        "0x1000",
        "@AOSROOT@/out/@TARGET@/binary/@[email protected]"
    ]
}

请注意"--flash_size","detect",是对烧写的flash map进行自动检测,但是这种自动检测不一定是正确的。我的ESP-12F在使用默认的编译选项flash map = 5的时候,自动检测使用了flash map = 4来烧写。后来手动把detect改为4MB-c1才能使用flash map = 6的方式来进行烧写。

所以改完如下:

{
    "cmd": [
        {
            "Linux32": "esptool.py",
            "Linux64": "esptool.py",
            "OSX": "esptool.py",
            "Win32": "esptool.exe"
        },
        "--chip",
        "esp8266",
        "--port",
        "/dev/cu.wchusbserial1410",
        "--baud",
        "921600",
        "write_flash",
        "--flash_size",
        "4MB-c1",
        "0x0",
        "@AOSROOT@/platform/mcu/esp8266/bsp/boot_v1.7_921600.bin",
        "0x3fc000",
        "@AOSROOT@/platform/mcu/esp8266/bsp/esp_init_data_default.bin",
        "0x3fe000",
        "@AOSROOT@/platform/mcu/esp8266/bsp/blank.bin",
        "0x1000",
        "@AOSROOT@/out/@TARGET@/binary/@[email protected]"
    ]
}

如果要指定flash modedout,可以在"write_flash",一行下面添加类似如下的选项:

"--flash_mode",
"dout",

3. 获取当前flash map

使用system_get_flash_size_map()即可。

4. flash map的各种选项

关于flash map,在文档2a-esp8266-sdk_getting_started_guide_cn.pdf中有说明:

SimonLiu的ESP8266与AliOS Things 学习教程系列之十六:AliOS Things之ESP8266编译和烧写选项_第1张图片
Non-FOTA Flash 布局

SimonLiu的ESP8266与AliOS Things 学习教程系列之十六:AliOS Things之ESP8266编译和烧写选项_第2张图片
Non-FOTA 的下载地址

SimonLiu的ESP8266与AliOS Things 学习教程系列之十六:AliOS Things之ESP8266编译和烧写选项_第3张图片
FOTA Flash 布局-1

FOTA Flash 布局-2
SimonLiu的ESP8266与AliOS Things 学习教程系列之十六:AliOS Things之ESP8266编译和烧写选项_第4张图片
FOTA 的下载地址

你可能感兴趣的:(SimonLiu的ESP8266与AliOS Things 学习教程系列之十六:AliOS Things之ESP8266编译和烧写选项)