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.logL'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
- 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
- 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
- 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
- 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
- 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。
- 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 firmware:Flashage du firmware d’amorçage Katapult pour FLY-SHT36 v3 Compilation du firmware:Compilation 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.