Programm spinnt nach Bootloader

Gast #2908845
Lesenswert?
• ▲
▼
Hallo Leute,

ich beschreibe kurz den Aufbau:

Ein Master-Controller (Meg640) mit mehreren SPI Slaves.

Der Master-Controller programmiert die SPI-Slaves (Mega8) per ISP und 
trägt dafür ab einem offset (0xa000 für typ1 und 0xc000 für typ2) die 
software für die Slaves in sich.

Hat bis jetzt auch alles so weit wunderbar funktioniert!

Jetzt hat allerdings der Master einen bootloader bekommen (4096W, also 
Start bei 0xe000)

Jetzt funktioniert das programmieren eines SPI-Slaves auf einmal nicht 
mehr, wenn der Bootloader mit im Flash steht!

Kurios:  Software mit Bootloader und ohne Bootloader via avr studio aus 
dem atmega640 ausgelesen: Exakt identisch (diff) bis zu 0xe000, da fängt 
bei dem mit bootloader eben der bootloader an, beim anderen nur noch 
0xff.


Gut, dachte ich mir: Alles klar, der Bootloader setzt irgendwelche 
Einstellungen, blockiert irgendwelche Interrupts, irgendwas ist auf 
jeden fall am Zustand anders nach einem bootloader->application jump.

Also: BOOT-RST Vektor rausgenommen und die software mit bootloader im 
flash per isp in den master geladen... Gleicher Fehler...


Auch klasse:

Zuerst wird immer die SPI slave software verifiziert, falls unterschiede 
zu der im master bestehen -> Flash

Wenn die SPI slave software von anfang an richtig ist, funktioniert es 
mit beiden Versionen der master software. also ein verify klappt.

Nur wenn sie sich unterscheidet und versucht wurde zu programmieren 
stimmt sie bei der normalen master version danach überein. Bei der 
master version mit bootloader stimmt sie sofort nicht überein.


Wenn das nicht komisch ist....^^
Gast #2908862
Lesenswert?
• ▲
▼
Das dachte ich auch, deshalb hab ich ja extra beide versionen aus dem 
controller ausgelesen und miteinander gedifft.

Normale applikation:  0x0000 - 0x8000
Slave1:               0xa000 - 0xb300
slave2:               0xc000 - 0xd100
bootloader:           0xe000 - 0xf300


Nut die Bootloader sektion unterscheidet sich bei beiden varianten. Also 
einmal nur 0xff, einmal steht der bootloader drin.

Und selbst wenn was überschrieben gewesen wäre: es wird byte weise 
verglichen, bei unterschied komplett programmiert, danach byte weise 
verglichen.  Dann würde einfach eine nicht funktionierende software im 
slave stehen.

Abgesehen davon:  Eine mit der ISP version richtig programmierte 
Slave-Software wird anstandslos korrekt verifiziert! ^^

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.