forked from espressif/esp-idf
Fix int clear, actually call int init code
This commit is contained in:
@@ -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();
|
||||||
}
|
}
|
||||||
|
@@ -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) {
|
||||||
|
Submodule components/esp32/lib updated: a1e5f8b953...b9561aa5db
Reference in New Issue
Block a user