🛠 Programmer les deux cœurs M7 et M4 du GIGA R1 et les faire communiquer

Arduino GIGA R1 · avance · Schéma : IMG-giga-r1-a1-1-dual-core-rpc.svg — Le double cœur du STM32H747XI du GIGA R1 : Cortex-M7 à 480 MHz exécutant un programme Arduino, Cortex-M4 à 240 MHz exécutant MicroPython, reliés par un canal RPC.

Objetivos

Aprovechar la funcionalidad única del GIGA R1 dentro de la gama Arduino: programar por separado el Cortex-M7 (hasta 480 MHz) y el Cortex-M4 (hasta 240 MHz) del STM32H747XI, por ejemplo, Arduino/C++ en el M7 y MicroPython en el M4, y luego hacerlos comunicarse mediante RPC. Esta es la vía ideal para aislar una interfaz de tiempo real de una capa de aplicación.

Material

Código completo

// GIGA R1 WiFi — coeur M7 (Arduino) : horloge maitre qui pousse le temps vers le M4
// Cote M4 : un script MicroPython recoit les messages via le canal RPC embarque.
#include <Arduino.h>
#include "RPC.h"

void setup {
  Serial.begin(115200);        // console USB du M7
  RPC.begin;                 // canal inter-cceurs M7 <-> M4
  Serial.println("M7 pret, envoi vers le M4");
}

void loop {
  RPC.printf("tick %lu\n", millis);   // message vers le coeur secondaire
  delay(1000);

  String msg = RPC.readStringUntil('\n'); // reponse eventuelle du M4
  if (msg.length) Serial.print("M4> ");
  Serial.print(msg);
}

En el lado del M4 (MicroPython, después de cargar el firmware MicroPython en el núcleo secundario):

# M4 MicroPython — lecture du canal RPC
import time
try:
    import rpc
    canal = rpc.RPC
    while True:
        msg = canal.read
        if msg:
            print("M7>", msg)
        time.sleep_ms(50)
except Exception as e:
    print("RPC indisponible:", e)

Verificación esperada

La consola del M7 muestra «M7 listo» y luego comienza a enviar datos regularmente; la consola del M4 (o el monitor MicroPython) recibe las líneas «tick 1000», «tick 2000», etc. Los dos núcleos funcionan en paralelo: un bucle while True ocupado en el M4 no interrumpe el latido del M7.

Errores frecuentes

> NO VERIFICADO: la API RPC exacta de MicroPython en el lado del GIGA (los ejemplos oficiales evolucionan con la versión del núcleo); siga la sección «Dual Core» de docs.arduino.cc/hardware/giga-r1-wifi.

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales