Aller à l’article

Sauvegarder et installer le firmware

Vérifié 2026-11-01

Résultat : les paramètres de chaque moteur sont enregistrés, une image compatible est installée et le démarrage de l’application et la préservation des paramètres sont vérifiés. Outils et communication doit déjà fonctionner.

1. Préparez le mécanisme

Fixez le bras, soutenez ses segments et désactivez le couple moteur. Fermez les autres programmes utilisant le port série. L’outil de programmation exige torqueEnable = 0, le verrouillage des écritures persistantes avec lock = 1 et l’absence d’alarme active. Si ces conditions ne sont pas remplies, corrigez-les avec l’outil de configuration approprié. Ne contournez pas les vérifications et n’effacez pas une alarme sans en comprendre la cause.

Vous pouvez désactiver le couple avec l’enregistreur de poses installé. Lancez la commande et confirmez la désactivation seulement après avoir soutenu physiquement le mécanisme. Attendez Torque off verified, puis saisissez done sans enregistrer de pose :

macOS / Linux
npm run record-poses -- --port "$SERVO_PORT" --ids 1,2,3,4,5,6
Windows PowerShell
npm.cmd run record-poses -- --port "$env:SERVO_PORT" --ids 1,2,3,4,5,6

Remplacez les identifiants sélectionnés par les vôtres. Cela crée un fichier de pose vide qui n’est pas nécessaire pour la relecture. Il s’agit d’une procédure de libération contrôlée du couple et non d’un arrêt d’urgence.

2. Sauvegardez chaque moteur

Deux objectifs de sauvegarde utilisent des formats différents et non interchangeables :

Fichier Créé par Objectif
tools/settings/backups/servo-1-before-flash.json Node.js settings backup Restauration ordinaire des paramètres Legacy persistants sur le même moteur
backups/servo-1-factory-recovery.json Python settings.py backup Réparation des paramètres enregistrés et du modèle de réinitialisation après retour au firmware d’usine

Les deux commandes lisent le moteur sans modifier ses paramètres :

macOS / Linux
npm run settings -- backup --port "$SERVO_PORT" --id 1 --file tools/settings/backups/servo-1-before-flash.json
Windows PowerShell
npm.cmd run settings -- backup --port "$env:SERVO_PORT" --id 1 --file tools/settings/backups/servo-1-before-flash.json
macOS / Linux
tools/flash/.venv/bin/python tools/flash/settings.py backup --port "$SERVO_PORT" --id 1 --file backups/servo-1-factory-recovery.json
Windows PowerShell
.\tools\flash\.venv\Scripts\python.exe tools/flash/settings.py backup --port "$env:SERVO_PORT" --id 1 --file backups/servo-1-factory-recovery.json

Répétez l’opération pour chaque ID , en modifiant à la fois --id et le nom de fichier. Conservez une autre copie en dehors du projet et étiquetez chaque sauvegarde avec son moteur physique. Les fichiers existants ne sont pas écrasés ; utilisez un nouveau nom pour un autre instantané. Les sauvegardes héritées n’incluent pas les profils Extension ni le modèle de gravité : enregistrez ces fichiers JSON séparément.

Vérifiez : , les deux commandes réussissent et les deux fichiers existent. Ne restaurez pas la sauvegarde d’un autre moteur ; ses décalages peuvent modifier la signification physique des décomptes du codeur.

3. Vérifier l’image du firmware sans matériel

Téléchargez custom-v9-e44c0e6.zip à partir de v0.1-preview Assets . Extrayez à la fois firmware.enc et release.json dans tools/flash/releases/custom/ . N’utilisez pas d’archive de code source, release.example.json ou de sortie de build brute.

macOS / Linux
tools/flash/.venv/bin/python tools/flash/flash.py inspect --manifest tools/flash/releases/custom/release.json
Windows PowerShell
.\tools\flash\.venv\Scripts\python.exe tools/flash/flash.py inspect --manifest tools/flash/releases/custom/release.json

inspect n’ouvre pas de port série. Il vérifie la structure du manifeste, la taille de l’image et SHA-256. Pour cette archive, attendez-vous à extension.major: 9 , extension.minor: 0 , model_bytes: [[9, 3]] et encoded_bytes_verified: 25744 . Si la validation échoue, obtenez la paire correspondante d’origine ; n’ajustez pas manuellement son hachage ou sa taille.

4. Installer le firmware sur un moteur par ID

La commande suivante écrit le micrologiciel et redémarre le moteur sélectionné :

macOS / Linux
tools/flash/.venv/bin/python tools/flash/flash.py flash --manifest tools/flash/releases/custom/release.json --port "$SERVO_PORT" --id 1
Windows PowerShell
.\tools\flash\.venv\Scripts\python.exe tools/flash/flash.py flash --manifest tools/flash/releases/custom/release.json --port "$env:SERVO_PORT" --id 1

Saisissez FLASH à l’invite. Maintenez l’alimentation et ne lancez aucun autre outil de chargement avant la fin. Lors d’une programmation normale par adresse, les autres moteurs ayant des adresses uniques peuvent rester connectés ; programmez-les successivement. Ne coupez pas puis ne rétablissez pas manuellement l’alimentation du bus pendant cette programmation.

L’outil enregistre un instantané des paramètres, transfère l’image, vérifie le démarrage de l’application et compare les paramètres. Une réalisation réussie laisse le couple coupé. Les rapports sont enregistrés dans backups/flash/ ; conservez-les avec les sauvegardes. Cela vérifie l’application et les paramètres plutôt que de relire chaque octet du micrologiciel.

5. Vérifiez l’interface installée

Après le flashage, lisez les capacités et les retours sans démarrer le mouvement :

macOS / Linux
node host/servo-driver/examples/v9-feedback.js "$SERVO_PORT" 1
Windows PowerShell
node host/servo-driver/examples/v9-feedback.js "$env:SERVO_PORT" 1

Cet exemple utilise 1,000,000 bauds et ID 1. Modifiez le dernier argument pour un autre ID. Un débit en bauds différent nécessite de modifier le code de cet exemple. Attendez-vous à la version Extension 9.0 ; une session inactive avec couple coupé est normale.

Si le transfert se termine mais que la vérification de l’application échoue, conservez le rapport et vérifiez l’ID, le débit et les paramètres avant de tenter un autre flash. Utilisez la récupération pour un appareil qui ne répond pas ou un retour délibéré au micrologiciel d’usine.

Suivant : vérifier ou établir l’étalonnage .


Accueil de la documentation · Révision source : a995f77 . Extension 9.0 .