Je débute avec Arduino Uno et je voudrais poser une question, certainement bête.
Y a-t'il la possibilité et comment, de recharger (récupérer) un programme qui a été mis dans un Arduino ?
Concrètement, j'ai écrit un programme qui tourne sur un Arduino, mais j'ai perdu le code .
Peut-on récupérer le programme ? Il doit être compilé, mais on doit pouvoir certainement le sauver sur disque et ensuite, au besoin, le remettre dans l' Arduino...
Le-Mio:
Je débute avec Arduino Uno...
mais j'ai perdu le code
Eh ben ça commence bien ;D
Oui on peut utiliser avrdude pour extraire le code exécutable contenu dans la flash d'un arduino.
Mais cela ne te permettra pas de récupérer le code source d'origine.
Tu pourras juste l'utiliser pour programmer un autre arduino identique, sans jamais pouvoir le modifier.
Vu que tu l'as déjà écrit une fois, le plus simple est peut-être de le refaire
Il y a aussi la version 28 d'un code qui tourne bien, puis pour la 29, on en rajoute tout plein, mais voilà, on n'a pas pensé à archiver la version 28, et on l'a dans le baba...
Si on peut extraire le code en .hex, on peut aussi le passer en assembleur, mais de là à le remettre en C, c'est mort.
Bonjour tous,
Et un grand merci pour vos réponses.
<<Vu que tu l'as déjà écrit une fois, le plus simple est peut-être de le refaire>>
Euh , pas si simple.
Le programme a été écrit avec LabView + une extension (Compatible Compiler for LabVIEW - Aledyne-TSXperts) pendant sa période d'évaluation.
Maintenant que la période est passée , si je mets un autre programme dans l' Arduino, le précédent sera effacé et mon programme perdu alors qu'il était fonctionnel.
Il serait donc utile d'avoir une commande dans l IDE Arduino pour sauver le code compilé présent en mémoire ...
<<Oui on peut utiliser avrdude pour extraire le code exécutable contenu dans la flash d'un arduino>>
Tu as peut être une chance de retrouver le code source de ton programme si tu regarde dans le dossier ( caché ) AppData/Local/Temp et que tu trouve des dossiers avec un nom du genre "build315786178387596193.tmp".
Si tu te rappelle d'un nom de variable ou de fonction, ou même un commentaire, un nombre, peu importe, pourvu que c'était dans ton sketch... fais une recherche (avec Notepad++ par exemple) dans les fichiers .cpp du dossier "AppData/Local/Temp" (et désactiver les filtres de recherche du genre "Mot entier seulement" ou "Respecter la casse" ).
Avec un peu de chance tu trouveras un fichier .cpp qui ressemble fortement à ton fichier .ino perdu
Il serait donc utile d'avoir une commande dans l IDE Arduino pour sauver le code compilé présent en mémoire ...
Il ne faut pas exagérer. Tu reportes tes erreurs sur les autres. Tu demandes "simplement" que tous les utilisateurs se retrouvent avec une IDE plus complexe pour quelques étourdis qui n'ont qu'à faire un peu plus attention à ce qu'ils font.
La sauvegarde c'est le b-a-ba avec un PC. Il faut arrêter de faire les assistés.
C'est quoi "avrdude"
"avrdude" c'est un programme conçu par Atmel pour écrire et lire dans le microcontroleur.
Configure l'IDE arduino en mode bavard dans les préférences et tu verra apparaître à l'écran une invocation à avrdude au moment du transfert du programme. Cela te donnera une idée de la syntaxe et des différents configurateurs qu'il faut spécifier.
Comment fait-on ?
On prend gogole et on chercher "avrdude" et dans les différents liens on en trouve un vers la documentation.
Après il suffit de lire, je te rappelle que le mode bavard te donnera 99% des infos à spécifier.
@guix
Normalement l'IDE écrit dans un répertoire temporaire. Sous Linux le répertoire temporaire est systématiquement vidé à l'extinction du PC : c'est le but avec un répertoire temporaire.
Sous W$ cela risque d'être pareil, enfin avec W$ on ne sait jamais...........
Windows n'efface pas automatiquement la plupart des fichiers temporaires. Il incombe à l'utilisateur de le faire, avec le Nettoyeur de disque par exemple.. (oui c'est un peu illogique d'appeler cela des fichiers temporaires..)
<<Il ne faut pas exagérer. Tu reportes tes erreurs sur les autres. Tu demandes "simplement" que tous les utilisateurs se retrouvent avec une IDE plus complexe pour quelques étourdis qui n'ont qu'à faire un peu plus attention à ce qu'ils font.
La sauvegarde c'est le b-a-ba avec un PC. Il faut arrêter de faire les assistés.>>
Ou là là ! Que d'adrénaline !
Quelles erreurs ?
Ce n'est pas une erreur, ce n'est pas un oubli, et quand bien même, cela peut arriver.
J'ai donné la raison de ma question :
"Euh , pas si simple.
Le programme a été écrit avec LabView + une extension (Compatible Compiler for LabVIEW - Aledyne-TSXperts) pendant sa période d'évaluation.
Maintenant que la période est passée , si je mets un autre programme dans l' Arduino, le précédent sera effacé et mon programme perdu alors qu'il était fonctionnel."
Ce n'est donc pas une erreur, et il me semble que ma question est légitime (et non agressive).
Je ne pense pas non plus que je me comporte en assisté, je demande simplement conseil à des gens beaucoup plus expérimentés que moi dans ce petit domaine que je ne connais pas bien encore. C'est le but d'un forum, d' "assister" les débutants, non ?
Merci pour la piste AVRdude .
Mais enfin , je ne pense pas qu'une option supplémentaire dans un menu de l'IDE soit plus complexe à utiliser que d'étudier et ensuite faire fonctionner un programme supplémentaire de ce type là ?
Pas plus complexe mais plus lourd oui. On ne t'a jamais dit qu'en programmation être redondant était nul ?!
Ce n'est aucunement utile puisqu'un autre programme le fait déjà très bien. A toi de te débrouiller pour le faire sachant qu'on t'a donné la réponse.
Quelles erreurs ?
Ce n'est pas une erreur, ce n'est pas un oubli, et quand bien même, cela peut arriver.
J'ai donné la raison de ma question :
Bien sûr que c'est une erreur, bien sûr que c'est un oubli.
Avoir écrit le code avec labview ou un autre logiciel ne retire en rien le fait de devoir faire une sauvegarde de son code. Ta réponse était pour "pourquoi tu ne le réécris pas" et n'est en aucun cas une excuse pour "pourquoi tu ne l'as pas sauvegardé".
ça me fait penser à tous les petits malins qui font des copier coller de code sur des forums/blogs et qui viennent pleurer quand l'auteur a décidé de le fermer ou de supprimer l'article...
Et tu as eu ta réponse.
Tu ne veux pas non plus qu'on mette un deuxième petit réservoir sur une voiture pour ceux qui ont oublié de faire le plein avant de prendre l'autoroute ?!
Ce que tu veux faire est possible donc fait le, le fait que ça te prennes du temps est ton problème. A partir de maintenant tu feras une sauvegarde.
afff afff je suis en manque d'adrénaline, j'ai tout laché !
Je ne comprend pas que vous 'tapiez' sur Le-Mio. Il se pose une question légitime.
Avec n'importe quel compilateur on sait ou se trouve le programme compilé (ou le .hex) que l'on pourra installer ou télécharger sur autant d'installations qu'on veut sans avoir à tout recompiler.
Avec l'ide arduino, tout est transparent, on charge le programme sur la cible en un click et on ne sait rien des fichiers qui ont été produits.
Dans certain cas il serait cependant bon d'avoir un répertoire ou on trouve les programmes compilés.
Dans le cas de Le-Mio il a une (bonne) raison de ne pouvoir recompiler le programme et si il avait un répertoire ou trouver le programme compilé, il n'aurait pas à se poser la question de relire ce programme sur la cible.
Même si tu as sauvegardé consciencieusement le source, si tu n'as plus de quoi le recompiler ça te fait une belle jambe.
Avec l'ide arduino, tout est transparent, on charge le programme sur la cible en un click et on ne sait rien des fichiers qui ont été produits.
Je pense que tu as plutôt voulu dire que c'est obscur puisqu'on ne sait rien .
Pourtant si, c'est parfaitement clair : les résultats de compilation sont dans un répertoire temporaire, et qui dit temporaire dit qu'il est effacé régulièrement.
D'un autre coté si rien n'était effacé le disque serait rempli de fichiers inutiles et j'en connais qui trouveraient anormal d'être obligé d'effacer les fichiers alors que le programme peut le faire (peut-être même que se pourrait être les mêmes que ceux qui veulent des sauvegardes automatiques).
C'est le choix fait par les auteurs de Wiring, on peut le trouver bon ou totalement idiot, c'est chacun qui voit, mais c'est celui là.
Maintenant si tu ne veut pas de cet IDE pourri qui met les fichiers n'importe où, rien ne t'empêche d'utiliser des IDE comme Eclipse, Code::Blocks ou Netbean ou même un makefile et une console.
Il suffit de faire tourner gogole et toutes les explications sont à disposition pour y utiliser les bibliothèques arduino.
Cela m'est arrivé de perdre des fichiers, je n'ai jamais considéré que c'est la faute du programme, non c'était de la mienne et rien que de la mienne.
Il y a une catégorie de personne pour qui, quoi qu'il se passe, ce n'est jamais de leur faute, de la part d'un môme de 4 ans passe mais d'un adulte !!!!!
Effectivement, je veux dire que toute la cuisine interne du compilateur est cachée, ce qui rend les opérations transparentes pour l'utilisateur.
Je ne discute pas du bien fondé de faire des sauvegarde ou d'utiliser un ide plus 'évolué' (mais plus complexe à maîtriser) si on veut aller plus loin.
Ce que je discute c'est le fait de taper sur quelqu'un qui peut être (sans doute ?) débute et qui se demande ou il peut (re)trouver son programme compilé.
Ce que je discute c'est le fait de taper sur quelqu'un qui peut être (sans doute ?) débute et qui se demande ou il peut (re)trouver son programme compilé.
Qu'il demande s'il y a une solution c'est normal.
On lui a tout dit ce qu'il était possible de faire. Il refuse de lire la doc d'avrdude et il continu a dire que c'est de la faute de l'IDE.
Le programme a été écrit avec LabView + une extension (Compatible Compiler for LabVIEW - Aledyne-TSXperts)
Sur quelqu'un qui peut être (sans doute ?) débute
Quand on se sert de labview plus toutes ces extensions je ne pense pas qu'on est un débutant.
Bon sang être adulte c'est assumer ses conneries et avec un PC quoiqu'on fasse il faut faire des sauvegardes.
Ca me rappelle l'américaine qui avait fait un procès à un fabricant de micro-onde parce que ce n'était pas marqué qu'il ne fallait pas y mettre un chiwawa pour le faire sécher.
kamill:
Je pensais naïvement que c'était un forum pour s'entraider et non pour taper sur les débutants.
On l'a pas aidé ?! es-tu sûr ?
Et moi je croyais naïvement que les "débutants"/personnes n'allait pas remettre en cause le travail des autres à cause d'une erreur commise par eux.
Si la fonction existait, certains retrouveraient à dire sur la fonction "sauvegarde". "ah mais je peux pas choisir mon dossier, ah mais ça marche pas avec un autre arduino" blabla... On les connait les humains à force