HEX laden und ausführen (avr32)

Gast #1037287
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
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
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
Gast
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.)
Gast
>>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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.