PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Programm auf einer SD?



Nicolasfura
27.02.2008, 22:57
Ich wollte mal wissen, ob man ein assemblerprogramm auf einer SD-karte speichern kann. Und später natürlich von nem µ-Controller verwenden kann. Ich hab nämlich noch nen atmega8er rumliegen. aber möchte gern ein wesentlich größeres Programm laufen lassen. könnte mir einer erklären, wie das geht bzw. nicht geht?

Pascal
27.02.2008, 23:44
Es geht theoretisch schon. Das Problem ist die Harvardarchitektur, die es nicht ermöglicht, Programme aus einem anderen Speicher als dem internen Flashspeicher auszuführen. Du könntest allerdings so ne Art Interpreter für deinen Code schreiben. Der müsste dann den Code von der SDC lesen, auswerten und in AVR-Maschinenbefehle abbilden. Musst halt für dich selbst abwägen, obs dir das wert ist.
Aber mal so aus Interesse: was soll das Programm machen, wenn das wesentlich größer als der interne Flash ist?

T.J.
28.02.2008, 07:12
Ist zwar interessant, aber ich würde einfach n größeren Controller nehmen ;)
Wie schon gesagt wird es dir die Struktur, die eigentlich sehr gut ist!, nicht leicht machen.

Steinigtmich
28.02.2008, 07:18
Man muss ja nicht zwingend einen AVR oder PIC oder sowas nehmen, dann geht das schon.

Jahrzehntelang wurde es genauso gemacht, nur meisstens hatten die nen EPROM oder ROM statt einem Flashspeicher, aber nie eine SD-Karte. Da müsste man also vielleicht nochmal ein Interface basteln, dafür könnte man dann z.B. nen AVR nehmen.

An Chips die das eigentliche Programm bearbeiten fällt mir auf Anhieb ein:
8088
W78C31B (ist meine ich ein 8051er-Clon)

Mehr hab ich grad nicht in der Bastelkiste liegen.

MfG

SIGINT
28.02.2008, 14:41
Hi zusammen,
um es kurz zu machen: Es gibt keinen Mikrocontroller, der ein Programm direkt von einer SD-Karte ausführen kann, da dies nicht sinnvoll ist. Eine SD-Karte wird üblicherweise mit einem Dateisystem formatiert und das kann sich ja ändern(FAT32, FAT16, EXT2, EXT3,...). Man kann aber hingehen und einen Controller mit einem BIOS ausrüsten, der dann einen Bootloader von irgendwo lädt und dann das Assemblerprogramm von der SD-Karte ins RAM laden und dort ausführen. Sowas kann man z.B. mit dem AVR32 oder dem ARM7 machen. Beim normalen AVR bleibt einem aber nichts anderes übrig als eine Virtuelle Maschine zu programmieren, die das Programm interpretiert.... das ist aber um einiges langsamer als ein normales Assemblerprogramm.

Gruß,
SIGINT

Nicolasfura
28.02.2008, 16:38
Danke schonmal. Einen größeren Controller könnt ich selbstverständlich holen, aber drei dinge interessieren mich an dem Thema:
1. mehr speicher (SDC mit z.B. 1gb)
2. einfacheres programmieren (kein isp)
3. einfach aus Interesse

Wenn mir einer ne Seite geben kann, auf der das mit dem BIOS erklärt wird.

SIGINT
29.02.2008, 12:55
Ulrich Radig hat da ne interesannte Seite zum Thema:
http://www.ulrichradig.de/home/index.php/arm/clinux4arm

Du siehst, daß es nicht mehr so einfach ist wie ein einfacher AVR (und auch etwas teuerer)... aber den Bootloader sollte man auch auf einen kleinen ARM portieren können, wobei du preislich dann bei einem mittleren AVR landest. (LPC2103 3,80€ bei Reichelt)

Gruß,
SIGINT

Alex20q90
22.03.2008, 19:08
die Mega128er haben doch die Möglichkeit externes Ram anzuschließen?

Kann man darin nicht den Code ausführen? Man müsste ja nur von SD auf Ram kopieren und run.

Besserwessi
22.03.2008, 21:55
Die AVR können direkt nur das Programm aus dem Flash laufen lassen. Im RAM könte man nur einen code ablegen der dann in einem Interpreter oder Emulator läuft, aber natürlich relativ langsam. Wäre höchstens für java oder so was interessant, aber die AVR Controller haben eher zu wenig RAM dafür, und mit externem RAM wird das ganze viel zu kompliziert.

Pyro-Mike
24.03.2008, 12:22
Darf ich mal fragen, was das Programm macht? Vielleicht kann man ja den Code einfach für 2 µC aufteilen, die dann z.B. mit I2C verbunden ist.

Vitis
24.03.2008, 22:25
Auch aus externem Ram kann der 8-Bit AVR keine Programme ausführen.
macht er nicht.
Du kannst nen Bootloader schreiben, der Programmteile sequenziell
in den Flash schreibt und diese dann ausführt oder halt nen
Interpreter, sonst gehts nicht.

Feratu
25.03.2008, 15:18
Erinnert mich irgentwie an eine S7 von siemens ^^
Die haben einfach eine riesen tabelle in einer eigenen Programmiersprache der dann decodiert wird und schließlich ausgeführt.

So würde das auch gehn ist halt sehr kompliziert