Pages: 1 [2]   Go Down
Author Topic: Effacer completement le programme d'une Mega  (Read 3114 times)
0 Members and 1 Guest are viewing this topic.
France, Lyon 6°
Offline Offline
Full Member
***
Karma: 0
Posts: 144
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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...
Logged

- Arduino UNO R3;
- PowerBook G4;
  - Arduino (C)
  - Eclipse (Java)
  - wxLua (µLua)
  - TextWrangler (HTML + JS)
- (3)DS et bientôt R4 (po

france
Offline Offline
God Member
*****
Karma: 15
Posts: 850
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Christian

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

France
Offline Offline
Faraday Member
**
Karma: 36
Posts: 3436
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@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.
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

@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
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

France S-O
Offline Offline
Edison Member
*
Karma: 41
Posts: 2180
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

France
Offline Offline
Full Member
***
Karma: 0
Posts: 154
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Forum Moderator
Geneva
Offline Offline
Faraday Member
*****
Karma: 30
Posts: 3228
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

et peu importe l'état des autres bits.

Elles sont pas toutes de ton avis  smiley-lol
Logged

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

France
Offline Offline
Full Member
***
Karma: 0
Posts: 154
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Up ou down smiley-lol
Logged

Forum Moderator
Geneva
Offline Offline
Faraday Member
*****
Karma: 30
Posts: 3228
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Arfffff....  smiley-lol
Logged

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

Pages: 1 [2]   Go Up
Jump to: