Go Down

Topic: Effacer completement le programme d'une Mega (Read 3927 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 tutos et plein de bonnes choses 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 tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

68tjs

C'est sans doute une question de choix de configurateur dans l'appel à avrdude :
http://nongnu.askapache.com/avrdude/avrdude-doc-5.11.1.pdf
Page 12
Option -D
Disable auto erase for flash. When the -U option with flash memory is speci-
fied, avrdude will perform a chip erase before starting any of the programming
operations, since it generally is a mistake to program the flash without per-
forming an erase first. This option disables that. Auto erase is not used for
ATxmega devices as these devices can use page erase before writing each page
so no explicit chip erase is required. Note however that any page not affected
by the current operation will retain its previous contents.

Pac2Kro

De toute manière, le programme compilé sur l'eprom a une adresse de début et une adresse de fin et peu importe l'état des autres bits.

Jean-François


et peu importe l'état des autres bits.


Elles sont pas toutes de ton avis  XD
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa


Jean-François

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Go Up