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....^^
Hat der Bootloader vllt einfach nur die eine Software überschrieben, weilse zu weit hinten im Flash des Masters stand?
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! ^^
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.