Forum: Mikrocontroller und Digitale Elektronik Programmieren vom Atmel über Bussystem


von Thomas F. (fragstone)


Lesenswert?

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

von holger (Gast)


Lesenswert?

>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.

von µC Bastler (Gast)


Lesenswert?

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.

von Philipp T. (cyclon)


Lesenswert?

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.

von Thomas F. (fragstone)


Lesenswert?

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

von Matthias K. (mkeller)


Lesenswert?

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.

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
Noch kein Account? Hier anmelden.