🛠 Dual-core et mise à jour OTA sur la flash 4 Mo

Raspberry Pi Pico 2 W · avance · Schéma : IMG-pico-2-w-avance-9-pico2w-ota-double-coeur.svg — deux cœurs RP2350 séparés, flash 4 Mo découpée en zones A/B, téléchargement Wi-Fi écrivant la zone inactive et bascule du boot-info.

Objectifs

Exploiter les deux coeurs du RP2350 et la flash 4 Mo : le coeur 0 gere le Wi-Fi (CYW43), le coeur 1 le metier, synchronises par mutex ; la mise à jour OTA télécharge un firmware dans la zone inactive de la flash puis bascule le boot-info pour démarrer dessus, comme l'exemple officiel pico_w/wifi/ota_update.

Matériel

Code complet

// main.c - dual-core + squelette OTA (inspiré pico_w/wifi/ota_update)
#include "pico/stdlib.h"
#include "pico/multicore.h"
#include "pico/cyw43_arch.h"
#include "pico/bootrom.h"

static volatile bool firmware_pret = false;

void coeur_metier(void) {          // coeur 1 : logique, jamais de lwIP ici
    while (true) {
        if (firmware_pret) {
            rom_data_call(ROM_TABLE_ENTRY_RESET_TO_BOOTLOADER, 0);
        }
        sleep_ms(100);
    }
}

int main(void) {
    stdio_init_all;
    if (cyw43_arch_init) { return 1; }      // Wi-Fi sur coeur 0
    cyw43_arch_enable_sta_mode;
    cyw43_arch_wifi_connect_timeout_ms(
        "mon_ssid", "mon_mot_de_passe", CYW43_AUTH_WPA2_AES_PSK, 30000);
    multicore_launch_core1(coeur_metier);
    // 1) télécharger firmware.bin en HTTP vers la zone B (flash_range_erase
    //    puis flash_range_program, hors zone XIP du programme courant)
    // 2) vérifier taille + checksum
    // 3) écrire un boot-info pointant vers la zone B, puis réinitialiser
    firmware_pret = true;
    while (true) { sleep_ms(500); }
}

Vérification attendue

Après téléchargement complet et checksum valide, la carte réinitialise, démarre sur la zone B et la version affichée en série a changé. Le coeur 1 continue de tourner pendant le téléchargement sans corrompre lwIP.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels