www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LPC22xx: Programm von SD-Karte lesen und im RAM ausführen


Autor: Mork (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wie lässt man einen LPC22xx ein Programm von einer SD-Card n einen 
externen SRAM einlesen und dieses dann ausführen? Was muss man alles bei 
WinARM einstellen, damit das möglich ist? Geht das überhaupt? Ich möchte 
nähmlich so eine Art Betriebssystem schreiben(ähnlich wie MS-DOS), da 
ich es satt hab, immer den Flash des Controllers zu beschreiben, da das 
Übertragen sehr lange dauert. Oder soll ich gleich µCLinux draufmachen? 
Und was bringt mir das dann?

MfG Mark

Autor: Sigint 112 (sigint)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Mark,
   ich hab zwar noch nichts mit ARMs gemacht aber dabei handelt es sich 
ja um eine vonNeumann Architektur, also sollte es ohne Probleme möglich 
sein Programme von einer SD-Card zu laden. Du musst halt ein Bootloader 
schreiben, der die SD-Card erkennt und dann das Programm an eine 
bestimmte Stelle im Speicher schreibt. Danach kann der Bootloader 
einfach zum Entry-Point deines Programms springen. Ich denke mal, daß 
die LPC22xx ein externes Speicherinterface besitzen, oder?
Mit WinARM kenn ich mich leider nicht aus... deshalb kann ich dazu nicht 
viel sagen.
Ich würde aber bei entsprechenden Resourcen dazu tendieren Linux 
einzusetzen... da musst du dann nicht mehr ums Betriebssystem kümmern 
und kannst fertige Software einsetzen.

Gruß,
  SIGINT

Autor: Mork (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

das Problem ist, dass ich niht weiss, wie ich WinARM sagen soll, dass er 
das Programm so schreiben soll, dass das Programm, alle Variablen usw. 
ab der Adresse 0x8000 0000 plaziert werden, weil der externe Speicher 
dort anfängt und das Teil ja keine MMU hat. Was Linux angeht kann ich 
mich immernoch nicht entscheiden, weil ich absolut keine Kentnisse von 
Programmierung von Treibern hab. Fertige Software werde ich 
wahrscheinlich nicht benutzen können, das es sich um einen Roboter 
handelt, dessen Programmierung ja sehr hardwarespeziefisch ist.

MfG mark

Autor: Dominic R. (dominic)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

die Platzierung von Code, Daten etc. im Speicher wird bei einer GNU 
toolchain wie WinARM durch ein Linker Skript festgelegt. Compiler und 
Assembler erstellen erstmal "relocatable objects", die dann vom Linker 
in eine executable gebunden werden. Dem Linker übergibt man dazu mit "-T 
<script>" eine Datei, die erst alle verfügbaren Speicherbereiche bekannt 
macht (int RAM, int Flash, optional ext. Flash), und anschliessend die 
sections der Objekte den Speicherbereichen zuweist. Beispiele zu solchen 
Linker Skripten findet man z.B. in Jim Lynch's exzellenten Tutorials.

Sofern dein LPC22xx Board nicht über mehrere MB Speicher verfügt ist 
uCLinux wohl der falsche Weg.

Ob die "langen" Flashzeiten das Ausweichen auf ein derart komplexes 
Vorhaben rechtfertigen wage ich allerdings zu bezweifeln. Ausserdem 
dürfte die Ausführung aus externem RAM eine Performance Bremse 
darstellen.

Gruss,

Dominic

Autor: Mork (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

>Sofern dein LPC22xx Board nicht über mehrere MB Speicher verfügt ist
>uCLinux wohl der falsche Weg.

im moment nur 512kB, es währen aber auch 2/4mb denkbar.

>Ob die "langen" Flashzeiten das Ausweichen auf ein derart komplexes
>Vorhaben rechtfertigen wage ich allerdings zu bezweifeln.

Na ja, die Flash-Zeiten eigentlich doch eher weniger. sondern eher die 
Tatsache, dass ich immer nur EIN Programm drauf haben kann. Natürlich 
kann ich da mehrere in einen Quellcode packen und dann compilieren, es 
nervt aber, denn es währe mir viel lieber, wenn ich da einfach wie bei 
einem PC Programme dazufügen/entfernen kann, ohne den halben Code zu 
ändern. Ausserdem ist der interne Flash nich unendliche groß und kann 
auch nicht unendlich oft beschrieben werden und es wäre mir lieber, ein 
neue SD-Card zu kaufen als einen neuen Controller. Übrigens plane ich 
das schon als ein großes Projekt, ich hätte kein Problem damit, wenn es 
bis Herbst oder gar Winter dauern würde.

>Ausserdem dürfte die Ausführung aus externem RAM eine Performance Bremse
>darstellen.

Wieso, der int. Flash haat ja auch bestimmte Zugriffszeiten. Zudem 
könnte ich oft vorkommende Routinen auch im Flash unterbringen und diese 
dann als Betriebssystemroutinen aufrufen.

mfg Mark

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.