AVR - Bootloader flasht nicht

Gast #2141742
Lesenswert?
• ▲
▼
Hallo

Ich habe einen bootloader, der eigentlich ganz gut funktioniert 
(bisher), nun habe ich ein Gerät, das schon verbaut worden ist (komme 
nur mehr sehr schwer drann)
Bei dem Gerät sehe ich ob es läuft oder nicht - wenn es sich einschaltet 
schickt es einen Start Text "starting" an einen PC, und sobald es läuft 
wird auch ein Relais mit Lüfter gestartet.

Nun wollte ich dieses Gerät neu flashen - dazu habe ich auch einen neuen 
startext "starting*v2"
wenn ich mir das bin file anschaue sehe ich nur ehr den "starting*v2" 
und das "starting" gar nicht mehr drinnen.


Dann starte ich den flasher für den bootloader
nach ein paar sekunden wird paket 1 übertragen - im bootloader wird 
immer geprüft ob die ClientID passt und die CRC passt, wenn alles 
richtig ist, wird die Page geflasht - und ich sehe eine Rückmeldung, und 
darauf hin wird das näcshte paket geschickt
bis zum schluß, dann wird dem bootloader mitgeteilt, er kann die App 
starten.

Ich höre das ganze auch am Lüfter, während des flashen (Wenn ich da 
abbreche und lange warte) geht der lüfter aus
Sobald die App dann startet, geht der Lüfter an

ABER es startet die alte App (ich sehe nach wie vor "starting")

Ich habe da kein Fallback oder so, mit alter neuer Firmware ... 
irgendwas geht da beim flashen schief

Ich habe hier das ganze nochmal in der testumgebung, da funktioniert 
alles ohne probs ....

Wo kann ich da einen Fehler suchen?

das ist die flashroutine
1
static void flash_page (void) {
2
#if SPM_PAGESIZE < 256
3
  uint8_t i;
4
#else
5
  uint16_t i;
6
#endif
7

8
  uint16_t page = funkloader_buf[2] * SPM_PAGESIZE;
9

10
  eeprom_busy_wait();
11

12
  boot_page_erase(page);
13
  boot_spm_busy_wait();
14

15
  for(i = 0; i < SPM_PAGESIZE; i += 2) {
16
    /* Set up little-endian word. */
17
    uint16_t w = funkloader_buf[3 + i];
18
    w += funkloader_buf[4 + i] << 8;
19
    
20
    boot_page_fill (page + i, w);
21
  }
22

23
  boot_page_write (page);
24
  boot_spm_busy_wait();
25

26
  /* Reenable RWW-section again. */
27
  boot_rww_enable ();
28
}

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.