Pages: [1] 2   Go Down
Author Topic: Effacer completement le programme d'une Mega  (Read 3574 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 43
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,
ayant depuis peu une Mega, je me lance dans beaucoup de tests pour me familiariser avec le code et la carte, ce matin suite à une erreur dans le code, je peux faire defiler sur l’écran LCD une partie du code d'un autre projet.  smiley-eek
Un reset de la Mega ne change rien.
J'en conclue que le fait de charger un projet avec l'application Arduino (1.0.2) n'efface pas systématiquement le précédent programme.
Es-ce moi qui n'effectue pas une action avant tout chargement ou c'est un bug?
Merci pour vos réponses,
Logged

Débutant mais acharné!!

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

Essaye d'uploader avec un setup() et une loop() vide, ensuite tu remets ton programmes et tu regarde si tu as toujours tes "déchets" qui sont à l'écran
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

Offline Offline
Full Member
***
Karma: 0
Posts: 110
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Vérifie dans l'ide que ta carte méga soit préciser, et regarde si les leds tx et rx clignote lors de l'upload.
« Last Edit: November 25, 2012, 04:11:57 am by lacolombenoir » Logged

www.hatokuro.comuf.com site consacrer au rétrogaming

Offline Offline
Newbie
*
Karma: 0
Posts: 43
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci pour vos réponses rapides,
j'ai comme a dit Jean-François chargé un projet  vide, maintenant c'est ok je n'ai plus d'affichage d'ancien projets.
Bizarre tout de même non?
Bon faut dire que j'upload énormément!! avec beaucoup de bugs programme car je débute!!  smiley-red
Bon week-end ! !
Logged

Débutant mais acharné!!

Bretagne
Offline Offline
Edison Member
*
Karma: 16
Posts: 1398
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut,

J'imagine que si tu upload un programme de 3Ko puis ensuite un autre de 1Ko, l'upload ne doit pas inscrire des 0 dans les 2Ko suivants de la flash (sinon, bonjour les temps d'upload à chaque fois s'il faut remettre à Z toute la flash!). C'est comme un disque dur, les données ne sont pas effacées à la simple suppression d'un fichier, mais n'étant plus référencées, elles seront un jour écrasées par une autre écriture.

Dans ce cas, il restera des vieux morceaux de code dans les 2Ko de flash en question, mais est-ce vraiment gênant?
Logged

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

Salut,

J'imagine que si tu upload un programme de 3Ko puis ensuite un autre de 1Ko, l'upload ne doit pas inscrire des 0 dans les 2Ko suivants de la flash (sinon, bonjour les temps d'upload à chaque fois s'il faut remettre à Z toute la flash!). C'est comme un disque dur, les données ne sont pas effacées à la simple suppression d'un fichier, mais n'étant plus référencées, elles seront un jour écrasées par une autre écriture.

Dans ce cas, il restera des vieux morceaux de code dans les 2Ko de flash en question, mais est-ce vraiment gênant?

Pas sur de ce que tu avances, parce que sinon, l'upload d'un programme "vide" n'effacerait justement pas le précédent.
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

Bretagne
Offline Offline
Edison Member
*
Karma: 16
Posts: 1398
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Le bootloader aurait une commande d'effaçage complet de la flash?
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 43
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Afin d'être sur il faudrait pouvoir lire la totalité du contenu et l'afficher puis faire des tests d'effacement, là on serait sur de la réponse et de la conduite à tenir, mais bon je ne sais pas si c'est possible.


Logged

Débutant mais acharné!!

Bretagne
Offline Offline
Edison Member
*
Karma: 16
Posts: 1398
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Savoir qu'il peut rester des bouts d'un ancien programme, ok. Maintenant, je me dis que si c'est pas du code sensible contenant des algos sous brevet ou secret-défense, est-ce que ça dérange? La flash est une zone qui contient dans une partie le code utile, dans le reste, je dirais que c'est un espace de stockage comme l'eeprom, c'est-à-dire que les données se trouvant là, si on les lit, c'est qu'on en a besoin et qu'on les avait écrites volontairement...

 smiley-roll
Logged

France
Online Online
Faraday Member
**
Karma: 40
Posts: 3637
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Afin d'être sur il faudrait pouvoir lire la totalité du contenu et l'afficher puis faire des tests d'effacement, là on serait sur de la réponse et de la conduite à tenir, mais bon je ne sais pas si c'est possible.
En même temps quel est l’intérêt?
Si des octets d'un ancien programme ne sont pas effacés on a aucune raison d'exécuter ce code sauf si on fait une erreur dans le programme qui a été écrit après.
Donc normalement on ne doit jamais retomber dans l'ancien code.

Bon un bout de code pour les curieux
Code:
#include <avr/pgmspace.h>


PROGMEM prog_char octet[] = {0};

void setup(void){
  unsigned int i,j;
  unsigned char myChar;
 
  Serial.begin(9600);
  Serial.println();
  Serial.println("Dump memoire programme");
  for (i=0;i<32768;i+=16){
    Serial.print(i,HEX);
    Serial.print(" : ");
    for (j=0;j<16;j++){
      myChar =  (pgm_read_byte_near(octet + i+j) & 0xFF);
      //myChar =  i & 0xFF;
      if (myChar<0x10)
        Serial.print("0");
      Serial.print(myChar,HEX);
      Serial.print(" ");
    }
    Serial.print("   ");
    for (j=0;j<16;j++){
      myChar =  (pgm_read_byte_near(octet + i+j) & 0xFF);
      //myChar =  i & 0xFF;
      if((myChar>0x20) && (myChar<128))
        Serial.write(myChar);
      else
        Serial.print(" ");
    }
    Serial.println("");
  }
}

void loop(void){
}

Affiche le contenu de la mémoire. L'origine n'est pas le début de la mémoire mais l'adresse de la variable octet. De ce que j'ai pu voir cette variable est au début de la mémoire car au bout de quelques lignes je trouve ma chaine de titre "Dump memoire programme".
Le programme est fait un peu à l'arrache. J'ai fixé la longueur du dump à 32768 directement dans le code, suivant le micro utilisé il faudra peut être changer.
Et les lignes se décalent suivant l'adresse, j'ai oublié de tester la longueur de l'adresse pour aligner les colonnes.

En tout cas cela confirme que la mémoire n'est pas effacée au-delà du nouveau programme j'ai retrouvé des "restes" de vieux programmes que j'ai fait il y a un bon bout de temps.
Mais comme je le disais au début on ne doit jamais retomber dans le vieux code sauf plantage.
« Last Edit: November 25, 2012, 09:27:55 am by fdufnews » Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 110
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

La tournure de cette discutions pourrait inspirer un épisode des experts, dont la clé de l'énigme aurait été de retrouver un morceau de code a moitiez supprimer a l'intérieur d'une eeprom qui aurait permis un meurtre smiley-grin.
Logged

www.hatokuro.comuf.com site consacrer au rétrogaming

Bretagne
Offline Offline
Edison Member
*
Karma: 16
Posts: 1398
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Mais comme je le disais au début on ne doit jamais retomber dans le vieux code sauf plantage.
Plantage, oui, mais du au compilateur, c'est loin d'arriver ça...
Logged

France
Online Online
Faraday Member
**
Karma: 40
Posts: 3637
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

La tournure de cette discutions pourrait inspirer un épisode des experts, dont la clé de l'énigme aurait été de retrouver un morceau de code a moitiez supprimer a l'intérieur d'une eeprom qui aurait permis un meurtre smiley-grin.
Oh lacolombenoir à quoi il te sert ton arduino? Dans le mien il n'y a que des trucs bien innocents....
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 110
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Mon Arduino n'a tuer personne pour l'instant, si sa peu te rassurer,
Mais qui-sais grâce à se topic un tueur a l'arduino pourra assurée c'est arière smiley-lol.
Logged

www.hatokuro.comuf.com site consacrer au rétrogaming

Offline Offline
Newbie
*
Karma: 0
Posts: 43
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Pour résumer et faire simple,
tant que le nouveau programme reste inférieur à l'ancien il reste obligatoirement la suite de l'ancien programme.
Il n'est nécessaire de supprimer ce reste car il n'est pas gênant pour le fonctionnement.
Pour vider la mémoire dans la boucle de fdufnews il faudrait rajouter  l’écriture de "FF"" dans le cas ou la lecture serait différente mais bon
au final il n'y aura rien a gagner.


Logged

Débutant mais acharné!!

Pages: [1] 2   Go Up
Jump to: