Fix int clear, actually call int init code

This commit is contained in:
Jeroen Domburg
2016-10-27 12:37:19 +08:00
parent d3d9a8bc28
commit c6477ff10d
3 changed files with 6 additions and 3 deletions

View File

@@ -41,6 +41,7 @@
#include "esp_event.h" #include "esp_event.h"
#include "esp_spi_flash.h" #include "esp_spi_flash.h"
#include "esp_ipc.h" #include "esp_ipc.h"
#include "esp_crosscore_int.h"
#include "esp_log.h" #include "esp_log.h"
#include "trax.h" #include "trax.h"
@@ -146,6 +147,7 @@ void start_cpu0_default(void)
uart_div_modify(0, (APB_CLK_FREQ << 4) / 115200); uart_div_modify(0, (APB_CLK_FREQ << 4) / 115200);
ets_setup_syscalls(); ets_setup_syscalls();
do_global_ctors(); do_global_ctors();
esp_crosscore_int_init();
esp_ipc_init(); esp_ipc_init();
spi_flash_init(); spi_flash_init();
xTaskCreatePinnedToCore(&main_task, "main", xTaskCreatePinnedToCore(&main_task, "main",
@@ -165,6 +167,7 @@ void start_cpu1_default(void)
while (port_xSchedulerRunning[0] == 0) { while (port_xSchedulerRunning[0] == 0) {
; ;
} }
esp_crosscore_int_init();
ESP_LOGI(TAG, "Starting scheduler on APP CPU."); ESP_LOGI(TAG, "Starting scheduler on APP CPU.");
xPortStartScheduler(); xPortStartScheduler();
} }

View File

@@ -57,7 +57,7 @@ static void esp_crosscore_isr(void *arg) {
if (xPortGetCoreID()==0) { if (xPortGetCoreID()==0) {
WRITE_PERI_REG(DPORT_CPU_INTR_FROM_CPU_0_REG, 0); WRITE_PERI_REG(DPORT_CPU_INTR_FROM_CPU_0_REG, 0);
} else { } else {
WRITE_PERI_REG(DPORT_CPU_INTR_FROM_CPU_0_REG, 1); WRITE_PERI_REG(DPORT_CPU_INTR_FROM_CPU_1_REG, 0);
} }
//Grab the reason and clear it. //Grab the reason and clear it.
portENTER_CRITICAL(&reasonSpinlock); portENTER_CRITICAL(&reasonSpinlock);
@@ -77,6 +77,7 @@ static void esp_crosscore_isr(void *arg) {
//on each active core. //on each active core.
void esp_crosscore_int_init() { void esp_crosscore_int_init() {
portENTER_CRITICAL(&reasonSpinlock); portENTER_CRITICAL(&reasonSpinlock);
ets_printf("init cpu %d\n", xPortGetCoreID());
reason[xPortGetCoreID()]=0; reason[xPortGetCoreID()]=0;
portEXIT_CRITICAL(&reasonSpinlock); portEXIT_CRITICAL(&reasonSpinlock);
ESP_INTR_DISABLE(ETS_FROM_CPU_INUM); ESP_INTR_DISABLE(ETS_FROM_CPU_INUM);
@@ -87,7 +88,6 @@ void esp_crosscore_int_init() {
} }
xt_set_interrupt_handler(ETS_FROM_CPU_INUM, esp_crosscore_isr, (void*)&reason[xPortGetCoreID()]); xt_set_interrupt_handler(ETS_FROM_CPU_INUM, esp_crosscore_isr, (void*)&reason[xPortGetCoreID()]);
ESP_INTR_ENABLE(ETS_FROM_CPU_INUM); ESP_INTR_ENABLE(ETS_FROM_CPU_INUM);
} }
void esp_crosscore_int_send_yield(int coreId) { void esp_crosscore_int_send_yield(int coreId) {