You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by xi...@apache.org on 2021/12/02 17:22:01 UTC
[incubator-nuttx] 02/02: esp32_cpustart.c: Improve comments around the usage of the inter-cpu startup handshake.
This is an automated email from the ASF dual-hosted git repository.
xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git
commit 50d217a9e86c85f68621a0af470dedb62472e49d
Author: Abdelatif Guettouche <ab...@espressif.com>
AuthorDate: Thu Dec 2 16:34:56 2021 +0100
esp32_cpustart.c: Improve comments around the usage of the inter-cpu
startup handshake.
Signed-off-by: Abdelatif Guettouche <ab...@espressif.com>
---
arch/xtensa/src/esp32/esp32_cpustart.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/arch/xtensa/src/esp32/esp32_cpustart.c b/arch/xtensa/src/esp32/esp32_cpustart.c
index 2ef5358..15afe48 100644
--- a/arch/xtensa/src/esp32/esp32_cpustart.c
+++ b/arch/xtensa/src/esp32/esp32_cpustart.c
@@ -164,7 +164,9 @@ void xtensa_appcpu_start(void)
sched_note_cpu_started(tcb);
#endif
- /* Handle interlock */
+ /* Release the spinlock to signal to the PRO CPU that the APP CPU has
+ * started.
+ */
g_appcpu_started = true;
spin_unlock(&g_appcpu_interlock);
@@ -268,8 +270,9 @@ int up_cpu_start(int cpu)
sched_note_cpu_start(this_task(), cpu);
#endif
- /* The waitsem semaphore is used for signaling and, hence, should not
- * have priority inheritance enabled.
+ /* This spinlock will be used as a handshake between the two CPUs.
+ * It's first initialized to its locked state, later the PRO CPU will
+ * try to lock it but spins until the APP CPU starts and unlocks it.
*/
spin_initialize(&g_appcpu_interlock, SP_LOCKED);
@@ -313,7 +316,7 @@ int up_cpu_start(int cpu)
ets_set_appcpu_boot_addr((uint32_t)xtensa_appcpu_start);
- /* And wait for the initial task to run on CPU1 */
+ /* And wait until the APP CPU starts and releases the spinlock. */
spin_lock(&g_appcpu_interlock);
DEBUGASSERT(g_appcpu_started);