esp8266 一直闪蓝灯 一直重启

    技术2022-07-12  74

    串口打印如下信息

    ets Jan 8 2013,rst cause:2, boot mode:(3,7)

    load 0x40100000, len 25960, room 16 tail 8 chksum 0xf4 load 0x3ffe8000, len 1272, room 0 tail 8 chksum 0xdd load 0x3ffe8500, len 2640, room 0 tail 0 chksum 0x47 csum 0x47 rf_cal[0] !=0x05,is 0xE9

    原因:未进行分区注册

    在user_main.c中加入如下宏定义和函数即可

    #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 #define SYSTEM_PARTITION_CUSTOMER_PRIV_PARAM_ADDR 0x7c000 #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 #define SYSTEM_PARTITION_CUSTOMER_PRIV_PARAM_ADDR 0x7c000 #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 #define SYSTEM_PARTITION_CUSTOMER_PRIV_PARAM_ADDR 0x7c000 #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 #define SYSTEM_PARTITION_CUSTOMER_PRIV_PARAM_ADDR 0xfc000 #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 #define SYSTEM_PARTITION_CUSTOMER_PRIV_PARAM_ADDR 0xfc000 #else #error "The flash map is not supported" #endif #define SYSTEM_PARTITION_CUSTOMER_PRIV_PARAM SYSTEM_PARTITION_CUSTOMER_BEGIN 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"); os_printf("SPI_FLASH_SIZE_MAP : %d \r\n",SPI_FLASH_SIZE_MAP); while(1); } }

    具体可以参考IOTDemo的写法

    Processed: 0.017, SQL: 9