Merge branch 'bugfix/app_cpu_reset' into 'master'

esp32: don’t reset APP CPU if it was already reset by OpenOCD

See merge request !848
This commit is contained in:
Ivan Grokhotkov 2017-06-13 18:15:47 +08:00
commit cd89a653e4

View File

@ -142,11 +142,16 @@ void IRAM_ATTR call_start_cpu0()
Cache_Flush(1); Cache_Flush(1);
Cache_Read_Enable(1); Cache_Read_Enable(1);
esp_cpu_unstall(1); esp_cpu_unstall(1);
//Enable clock gating and reset the app cpu. // Enable clock and reset APP CPU. Note that OpenOCD may have already
DPORT_SET_PERI_REG_MASK(DPORT_APPCPU_CTRL_B_REG, DPORT_APPCPU_CLKGATE_EN); // enabled clock and taken APP CPU out of reset. In this case don't reset
DPORT_CLEAR_PERI_REG_MASK(DPORT_APPCPU_CTRL_C_REG, DPORT_APPCPU_RUNSTALL); // APP CPU again, as that will clear the breakpoints which may have already
DPORT_SET_PERI_REG_MASK(DPORT_APPCPU_CTRL_A_REG, DPORT_APPCPU_RESETTING); // been set.
DPORT_CLEAR_PERI_REG_MASK(DPORT_APPCPU_CTRL_A_REG, DPORT_APPCPU_RESETTING); if (!DPORT_GET_PERI_REG_MASK(DPORT_APPCPU_CTRL_B_REG, DPORT_APPCPU_CLKGATE_EN)) {
DPORT_SET_PERI_REG_MASK(DPORT_APPCPU_CTRL_B_REG, DPORT_APPCPU_CLKGATE_EN);
DPORT_CLEAR_PERI_REG_MASK(DPORT_APPCPU_CTRL_C_REG, DPORT_APPCPU_RUNSTALL);
DPORT_SET_PERI_REG_MASK(DPORT_APPCPU_CTRL_A_REG, DPORT_APPCPU_RESETTING);
DPORT_CLEAR_PERI_REG_MASK(DPORT_APPCPU_CTRL_A_REG, DPORT_APPCPU_RESETTING);
}
ets_set_appcpu_boot_addr((uint32_t)call_start_cpu1); ets_set_appcpu_boot_addr((uint32_t)call_start_cpu1);
while (!app_cpu_started) { while (!app_cpu_started) {