HEX laden und ausführen (avr32)

Gast #1037287
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
Gast #1037404
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?
Gast #1037410
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?
#1037907
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
Gast #1037973
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.)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren