@@ -1602,7 +1602,7 @@ static int xtensa_poll(struct target *target)
1602
1602
LOG_INFO ("%s: Target offline" , __func__ );
1603
1603
target -> state = TARGET_UNKNOWN ;
1604
1604
}
1605
- esp32 -> prevpwrstat = 0 ;
1605
+ memset ( esp32 -> prevpwrstat , 0 , sizeof ( esp32 -> prevpwrstat )) ;
1606
1606
esp32 -> core_poweron_mask = 0 ;
1607
1607
return ERROR_TARGET_FAILURE ;
1608
1608
}
@@ -1611,16 +1611,23 @@ static int xtensa_poll(struct target *target)
1611
1611
if (cores_came_online != 0 ) {
1612
1612
LOG_DEBUG ("%s: core_poweron_mask=%x" , __func__ , core_poweron_mask );
1613
1613
}
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 ];
1622
1630
}
1623
- esp32 -> prevpwrstat = pwrstath [ESP32_PRO_CPU_ID ];
1624
1631
1625
1632
//Enable JTAG, set reset if needed
1626
1633
cmd = PWRCTL_DEBUGWAKEUP |PWRCTL_MEMWAKEUP |PWRCTL_COREWAKEUP ;
0 commit comments