Forum: Mikrocontroller und Digitale Elektronik HEX laden und ausführen (avr32)


von MuE (Gast)


Lesenswert?

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

von MuE (Gast)


Lesenswert?

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?

von MuE (Gast)


Lesenswert?

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?

von MuE (Gast)


Lesenswert?

kann mir keiner paar tipps geben?

von Marius W. (mw1987)


Lesenswert?

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

von MuE (Gast)


Lesenswert?

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

von MuE (Gast)


Lesenswert?

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