Moinsen! Mich hat vorhin der Elektronikwahnsinn mal wieder gepackt nach über einem Jahr abstinenz. Hatte vor einer Weile mal Oszillatoren und anderen Kram auf Vorrat gekauft und hab mir vorhin 2 ATMega32 als Samples bestellt und hoffe jetzt, dass ich die kriege, immerhin konnte ich ja 'ne eigene Firma angeben und die endgültigen Stckzahlen habe ich auch etwas beschönigt. Der ATMega ist ja self-programmable. Heißt das, dass ich Teile des Program-Memorys durch das Programm selbst umflashen lassen kann? Sinn der Sache ist es, einen Bootloader zu basteln, mit dem man dann per RS232 verschiedene Programme laden kann. Also ein Systemkern, der schonmal einige Funktionen bereitstellt wie Zugriff auf LCD, Knöppe, RS232 und vielleicht auch Treiber für verschiedene flexibel anschließbare I2C-Chips. Der soll halt, nachdem er einige Dinge initialisiert hat den Ausführpointer irgendwohin stellen wo dann das eigentliche Program ist, ab da soll er per speziellem RS232-Befehl auch den Flash umschreiben können, um andere Programme zu laden. Geht sowas und gibt es Literatur dazu? Das wäre schonmal prima, dann müsste ich nur noch eine Daseinsberechtigung finden für mein Board, also etwas, was es tun kann. Später wird es dann vielleicht mal Zentralboard eines Roboters...
Self programmable bedeutet, daß man einen Bootloader schreiben kann, der dann das Flash beschreibt. Damit kann man dann z.B. das Flash per RS232 beschreiben (sowas gibts schon). Das ist aber nicht als Systemkern gedacht, sondern einfach nur um Dein Programm ohne SPI ins Flash zu bekommen. Nur der Bootloader kann in das Flash schreiben, im eigentlichen Programm geht das nicht mehr. Dokumentation gibts im Datenblatt. Markus
Infos gibts logischerweise bei Atmel. Datenblätter und Application Notes. Das mit den Samples wird wohl etwas schwieriger. Atmel verweißt auf deutsche Distributoren, und die schicken die Samples meist nur nach telefonischer Rücksprache und kostenpflichtig raus. (Natürlich nicht so teuer, wie wenn man es als Enduser bestellt.) Aber vielleicht hast du ja etwas Glück.
Sooo, bin grad mal fleißig das Grundlayout mit einer Loch-Rasta-Platine (wegen meinen Dreadlocks) am basteln und habe E/A schonmal schick organisiert, so dass noch massig Ports überbleiben um ganz komische Sachen damit zu machen. Das mit dem Boot-Dingens hatte ich mir eigentlich folgendermaßen vorgestellt: -------------------- | Boot-Bereich | -------------------- | Programm-Bereich | -------------------- Bin jetzt net so das As in Sachen Prozessorarchitektur und Programmablauf, da noch so halbwegs Anfänger, aber normalerweise ist es doch so, dass immer ein Ablaufpointer irgendwodraufzeigt, wo gerade Programmcode ausgeführt wird. Jumps setzen den dann woanders hin und ich glaube rjmp setzt ihn wieder an die Ausgangsposition zurück, so macht ein Programm dann quasi einen Abstecher. Ein paar dieser Routinen könnten dann ja eigentlich im festen Bootbereich liegen, z.B. Vorbehandlung von Eingaben, RS232, Interrupt-Handling, und vom Hauptprogramm aufgerufen werden. Also nicht einfach nur ein Bootloader, sondern eine Art BIOS. Ich hoffe, ihr peilt in etwa, worauf ich hinauswill.
Hi, ich verstehe nicht ganz, wozu es gut sein soll, Programmteile im Bootloader abzulegen: a) Der Bootloader kann nur 4KB groß werden. Allerdings kann Code im Bootloader das Flash neu programmieren, d.h. ein Programmfehler kann Dein Programm kaputtmachen. b) Die AVRs können Code nur im Flash ausführen, nicht im RAM. Es bringt also nichts, wenn Du einen Satz an Standardroutinen hast, da Du jeden Code ins Flash packen mußt. Die Compiler machen das aber selbständig. Wenn ich z.B. mit BASCOM ein Programm schreibe, das KEIN LCD braucht, dann läßt der Compiler den Code dafür weg. Eine LCD-Routine die unbenutzt im Flash liegt wäre nur unnötige Platzverschwendung. Will ich dagegen ein LCD benutzen, dann ist der Code dafür automatisch mit dabei. Markus
Hmm, tjo macht schon Sinn, das gaanze zu lassen. Ist aber eigentlich mehr so ein Lerneffekt-Ansatz, also mal ausprobieren wie so ein BIOS funktioniert. Ist ja beim PC auch so, dass das BIOS als Low-Level schonmal die Dinge aufbereitet, damit ein OS, welches geladen wird, etwas vereinfachter auf Dinge zugreifen kann, die immer gebraucht werden (E/A). Aber das macht wohl auch nur Sinn, wenn ich auch Code z.B. aus dem SRAM ausführen kann, weil das ganze dann flexibler wird. So könnte man zum Beispiel von einem ROM verschiedene Programmpakete in den SRAM laden und dort ausführen.
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.