Hat schon mal jemand versucht, auf dem Arduino Uno selbst einen kleinen
Editor zu schreiben?
Ich meine einen Editor, mit dem man sich mit dem Terminalprogramm
verbinden kann und dann z.B. einen String zu verändern.
Erinnert mich an gruslige EDLIN-Zeiten unter DOS vor
40 Jahren. Komfort = NULL, oder eher MINUS-MINUS-MINUS.
(Der Editor sollte ja nur wenige KB Speicher kosten!)
- Linuxer tun sich das aber auch heute noch gern an. ;-)
Muss vielleicht eine seltsame Befriedigung liefern.
Mit RS-232-Terminal?
Nette Idee - besonders, weil du bei neueren PCs keine
Schnittstelle mehr dafür hast. Und bei WIN10 auch große
Schwierigkeiten hast, eine "anerkannte" Serial-Port-Karte
zu beschaffen UND mit Treiber einzubinden.
Naja - Vielleicht gehts über RS232-USB-Umsetzer!
Erzähl doch mal, was du bisher geschafft hast...
Programmieren auf dem Arduino selbst ist schwierig. Der Arduino-Compiler
läuft nicht auf einem Arduino. Ein reiner Texteditor ist ein bisschen
Arbeit, aber kein Problem.
Wichtiger ist aber, wo der Editor seine Daten herholt und wo er sie
hinschreibt. RAM ist einfach, aber witzlos. Der interne Flash ist
deutlich schwieriger schreibend anzusteuern und eine externe SD-Karte
braucht zusätzliche Hardware und Treiber.
Benedikt S. schrieb:> Kann man den AVR Flash überhaupt währendes des Betriebs> umschreiben?
Ja, das machen Bootloader auch, um z.B. Updates via UART zu ermöglichen.
Benedikt S. schrieb:> Kann man den AVR Flash überhaupt währendes des Betriebs umschreiben?
Klar. Jedenfalls bei bei allen AT(X)megas und bei den allermeisten
ATtinies auch.
Natürlich sind jeweils die relevanten Fuses entsprechend zu setzen und
bei den AT(X)megas ist zumindest die entscheidende Instruktion ("spm")
explizit im Bootloader-Bereich zu plazieren.
In einer vernünftigen Programmiersprache ist das alles überhaupt kein
Problem und komplett und leicht nachvollziehbar direkt im Quelltext zu
schreiben. In C allerdings muss man schwere Syntaxblähungen und
Linker-Magie bemühen...
Ja, C ist ist schon sowas von geil und einfach...
Zunächst sei erwähnt, dass ich in der Überschrift nach einem
Zeileneditor gefragt habe und nicht nach einer Programmiersprache.
Aber nichts desto trotz:
>Editor, Kompiler, usw...>http://flashforth.com/
Mit Forth habe ich schon einiges gemacht.
Meistens wird heutzutage auf Mikrocontrollern in C programmiert und es
gibt sehr viel Software und Bibliotheken. Deshalb macht Forth für mich
nur dann Sinn, Wenn man den Forth Interpreter/Compiler in ein
vorhandenes C-Programm einbinden kann. Dann kann man das Forth oder ein
Subset davon für Debugging-Zwecke und schnelle Tests im C-Programm
nutzen.
Damit das Ganze Sinn macht, soll der Speicherabdruck ziemlich klein
sein. 4-5KByte würde ich dem System zugestehen.
Jacko schrieb:> Nette Idee - besonders, weil du bei neueren PCs keine Schnittstelle mehr> dafür hast. Und bei WIN10 auch große Schwierigkeiten hast, eine> "anerkannte" Serial-Port-Karte zu beschaffen UND mit Treiber> einzubinden.
Komisch, da habe ich das doch glatt falsch gemacht. Ich hatte einfach
die erstbeste Karte beim Reichelt bestellt und in den Slot gestopft.
Lief ohne Probleme.
Benedikt S. schrieb:> Kann man den AVR Flash überhaupt währendes des Betriebs> umschreiben?
Wie macht der AVR aus Text dann Maschinencode?
Packst du den Compiler/Assembler mit auf den AVR?
Passt der denn ins Flash?
Fragen über Fragen ;-)
Falls gemeint sein sollte:
Einen Text sereiell empfangen und im Speicher des AVR bearbeiten,
dagegen spricht gar nichts. C stellt viele Stringfunktionen zur
Verfügung, mit denen das wunderbar geht.
Mein MP3-Player hat zum Beispiel ein DOS-Ähnliches Benutzerinterface
über USB-CDC zum Testen von Funktionen. Mit Sachen wir "dir" "cd musik"
"play test.mp3" "set volume 60" und ähnlichem.
Das geht sehr schön mit strstr(); atoi(); snprintf(); und ähnlichem.
Koppel das mit FATFS, und einem richtgem "edit" steht nichts im Wege.
Warnung: String-Funktionen sind NICHT billig, was Flash angeht.
nicht“Gast“ schrieb:> Jacko schrieb:>> Nette Idee - besonders, weil du bei neueren PCs keine Schnittstelle mehr>> dafür hast. Und bei WIN10 auch große Schwierigkeiten hast, eine>> "anerkannte" Serial-Port-Karte zu beschaffen UND mit Treiber>> einzubinden.>> Komisch, da habe ich das doch glatt falsch gemacht. Ich hatte einfach> die erstbeste Karte beim Reichelt bestellt und in den Slot gestopft.>> Lief ohne Probleme.
Als wenn es heute noch Probleme damit gäbe. Entweder Karte oder USB-TTL
Wandler (mit machgeschaltetem MAX232 wers braucht).
Diese Horrorgeschichten stammen aus der dunklen Übergangszeit, als die
HW mäßigen seriellen Schnittstellen verschwunden sind, und die
USB-Wandler der ersten Stunde noch ein paar Macken hatten.
Manche Zeitgenossen bleiben eben ewig auf einem Stand und erzählen noch
ihren Urenkeln von Problemen die es schon lange nicht mehr gibt.
Markus schrieb:> Hat schon mal jemand versucht, auf dem Arduino Uno selbst einen kleinen> Editor zu schreiben?
In MCURSES ist ein Zeileneditor eingebaut, siehe
MCURSES: getnstr. Diese Funktion lässt sich aber nur innerhalb der
MCURSES-Umgebung nutzen, d.h. Du machst sämtliche Ausgaben
ausschließlich über MCURSES.
Irgendwie erschließt sich mir der Sinn des Ganzen nicht!
Um einen Editor zu betreiben braucht man das volle Programm der
Eingabemöglichkeiten - sprich einen Tastenathur.
Aus meiner Sicht nicht sonderlich sinnvoll - es sei denn - der User soll
seinen Namen, seine Adresse, und seine Schuhgröße eingeben.
Dazu ist aber wiederum eine Ausreichende Anzeige vonnöten.
Hoppla: Die Dinger nennen sich Terminal...
Die Frage ist wofuer man das braucht.
Wenn es fuer Debuggingzwecke sein soll, ich nehme dafuer flex.
Da kann ich mir einfach beliebige Testwoerte und Datenbereiche
definieren und der dazugehoerige Parser wird automatisch erzeugt
und ruft dann meine Testfunktionen mit den uebergebenen Parametern
auf. Erfordert am Anfang vielleicht 2-3h einarbeitung, aber die lohnen
sich.
Olaf
Jacko schrieb:> Erinnert mich an gruslige EDLIN-Zeiten unter DOS vor> 40 Jahren. Komfort = NULL, oder eher MINUS-MINUS-MINUS.> (Der Editor sollte ja nur wenige KB Speicher kosten!)
mit kbytes kannste schon ein Textverarbeitung schreiben, für einen
Zeileditor reichen ein paar Bytes. Was soll der denn auch mehr können
als char einfügen und Cursor_pointer hochzählen???
frühe Homecomputer brauchtes dergleichen im BIOS-RAM mit und einen
Basic-Interpreter oben drauf, plus Zeichensatz und hexmoni -> 20 kbyte.
>Wenn es fuer Debuggingzwecke sein soll, ich nehme dafuer flex.
Das kenne ich nicht:
https://www.tutorialspoint.com/flex/flex_overview.htm
Aber es hört sich eher nach etwas an, was man für Web-Applikationen
nutzt.