ESP8266 通用系类
安信可科技: http://wiki.ai-thinker.com/esp8266
Jack’s LAB: http://wiki.jackslab.org/ESP8266
乐鑫论坛: http://bbs.espressif.com/index.php
ESP8266 Lua系列
NodeMCU: https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_cn
泰晓科技: http://tinylab.org/nodemcu-kickstart/
NodeMcu Docs: [http://nodemcu.readthedocs.io/en/dev/] 6
ESP8266 常见问题
上电输出以下信息
ets Jan 8 2013,rst cause:1, boot mode:(3,6)
In the bootup message ‘boot mode:(x,y)’ three low bits of x are {MTDO, GPIO0, GPIO2}.
The Espressif code can boot in different modes, selected on power-up based on GPIO pin levels. (MTDO is equivalent to GPIO15).
MTDO | GPIO0 | GPIO2 | Mode | Description |
---|---|---|---|---|
L | L | H | UART | Download code from UART |
L | H | H | Flash | Boot from SPI Flash |
H | x | x | SDIO | Boot from SD-card |
ESP8266 datasheet
https://www.espressif.com/sites/default/files/documentation/0a-esp8266ex_datasheet_cn.pdf
02D datasheet
02D 引脚图
ESP8266 IDF-SDK 文档
https://docs.espressif.com/projects/esp8266-rtos-sdk/en/latest/api-reference/index.html
ESP8266 低功耗文档说明
https://www.espressif.com/sites/default/files/documentation/9b-esp8266-low_power_solutions_cn.pdf
用脚本命令生成合成固件
if [ $GAT_FLASH_SIZE == 08Mbit ];then
echo "08Mbit"
BS_SIZE=1k
SPI_FLASH_SIZE=2
BOOT_ADDR_OFFSET=0k
PART_ADDR_OFFSET=12k
APP_ADDR_OFFSET=20k
OTADATA_ADDR_OFFSET=1000k
cp sdkconfig_08Mbit sdkconfig
elif [ $GAT_FLASH_SIZE == 16Mbit ];then
echo "16Mbit"
BS_SIZE=2k
SPI_FLASH_SIZE=5
BOOT_ADDR_OFFSET=0k
PART_ADDR_OFFSET=32k
OTADATA_ADDR_OFFSET=40k
APP_ADDR_OFFSET=64k
cp sdkconfig_16Mbit sdkconfig
elif [ $GAT_FLASH_SIZE == 32Mbit ];then
BS_SIZE=4k
SPI_FLASH_SIZE=6
BOOT_ADDR_OFFSET=0k
PART_ADDR_OFFSET=32k
OTADATA_ADDR_OFFSET=2100k
APP_ADDR_OFFSET=40k
cp sdkconfig_32Mbit sdkconfig
echo "32Mbit"
else
echo "GAT_FLASH_SIZE must be one of [08Mbit|16Mbit|32Mbit]"
exit
fi
FLASH_MAX_ADDR=1024
TARGET_DIR=build
BOOT_BIN=bootloader/bootloader.bin
OTA_DATA_BIN=ota_data_initial.bin
PART_BIN=Partition_${GAT_FLASH_SIZE}.bin
COMBINE_BIN=${TARGET_NAME}_combine.bin
# spi mode(0=QIO, 1=QOUT, 2=DIO, 3=DOUT)
SPI_MODE=3
dd if=/dev/zero bs=$BS_SIZE count=${FLASH_MAX_ADDR} | sed 's/\x00/\xff/g' > ${TARGET_DIR}/${COMBINE_BIN}
dd if=${TARGET_DIR}/${BOOT_BIN} ibs=$(wc -c < ${TARGET_DIR}/${BOOT_BIN}) count=1 of=${TARGET_DIR}/${COMBINE_BIN} seek=$BOOT_ADDR_OFFSET obs=1 conv=notrunc
dd if=${TARGET_DIR}/${PART_BIN} ibs=$(wc -c < ${TARGET_DIR}/${PART_BIN}) count=1 of=${TARGET_DIR}/${COMBINE_BIN} seek=$PART_ADDR_OFFSET obs=1 conv=notrunc
dd if=${TARGET_DIR}/${OTA_DATA_BIN} ibs=$(wc -c < ${TARGET_DIR}/${OTA_DATA_BIN}) count=1 of=${TARGET_DIR}/${COMBINE_BIN} seek=$OTADATA_ADDR_OFFSET obs=1 conv=notrunc
dd if=${TARGET_DIR}/${TARGET_NAME}.bin ibs=$(wc -c < ${TARGET_DIR}/${TARGET_NAME}.bin) count=1 of=${TARGET_DIR}/${COMBINE_BIN} seek=$APP_ADDR_OFFSET obs=1 conv=notrunc
echo 0${SPI_MODE} | xxd -r -ps | dd of=${TARGET_DIR}/${COMBINE_BIN} seek=2 bs=1 count=1 conv=notrunc
echo ${SPI_FLASH_SIZE}0 | xxd -r -ps | dd of=${TARGET_DIR}/${COMBINE_BIN} seek=3 bs=1 count=1 conv=notrunc
其他有用命令
- 生成汇编文件,用于定位问题
xtensa-lx106-elf-objdump -S build/${TARGET_NAME}.elf > build/${TARGET_NAME}.S