Go Down

Topic: Effacer completement le programme d'une Mega (Read 3 times) previous topic - next topic

numero_744

Bonjour,
Y a-t-il un moyen de lire le programme uploadé ?
Ainsi, on pourrait savoir tout ce qui traine dans la mémoire flash, ce qui pourrait aider.
De plus, on saurait comment le programme est enregistré dans la carte (sous quelle forme).

Sinon, pourquoi la carte n'effacerait pas toute la flash au changement de programme ?
Question temps, on n'est pas à ça près...
- Arduino UNO R3;
- PowerBook G4;
  - Arduino (C)
  - Eclipse (Java)
  - wxLua (µLua)
  - TextWrangler (HTML + JS)
- (3)DS et bientôt R4 (po

Christian_R

Le programme est compilé avant d'être uploadé dans la carte.
Un dump de sa mémoire vers le PC va te ressortir du langage machine.
Christian

skywodd

Bonjour,


Y a-t-il un moyen de lire le programme uploadé ?

Oui, avec l'utilitaire avrdude et l'option -U flash:r:dump.hex:i (en utilisant le programmateur "arduino").


Ainsi, on pourrait savoir tout ce qui traine dans la mémoire flash, ce qui pourrait aider.

Ça n'aurait d'intérêt que dans le cas d'un "Reverse engineering", sinon dans le cadre d'une utilisation normale ça n'est d'aucune utilité.


De plus, on saurait comment le programme est enregistré dans la carte (sous quelle forme).

Binaire, sous forme d'opcode AVR8.
Au mieux tu peut décompiler le programme pour avoir son code source assembleur mais pas plus.
En aucun cas tu ne peut retrouver le code source C/C++ à partir du code assembleur.


Sinon, pourquoi la carte n'effacerait pas toute la flash au changement de programme ?

La carte efface systématique l'intégralité de la flash (excepté la partie bootlaoder) à chaque upload.
Si tu active le mode "verbeux" dans les options de l'ide arduino (case à cocher "upload") tu verras la commande "avrdude -e ..." qui efface la flash avant écriture.
Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

fdufnews

@skywodd: concernant le dernier point de ta réponse je ne suis pas d'accord. Dans la flash on retrouve des morceaux d'ancien code. J'ai retrouvé des chaines constantes de programmes vieux de plusieurs mois en relisant la flash.

skywodd


@skywodd: concernant le dernier point de ta réponse je ne suis pas d'accord. Dans la flash on retrouve des morceaux d'ancien code. J'ai retrouvé des chaines constantes de programmes vieux de plusieurs mois en relisant la flash.

C'est bizarre ça ...
A part les ATxmega (qui fonctionne par pages mémoire) il me semble qu'un "chip erase" efface toute la flash (bootloader exclu) à chaque fois ...
Je ferai un essai pour voir :smiley-mr-green:
Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Go Up