🛠 Dual-core M7+M4 et récupération DFU

Arduino GIGA R1 WiFi · avance · Schéma : IMG-giga-r1-wifi-avance-9-dual-core-dfu.svg — STM32H747 de la GIGA R1 WiFi décortiqué : cœur Cortex-M7 480 MHz et cœur Cortex-M4 240 MHz échangeant par RPC, module radio 1DX à côté, et flux de récupération par USB DFU vers l'ordinateur

Objetivos

Aprovechar las dos ventajas «de sistema» de la GIGA R1 WiFi: el dual-core real del STM32H747XI (Cortex-M7 hasta 480 MHz + Cortex-M4 hasta 240 MHz, programables por separado — por ejemplo, Arduino en uno, MicroPython en el otro, con RPC entre ambos) y la recuperación mediante DFU nativo cuando una carga de programa falla o el firmware del módulo de radio 1DX queda inutilizable (brick). Aprenderás a revivir una tarjeta inutilizable.

Material

Código completo

Sketch del núcleo M7 (lado Arduino) — el núcleo M4 se programa por separado (MicroPython o segundo core):

// GIGA R1 WiFi — preuve de vie du coeur M7 + coordination avec le M4
// Le M7 (480 MHz) gere ici le WiFi et la console ; le M4 (240 MHz), programme
// separement (ex. MicroPython officiel), communique avec lui par RPC selon la
// section "Dual Core" de docs.arduino.cc/hardware/giga-r1-wifi.
#include <WiFi.h>

void setup {
  Serial.begin(115200);              // console sur M7
  pinMode(LED_BUILTIN, OUTPUT);
  Serial.println("M7 actif — en attente du M4 (flasher MicroPython a cote)");
  WiFi.begin("your-ssid", "your-pass");
}

void loop {
  static unsigned long t = 0;
  if (millis - t > 1000) {         // heartbeat 1 Hz sur M7
    t = millis;
    digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
    Serial.print("M7 up, WiFi=");
    Serial.println(WiFi.status == WL_CONNECTED ? "OK" : "...");
  }
}

Recuperación DFU (terminal, tarjeta en bootloader):

# Entrer en bootloader : double-tap sur le bouton reset (touche 1200 bps)
# ou via la commande de reboot du core. Le device passe en PID 0x0366.
dfu-util -l                                   # liste : VID 0x2341, PID 0x0366 attendu
dfu-util -a 0 -s 0x08000000:leave -D firmware.bin   # reflash du binaire du core
# Firmware radio 1DX brické (plus de WiFi du tout) : lancer le sketch
# FlashFormat fourni avec le core pour restaurer le module.

Verificación esperada

El sketch del M7 hace parpadear el LED a 1 Hz y anuncia el estado de la WiFi. Al flashear MicroPython en la tarjeta según el procedimiento oficial, el intérprete responde en una consola independiente — la prueba de que los dos mundos coexisten (los ejemplos de RPC M7↔M4 de la documentación de Arduino funcionan encima). En modo DFU, dfu-util -l lista correctamente un dispositivo 2341:0366, y el reflash devuelve una tarjeta que rechazaba la carga de programa.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales