@@ -1602,7 +1602,7 @@ static int xtensa_poll(struct target *target)
16021602 LOG_INFO ("%s: Target offline" , __func__ );
16031603 target -> state = TARGET_UNKNOWN ;
16041604 }
1605- esp32 -> prevpwrstat = 0 ;
1605+ memset ( esp32 -> prevpwrstat , 0 , sizeof ( esp32 -> prevpwrstat )) ;
16061606 esp32 -> core_poweron_mask = 0 ;
16071607 return ERROR_TARGET_FAILURE ;
16081608 }
@@ -1611,16 +1611,23 @@ static int xtensa_poll(struct target *target)
16111611 if (cores_came_online != 0 ) {
16121612 LOG_DEBUG ("%s: core_poweron_mask=%x" , __func__ , core_poweron_mask );
16131613 }
1614-
1615- if (!(esp32 -> prevpwrstat & PWRSTAT_DEBUGWASRESET ) && pwrstat [ESP32_PRO_CPU_ID ] & PWRSTAT_DEBUGWASRESET ) {
1616- LOG_INFO ("%s: Debug controller was reset (pwrstat=0x%02X, after clear 0x%02X)." , target -> cmd_name , pwrstat [ESP32_PRO_CPU_ID ], pwrstath [ESP32_PRO_CPU_ID ]);
1617- }
1618- if (!(esp32 -> prevpwrstat & PWRSTAT_COREWASRESET ) && pwrstat [ESP32_PRO_CPU_ID ] & PWRSTAT_COREWASRESET ) {
1619- LOG_INFO ("%s: Core was reset (pwrstat=0x%02X, after clear 0x%02X)." , target -> cmd_name , pwrstat [ESP32_PRO_CPU_ID ], pwrstath [ESP32_PRO_CPU_ID ]);
1620- esp32 -> cores_num = 0 ; // unknown
1621- memset (& esp32 -> dbg_stubs , 0 , sizeof (struct esp32_dbg_stubs ));
1614+
1615+ for (size_t i = 0 ; i < ESP32_CPU_COUNT ; i ++ )
1616+ {
1617+ if (!(esp32 -> prevpwrstat [i ]& PWRSTAT_DEBUGWASRESET ) && pwrstat [i ] & PWRSTAT_DEBUGWASRESET ) {
1618+ LOG_INFO ("%s: Debug controller %d was reset (pwrstat=0x%02X, after clear 0x%02X)." , target -> cmd_name , (int )i , pwrstat [i ], pwrstath [i ]);
1619+ esp32 -> core_poweron_mask &= ~(1 << i );
1620+ //esp32->core_poweron_mask = 0;
1621+ }
1622+ if (!(esp32 -> prevpwrstat [i ]& PWRSTAT_COREWASRESET ) && pwrstat [i ] & PWRSTAT_COREWASRESET ) {
1623+ LOG_INFO ("%s: Core %d was reset (pwrstat=0x%02X, after clear 0x%02X)." , target -> cmd_name , (int )i , pwrstat [i ], pwrstath [i ]);
1624+ if (esp32 -> cores_num > 0 ) {
1625+ esp32 -> cores_num = 0 ; // unknown
1626+ memset (& esp32 -> dbg_stubs , 0 , sizeof (struct esp32_dbg_stubs ));
1627+ }
1628+ }
1629+ esp32 -> prevpwrstat [i ] = pwrstath [i ];
16221630 }
1623- esp32 -> prevpwrstat = pwrstath [ESP32_PRO_CPU_ID ];
16241631
16251632 //Enable JTAG, set reset if needed
16261633 cmd = PWRCTL_DEBUGWAKEUP |PWRCTL_MEMWAKEUP |PWRCTL_COREWAKEUP ;
0 commit comments