Hallo Freunde, ich habe mal wieder eine Leihenfrage. Aber vielleicht ist Sie es ja wert beantwortet zu werden? Ich würde gerne mehrere Atmel Prozessoren 168p per I2C verbinden. Dies ist jetzt nicht so die Kunst denke ich mir. Meine Frage aber ist es. Wäre es denkbar das Programm auf dem Slave Atmel über den I2C Bus (oder einem anderen Bus) auszutauschen quasi den Atmel über eine zwei draht Verbindung die nicht exclusiv dafür da ist zu Programmieren? Für antworten und vorallem Anregungen danke ich schon einmal im voraus. Gruß Thomas
Gast
#2567922
>Wäre es denkbar das Programm auf dem Slave Atmel über den I2C Bus (oder >einem anderen Bus) auszutauschen quasi den Atmel über eine zwei draht >Verbindung die nicht exclusiv dafür da ist zu Programmieren? Ja, Bootloader.
Gast
#2567924
Thomas F. schrieb: > ich habe mal wieder eine Leihenfrage. > Wäre es denkbar das Programm auf dem Slave Atmel über den I2C Bus (oder > einem anderen Bus) auszutauschen quasi den Atmel über eine zwei draht > Verbindung die nicht exclusiv dafür da ist zu Programmieren? Ja, mit einem Bootloader kann sich der Prozessor alles, was er zugeschickt bekommt, selber in den Flashspeicher brennen.
Ja, du könntest dir einen Bootloader schreiben, bzw. sofern vorhanden einen fertigen nehmen und anpassen. Voraussetzung ist, das der µC Bootloader-Unterstützung besitzt. Da hilft ein Blick ins Datasheet.
Erst mal danke für die schnellen Antworten :) Also wenn ich das mal richtig verstehe hat der Microcontroller zwei Speicherbereiche. Einmal einen recht kleinen Bereich (Bootloader) und zum anderen den "Programm" Bereich. Vom Ablauf her müsste es so sein, das erst das Bootloader Programm gestartet wird und anschließend von dort aus das eigentliche Programm. Wenn ich jetzt dem Bootloader sage (nur recht high Level) schau mal ob du nach dem starten 10 sec lang ob du auf deinem i2c angesprochen wirst und ein befehl zum Flashen kommt. Wenn ja, speichere das Programm (die Bytes) bitte im Programmspeicherbereich und boote anschließend daraus. (Chksum control wäre möglicherweise auch noch anzuraten ;) ) Habe ich das in etwa so richtig verstanden? Gruß Thomas
Ja so in etwa. Schau mal den Beitrag zum Thema Bootloader im Wiki nach. Prinzipiell würde ich ein Kommando für den Eintritt in den Bootloader reservieren und eines für einen Reset. Somit kannst du ohne Reset in den Bootloader umschalten und ein neues Programm flashen und danach per Befehl einen Reset auslösen.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.