Aller au contenu principal

Le firmware RP2040 ne démarre pas - Correction

Méthode de réparation pour les cartes d'outillage FLY (FLY-SHT36, FLY-SB2040, FLY-MMU, etc.) équipées d'un contrôleur RP2040, en cas de non-démarrage ou de démarrage instable après compilation manuelle du firmware Katapult / Klipper. Le firmware d'usine est fourni par le fabricant ; cette page n'est nécessaire que si vous rencontrez des problèmes lors de la compilation manuelle du firmware.

请提供需要翻译的中文短文本。
  • Cette page concerne les opérations avancées ; il est recommandé de sauvegarder le firmware d’origine avant de modifier le code source.
  • Katapult est le firmware d’amorçage BL. Lorsque Katapult est installé et qu’il amorce Klipper, il est recommandé de modifier les deux firmwares ; si Katapult n’est pas utilisé, seule la modification de Klipper est nécessaire.

Symptômes de la panne

  • Après avoir flashé un firmware compilé soi-même, la carte outil ne répond plus, l'USB n'est pas reconnu ou la connexion CAN est impossible.
  • Après la mise sous tension, le démarrage est parfois aléatoire ; après plusieurs coupures et redémarrages, il peut occasionnellement revenir à la normale.
  • Katapult ne peut pas démarrer ou ne peut pas être interrogé par l’hôte.
  • klippy.log L'indicateur chinois correspond à l'incapacité de l'MCU à se connecter ou à un démarrage anormal.

Causes courantes

Le code de démarrage RP2040 via XOSC_STARTUP_DELAY Réglage du registre du temps d'attente de stabilisation du cristal externe. La conception de référence RP2040 est configurée à 1 ms, et les valeurs par défaut en amont de Klipper et Katapult sont toutes deux 1ms

xosc_hw->startup = DIV_ROUND_UP(FREQ_XOSC, 1000 * 256); // 1ms

Si le délai d'attente est trop court, le démarrage peut échouer ou le fonctionnement peut être instable.

Améliorer le temps d'attente stable à 6 ms(Conforme aux valeurs par défaut du pico-sdk officiel de Raspberry Pi, pour s'adapter aux oscillateurs à cristal à démarrage lent):

xosc_hw->startup = DIV_ROUND_UP(FREQ_XOSC, 1000 * 256) * 6; // 6ms

Modification du code source de Katapult

  1. Utilisez une seule commande pour modifier ~/katapult/src/rp2040/main.c(同时替换数值与注释):
sed -i 's/1000 \* 256);/1000 * 256) * 6;/; s|// 1ms|// 6ms|' ~/katapult/src/rp2040/main.c
  1. Recompilation (menuconfig sélectionne RP2040 et l’interface correspondante selon le mode de communication d’origine) :
cd ~/katapult
make menuconfig
make

Les artefacts de compilation se trouvent dans ~/katapult/out/ Dans le répertoire, reflashez simplement le firmware d’amorçage.

Modification du code source de Klipper

  1. Utilisez une seule commande pour modifier ~/klipper/src/rp2040/main.c(Veuillez remplacer les valeurs et les commentaires):
sed -i 's/1000 \* 256);/1000 * 256) * 6;/; s|// 1ms|// 6ms|' ~/klipper/src/rp2040/main.c
  1. Recompilation :
cd ~/klipper
make menuconfig
make

Les artefacts de compilation se trouvent dans ~/klipper/out/ Table des matières(klipper.bin ou klipper.uf2),reflasher le firmware.

Vérifier si les modifications sont effectives

  1. Vérifier si le code source a été modifié :
grep -n "xosc_hw->startup" ~/katapult/src/rp2040/main.c ~/klipper/src/rp2040/main.c

以下是您需要翻译的中文短文本,请提供。 1000 * 256) * 6,注释为 // 6ms

  1. Vérification après flashage : après la mise sous tension, la carte outil doit démarrer normalement, Klipper doit se connecter correctement au MCU ; avec Katapult, après être entré en mode de flashage, elle doit être correctement reconnue par l’hôte.

Référence de configuration associée

Flashage du firmwareFlashage du firmware d’amorçage Katapult pour FLY-SHT36 v3 Compilation du firmwareCompilation du firmware Klipper pour FLY-SHT36 v3

Pour les autres produits RP2040 (FLY-SB2040, FLY-MMU, etc.), veuillez vous référer au chapitre de flashage correspondant au produit.

Loading...