Code: Select all
cd /opt/esp8266 &&
wget --no-check-certificate -O esp8266_nonos_sdk_v3.0.zip https://github.com/espressif/ESP8266_NONOS_SDK/archive/v3.0.zip &&
unzip esp8266_nonos_sdk_v3.0.zip 'ESP8266_NONOS_SDK-3.0/*' &&
mv ESP8266_NONOS_SDK-3.0 sdk &&
rm esp8266*
I am using this Makefile: https://github.com/esp8266/source-code- ... y/Makefile
I am a little confused by the fact that the compiler produces a 0x00000.bin and 0x10000.bin. I had to adjust FW_FILE_2_ADDR from 0x40000 to 0x10000 to make this work. I just recently found out that there are partitions since SDK v3.0.
I adpoted some of the partition-table code from this example: https://github.com/espressif/ESP8266_NO ... imple_pair
So basically my code looks like this now:
Code: Select all
#include "osapi.h"
#include "user_interface.h"
#define EAGLE_FLASH_BIN_ADDR (SYSTEM_PARTITION_CUSTOMER_BEGIN + 1)
#define EAGLE_IROM0TEXT_BIN_ADDR (SYSTEM_PARTITION_CUSTOMER_BEGIN + 2)
#define SPI_FLASH_SIZE_MAP 4
#if ((SPI_FLASH_SIZE_MAP == 0) || (SPI_FLASH_SIZE_MAP == 1))
#error "The flash map is not supported"
#elif (SPI_FLASH_SIZE_MAP == 2)
#define SYSTEM_PARTITION_OTA_SIZE 0x6A000
#define SYSTEM_PARTITION_OTA_2_ADDR 0x81000
#define SYSTEM_PARTITION_RF_CAL_ADDR 0xfb000
#define SYSTEM_PARTITION_PHY_DATA_ADDR 0xfc000
#define SYSTEM_PARTITION_SYSTEM_PARAMETER_ADDR 0xfd000
#elif (SPI_FLASH_SIZE_MAP == 3)
#define SYSTEM_PARTITION_OTA_SIZE 0x6A000
#define SYSTEM_PARTITION_OTA_2_ADDR 0x81000
#define SYSTEM_PARTITION_RF_CAL_ADDR 0x1fb000
#define SYSTEM_PARTITION_PHY_DATA_ADDR 0x1fc000
#define SYSTEM_PARTITION_SYSTEM_PARAMETER_ADDR 0x1fd000
#elif (SPI_FLASH_SIZE_MAP == 4)
#define SYSTEM_PARTITION_OTA_SIZE 0x6A000
#define SYSTEM_PARTITION_OTA_2_ADDR 0x81000
#define SYSTEM_PARTITION_RF_CAL_ADDR 0x3fb000
#define SYSTEM_PARTITION_PHY_DATA_ADDR 0x3fc000
#define SYSTEM_PARTITION_SYSTEM_PARAMETER_ADDR 0x3fd000
#elif (SPI_FLASH_SIZE_MAP == 5)
#define SYSTEM_PARTITION_OTA_SIZE 0x6A000
#define SYSTEM_PARTITION_OTA_2_ADDR 0x101000
#define SYSTEM_PARTITION_RF_CAL_ADDR 0x1fb000
#define SYSTEM_PARTITION_PHY_DATA_ADDR 0x1fc000
#define SYSTEM_PARTITION_SYSTEM_PARAMETER_ADDR 0x1fd000
#elif (SPI_FLASH_SIZE_MAP == 6)
#define SYSTEM_PARTITION_OTA_SIZE 0x6A000
#define SYSTEM_PARTITION_OTA_2_ADDR 0x101000
#define SYSTEM_PARTITION_RF_CAL_ADDR 0x3fb000
#define SYSTEM_PARTITION_PHY_DATA_ADDR 0x3fc000
#define SYSTEM_PARTITION_SYSTEM_PARAMETER_ADDR 0x3fd000
#else
#error "The flash map is not supported"
#endif
static const partition_item_t at_partition_table[] = {
{ SYSTEM_PARTITION_BOOTLOADER, 0x0, 0x1000 },
{ SYSTEM_PARTITION_OTA_1, 0x1000, SYSTEM_PARTITION_OTA_SIZE },
{ SYSTEM_PARTITION_OTA_2, SYSTEM_PARTITION_OTA_2, SYSTEM_PARTITION_OTA_SIZE },
{ SYSTEM_PARTITION_RF_CAL, SYSTEM_PARTITION_RF_CAL_ADDR, 0x1000 },
{ SYSTEM_PARTITION_PHY_DATA, SYSTEM_PARTITION_PHY_DATA_ADDR, 0x1000 },
{ SYSTEM_PARTITION_SYSTEM_PARAMETER, SYSTEM_PARTITION_SYSTEM_PARAMETER_ADDR, 0x3000 }
};
void ICACHE_FLASH_ATTR user_pre_init(void) {
if(!system_partition_table_regist(at_partition_table, sizeof(at_partition_table) / sizeof(at_partition_table[0]), SPI_FLASH_SIZE_MAP)){
os_printf("system_partition_table_regist fail\r\n");
while(1);
}
}
void ICACHE_FLASH_ATTR user_init(void) {
}
This is the console output:
Code: Select all
test@Device:/mnt/c/Users/Standardbenutzer/Documents/ESP8266/test2$ make
CC user/user_main.c
AR build/app_app.a
LD build/app.out
FW firmware/
esptool.py v2.6
Creating image for ESP8266...
After that I flashed 0x00000.bin to 0x0 and 0x10000.bin to 0x10000 (with NodeMCU Flash Tool).
Unfortunately my ESP8266 keeps crashing and restarting itself with this message (always the same):
ets Jan 8 2013,rst cause:2, boot mode:(3,6)
load 0x3ffe8000, len 1288, room 16
tail 8
chksum 0x4a
load 0x3ffe8510, len 880, room 0
tail 0
chksum 0xb7
load 0x40100000, len 26184, room 8
tail 0
chksum 0xb3
csum 0xb3
>> 0x0,0x0rf_cal[0] !=0x05,is 0xE9
Does anyone know what I am doing wrong?