Hallo Forum, Bin neu in der Welt der Microcontroller und programmiere momentan auf den ATiny 2313 / ATM-8515 mc´s.(Assembler) Ich möchte Programme direkt von meiner MicroSD Karte und / oder meinem Externen ROM/EEProm-Baustein ausführen und nicht aus dem Internen Flash. Wie genau geht das vor sich? Ist das mit einem ATiny / ATMega überhaupt möglich? Gibt es dazu Tutorials? Lese seit Tagen alle verfügbaren Datenblätter, finde aber nirgends, auch nicht hier in tutorials oder sonstwo eine Angabe. Tatsache ist, daß meine alten 8-bit Maschinen (CPC 464 etc.) selbstverständlich aus externen ROMs / Disketten etc. Programmcode lesen können, das muß doch auch mit ATMegas möglich sein. Danke für jede Hilfe
Das ist nicht möglich. Die AVRs können Programme grundsätzlich nur aus dem internen Flash ausführen. Man könnte nun eine Art Bootloader schreiben, der das Programm von einer SD-Karte liest und ins interne Flash schreibt... Das ist aber nicht gerade einfach, da da verschiedene Hürden genommen werden müssen: Lesen von Daten von einer SD-Karte, finden der Daten auf der SD-Karte (Filesystem), umprogrammieren des internen Flash. Dazu kommt noch, das man das interne Flash nur etwa 1000mal neu programmieren kann und das die Software zum Lesen der SD-Karte und umprogrammieren des internen Flash komplett in einen besonderen, nicht gerade großen Speicherbereich, des AVR-Flash passen muss. Das ist nichts für Anfänger!
Ich hab sowas auch vor. Ich hab mir zuerst auch gedacht, das geht im PC (auch in alten), warum dann nicht in nem neuen µC? Doch dann hab ich mir gedacht, dass im PC ja Prozessor, Ram etc. Seperat ist, im µC ist ja alles schon zusammen. Dazu kommt, wenn man das per Bootloader machen will, das die Software für FAT16/32 und SD-Kartenansteuerung im Vergleich zum Flash im µC relativ groß ist, oder? Das würde bedeutet, dass man nur noch sehr wenig Platz im Flash hat, wo man ein Programm reinschreiben könnte. Meine "Lösung" im moment ist, dass ich ein µC in SOIC oder sogar DIP Bauform nehme und über einen Extra-µC Quasi nur die Programmwahl mache. D.h. der "Start-PIC" macht die Kartenansteuerung, Displayansteuerung und Tastenauswertung. Wenn ein Programm geladen wird, wird überprüft, ob das das als letztes gestartetes Programm ist, und wenn nicht, wird quasi der PIC gebrannt und gestartet. Ist zwar von hinten durch die Brust ins Auge, aber sollte eigentlich so gehen.
Achso, kritik an meinem Vorschlag höre ich gerne und der Hintergrund warum SOIC oder DIP -> Wenn das schreiben fehl schlägt, kann man eine Fehlermeldung rausgeben und man kann den µC ausbauen, da man ja evtl irgendwann die 1000 Schreibzyklen durch hat bzw. Speicherstellen im Flash kaputt gehen können.
Also zum Thema Externes Laden! Das ist ziemlich enttäuschend, da ein Z80A im Schneider CPC464 das schon vor 25 Jahren draufhatte. Damit dürfte sich das Thema Microcontroller denn wohl erledigt haben! Da werd ich mich nach einem Prozessor umschauen müssen, der sowas kann. Eigentlich schade, STK500 x 10 Controller für nix gekauft. naja. Danke für alle Antworten!
Mathias schrieb: > Da werd ich mich nach einem Prozessor umschauen müssen, der sowas kann. Ganz einfach: Harvard-Architektur: Geht nicht. Von Neumann-Architektur: Geht. > Eigentlich schade, STK500 x 10 Controller für nix gekauft. Machs wie all die andern, die am AVR Programme von SD-Card/Dataflash ausführen: Interpreter/VM in den AVR, Basic/P-Code/Forth/... auf die SD-Card.
Hallo meines Wissens können das einige der C2000 Familie von TI. Dort gibt es auch welche die haben gar kein Flash sondern nur RAM die müssen den Code zu Anfang von irgendwo extern laden
hmm ich glaub ich hab sowas hier in der bastelkiste... MX10FMAXDPC auf einem digital audio decoder board.
Auch so 08/15 MSP430 für wenig Geld können das. Neulich konnte man da eine komplette "Entwicklungsumgebung", das "LaunchPad" für ein paar wenige Dollars (4$ ?) kaufen. Beitrag "MSP430 C-Funktionen vom RAM ausführen?" Aber ob sich das Lohnt? Schliesslich ist da im Vergleich zum Flash immer recht wenig Ram drauf.
> Da werd ich mich nach einem Prozessor umschauen müssen, der sowas kann. Bei Controllern von Renesas ist das kein Problem. Und bei vielen anderen vermutlich auch nicht. Gerade diese unterschiedliche Behandlung von Ram und Rom bei den AVRs ist sehr nervig. Weniger allerdings zum reinladen von Programmen. Das macht man ja eigentlich nur zum updaten der Firmware also eher selten, schlimmer finde ich das ganze gehampel wenn man Daten mal im Ram, Eprom oder Rom liegen hat und man da unterschiedliche Funktionen fuer den Zugriff braucht. > Dort gibt es auch welche die haben gar kein Flash sondern nur RAM die > müssen den Code zu Anfang von irgendwo extern laden Oder SH2A von Renesas. Laedt beim booten das Programm aus einem seriellen Flash ins Ram und laeuft. Dann ist das programmieren auf dem Controller genauso wie auf dem PC. Aber sowas hat nicht nur Vorteile. Zeigerfehler merkt man eher. Olaf
Schorsch schrieb: > Neulich konnte man da eine komplette "Entwicklungsumgebung", das > "LaunchPad" für ein paar wenige Dollars (4$ ?) kaufen. Die da verwendeten MSP430-Varianten haben so wenig RAM, daß das illusorisch ist, nämlich nur 128 bzw. 256 Bytes. Mit einem "großen" MSP430 wie dem 'F5438 sieht das anders aus, der hat 16 kiB RAM. Eine Alternative sind ARMe, beginnend mit dem LPC2106 (64 kiB RAM) und nach oben offen bei Nutzung eines externen Speicherinterfaces ...
Das Grundproblem war eigentlich, daß ich einen Z80 nehmen wollte (der kann das), mich aber dann für die eher neueren AVR´s entschieden habe. Prinzipiell geht es da um die Grundidee, ein historisches (CPC464) Computersystem mit heutiger Technik nachzubauen (Energiesparend, klein, 20x schneller, höhere Auflösung etc.) Da man außer Bootloader noch ein komplettes Betriebssystem ins ROM reinquetschen muß, und alle sonstigen Programme von Micro-SD-Card gelesen werden sollen ist also ein AVR definitiv erledigt.
Mathias schrieb: > ist also ein AVR definitiv erledigt. Ja, wie auch MCS-51 und vermutlich auch die meisten PICs. Sieh Dir einfach mal die ARMe mit Cortex-M3-Kern an, da dürftest Du was ausreichend leistungsfähiges und flexibles finden. Möchtest Du auf dem System auch die alten Z80-Programme des Schneider-Systems laufen lassen? Dann müsstest Du Dir auch noch Gedanken um einen Emulator machen, was --zumindest theoretisch-- auch die AVRs wieder ins Spiel bringt, denn der emulierte Code wird ja vom Emulator ausgeführt, und kann daher auch beim AVR stehen wo er will. In einem anderen Thread beschäftigt sich gerade jemand damit, einen 6502-Emulator auf ARM-Basis zu entwickeln, sein Ziel ist wohl die Emulation eines VC64.
Ja, für so etwas ist eher ARM das Mittel der Wahl. Die LPC2xxx von NXP können teilweise externen Speicher benutzen, und natürlich führen sie Programmcode aus dem RAM aus - auch die Varianten mit internem RAM. Manche Typen haben nicht einmal Flash, dafür aber vollen Daten- und Adressbus. Wer TQFP-Gehäuse löten kann, ist natürlich klar im Vorteil, in DIP gibt es diese Vielbeiner nicht. Ein serieller Bootloader ist bereits drin. Schnittstellen gibt es massig, vor allem SPI (für die Speicherkarte) und UARTs. Das gern verwendete Arbeitspferd der Reihe ist der LPC2378. Bietet auch Ethernet, USB nur Device-Port. Hat aber immerhin 144 Pins.
Mathias schrieb: > Da man außer Bootloader noch ein komplettes Betriebssystem ins ROM > reinquetschen muß, und alle sonstigen Programme von Micro-SD-Card > gelesen werden sollen ist also ein AVR definitiv erledigt. Hallo, das hätte dir doch von Anfang an klar sein müssen: die SD-Card ist ein Speicher mit seriellem Interface! Kann also keinen Instruction Fetch bedienen - auch nicht mit einem Original Z80. Zum Lesen eines Bytes brauchst du ein Unterprogramm. Der Z80 hat einen Bus aus 16 Adress-, 8 Daten- und mindestens 3 Steuerleitungen - wo wolltest du die denn an die SD-Card mit ihren 8 Pins anschliessen?? Gruss Reinhard
Rufus Τ. Firefly schrieb: > Mathias schrieb: >> ist also ein AVR definitiv erledigt. > > Ja, wie auch MCS-51 und vermutlich auch die meisten PICs. Wobei es mit dem MCS-51 noch ganz gut geht: -89C??51/52 mit 4/8k internem Flash mit Bootloader -Adresslatch (74hc272 o.Ä.) -64k Ram an P0/R2 ~WR und ~PSEN ,von dem 4/8k vom internen Flash "verdeckt" werden damit stehen immer noch 15 I/O-Lines zur Verfügung. Einziger Nachteil ist (zummindest bei Standarttypen), das SPI in Software gemacht werden muss. Sollte mehr I/O benötigt werden, könnte ja ein Teil des Adressraumes statt mit RAM auch für was Anders dekodiert werden mfG ingo
Rufus Τ. Firefly schrieb: > Ja, wie auch MCS-51 und vermutlich auch die meisten PICs. Genau, es gibt bei den PICs Ausnahmen. Ich habe so eine Spielerei schon mal mit einem 8-Bit-PIC gemacht. Einige Typen (z.B. der PIC18F8722) haben ein externes Speicherinterface, an das man auch SRAM klemmen kann (mindestens 128kB sind da möglich). Ich hatte dann ein "Betriebssystem" in einem externen EEPROM abgelegt, welches nach jedem Reset von einem Bootloader zunächst in den SRAM kopiert wurde. Das Betriebssystem enthielt dann auch den ganzen FAT-Code usw. um Programme von SD-Karte nachzuladen und auszuführen. Ist bei mir allerdings im "proof-of-concept"-Stadium geblieben, da mir irgendwie das Anwendungsgebiet für das Konstrukt fehlte...
Colt Fish schrieb: > ... Einige Typen (z.B. der PIC18F8722) > haben ein externes Speicherinterface, an das man auch SRAM klemmen kann dann kannst du aber auch ein EProm anschliessen und dir den Bootloader sparen. Ist Geschmackssache, aber ich habe Firmware lieber in einem wirklich unveränderbaren Speicher. Gruss Reinhard
@Ingo W. schrieb: -89C??51/52 mit 4/8k internem Flash mit Bootloader -Adresslatch (74hc272 o.Ä.) -64k Ram an P0/R2 ~WR und ~PSEN ,von dem 4/8k vom internen Flash "verdeckt" werden Gibt es für diese Aktion irgentwo ein Tutorial??? Wie gesagt ich bin nicht neu in der Welt der Computer, aber in der Welt der Microcontroller. Wie genau Funktioniert das mit dem Adresslatch?
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.