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