Hallo, Ich habe ein NGW100 mit einem AVR32. Jetzt möchte ich gerne mal meinen eigenen kleinen Kernel schreiben. Der Kernel soll mit dem Bootloader U-Boot aufgerufen und ausgeführt werden, so weit so gut. Der Kernel soll eigentlich nur Grundfunktionen bereitstellen (SD-Karte auslesen, Programme laden und ausführen und Spezielle Funktionen Zurverfügungstelle stellen wie z.B. Uhrzeit usw.) Jetzt möchte ich natürlich meine Programme vom Kernel laden und ausführen lassen. Die Programme sollen als HEX auf einer SD-Karte gespeichert werden. Jetzt meine frage: 1. Wie kann ich jetzt die geöffnete HEX Datei (Programm) in den RAM laden und ausführen? - Ist dies nur mit ASM möglich? 2. Wie kann ich von meinen Programmen die Kernel Funktionen aufrufen. 3. Und wie ist das ganze mit dem GCC-AVR32 zu realisieren. - allgemein Ich würde mich über Hilfe, Idee, Links,... freuen Danke
Hab mir mal was ausgedacht:
1 | //Kernel.c
|
2 | |
3 | int main(void) |
4 | {
|
5 | programm_start(); |
6 | }
|
7 | |
8 | void programm_start(void) |
9 | {
|
10 | asm
|
11 | {
|
12 | //Assembler-Code
|
13 | //Die Daten von der SD-Karte in das ES Register laden
|
14 | //und dann in das DS Register laden
|
15 | //danach mit jmp den Code ausführen
|
16 | }
|
17 | }
|
könnte das so Funktionieren?
Und das Programm sieht dann so aus: [avrasm] extern _main global start start: call _main Stop: jmp stop [/avrsam] Das eigentliche Programm
1 | main() |
2 | {
|
3 | }
|
Das wird dann noch zusammen gelinkt. Kann das so Funktionieren?
Ich würde mir nicht die allergrößten Hoffnungen machen, auf dein Problem eine Antwort zu bekommen. Da die AVR32-Architektur noch relativ "jung" ist, gibt es nur wenige Leute, die Erfahrung in der AVR32-Programmierung haben. Und selbst die Personen, die zb ein NGW100 Zuhause haben, werden den größten Teil der Programmierung unter Linux machen. Auch wenns doof klingt, fang erstmal mit was kleinem an. Dazu gehört meiner Meinung nach auch, sich erstmal vom U-Boot zu trennen. Schreib einfach mal nen kleines Programm, das ne LED zum Blinken bringt (natürlich ohne Linux aufm AVR32). Dann taste dich immer weiter voran. Aber denk dran, dass du nen JTAGICE mkII brauchst, um den AVR32 ohne Bootloader zu programmieren. MfG Marius
mmh ok Ich wollte auch gerne mal wissen wie das in der theorie Funktionert d.h. z.B. an einen ARM oder PC. Also wie das in der Programmierung gelöst wird. >>Auch wenns doof klingt, fang erstmal mit was kleinem an. Habe vorher schon einige Projekte mit eine AVR gemacht (MP3-Player, LED-Cube, usw.)
>>Aber denk dran, dass du nen JTAGICE mkII brauchst, um den AVR32 ohne
Bootloader zu programmieren.
jo, darum wollte ich gerne den vorhanden Bootloader weiter nutzen. Um
bissl kosten zusparen.
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.