/****************************************************************************** * FunctionName : espconn_init * Description : used to init the function that should be used when * Parameters : none * Returns : none *******************************************************************************/ void ICACHE_FLASH_ATTR espconn_init(void) { ets_task(espconn_Task, espconn_TaskPrio, espconn_TaskQueue, espconn_TaskQueueLen); ets_run(); // espcon_event_t even; // xTaskCreatePinnedToCore(&espconn_Task, "espconn_Task", 4096, &even, 5, NULL, 0); }
void __attribute__((section(".entry.text"))) call_user_start1(void) { SPI0_USER |= SPI_CS_SETUP; // +1 такт перед CS = 0x80000064 // SPI на 80 MHz #if USE_FIX_QSPI_FLASH == 80 GPIO_MUX_CFG |= BIT(MUX_SPI0_CLK_BIT); // QSPI = 80 MHz SPI0_CTRL = (SPI0_CTRL & SPI_CTRL_F_MASK) | SPI_CTRL_F80MHZ; #else // SPI на 40 MHz GPIO_MUX_CFG &= ~(1<< MUX_SPI0_CLK_BIT); SPI0_CTRL = (SPI0_CTRL & SPI_CTRL_F_MASK) | SPI_CTRL_F40MHZ; #endif flashchip->chip_size = 512*1024; // песочница для SDK в 512 килобайт flash // Всё - включаем кеширование, далее можно вызывать процедуры из flash Cache_Read_Enable_def(); // Инициализация startup(); // Очистка стека и передача управления в ROM-BIOS asm volatile ( "movi a2, 1;" "slli a1, a2, 30;" ); ets_run(); }
void __attribute__((section(".entry.text"))) call_user_start1(void) { // коррекция QSPI на 80 MHz SPI0_USER |= SPI_CS_SETUP; // +1 такт перед CS = 0x80000064 #if USE_FIX_QSPI_FLASH == 80 GPIO_MUX_CFG |= (1<< MUX_SPI0_CLK_BIT); // QSPI = 80 MHz SPI0_CTRL = 0x016ab000; // ((SPI0_CTRL >> 12) << 12) | BIT(12); #else GPIO_MUX_CFG &= 0xfffffeff; SPI0_CTRL = 0x016aa101; #endif flashchip->chip_size = 512*1024; // песочница для SDK в 512 килобайт flash // Всё - включаем кеширование, далее можно вызывать процедуры из flash Cache_Read_Enable_def(); // Инициализация startup(); // Очистка стека и передача управления в ROM-BIOS asm volatile ( "movi a2, 1;" "slli a1, a2, 30;" ); ets_run(); }
void call_user_start_local(void) { startup(); ets_run(); }