Forum: Mikrocontroller und Digitale Elektronik Flexibles Experimentiersystem bauen


von Hugoderwolf (Gast)


Lesenswert?

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

von Markus Kaufmann (Gast)


Lesenswert?

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

von Markus Kaufmann (Gast)


Lesenswert?


von ERDI - Soft (Gast)


Lesenswert?

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.

von Hugoderwolf (Gast)


Lesenswert?

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.

von Markus Kaufmann (Gast)


Lesenswert?

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

von Hugoderwolf (Gast)


Lesenswert?

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