Hallo, ich will folgendes programmieren: Auf meinem Mikrocontrollersystem will ich eine Art Shell bauen. Also so ähnlich wie die Konsole unter Windows oder Linux. Der Controller ist über RS232 mit einem PC gekoppelt, auf dem ein Terminal läuft. Dort gibt man Befehle ein, und die führt der Mikrocontroller dann aus. Das ansich wäre ja noch nicht so schwierig. Komplizierter wird es, wenn das ganze möglichst flexibel bzw. modular sein soll. Also ich möchte möglichst einfach neue 'Befehle' implementieren können, am besten wärs wenn das auch dynamisch (also zur Laufzeit!) möglich wäre. Mal ganz grundsätzlich: Wie könnte man sowas anpacken? Ziel und Zweck der Sache ist eigentlich, dass man Grundlegende Dinge in so einer Shell verpacken könnte. z.B. Programm runterladen, bestimmte Speicherbereiche ändern und so weiter. Halt so debugging-Sachen. Und je nach Anwendung könnte man dann noch weitere Befehle implementieren. Habt ihr schon mal sowas gemacht? Extrem nützlich wäre es auch, wenn man verschiedene 'Pakete' programmieren könnte. Also jeweils kleine, unabhängige Programme, die man nach belieben zusammensetzen könnte. Ziel davon wäre es, dass man sich die Software für verschiedene Mikrocontroller schön modular zusammenbauen könnte. So als Beispiel: Man hat ein Paket für CAN, eines für USB und eines für Ethernet. Auf einem kleinen 44pin-ARM, wo z.B. nur der CAN-Controller verwendet wird, lädt man nur das CAN-Paket runter. Auf einem anderen will man dafür USB und Ethernet verwenden, deshalb installiert man da noch die beiden anderen Pakete. Der Zweck davon wäre, dass man nicht immer wieder extra was neues schreiben muss, sondern nur noch fertige 'Bauklötzchen' zusammenschustern muss. Hat dazu jemand ne Idee, wie das gehen kann?
So genau kenne ich mich damit nicht aus aber es gibt doch das µC linux ist das nicht sowas? Habe mal einen ATTiny inner Platine für ein CNC Fräse gesehen die konnte man über das Terminalprogramm ansprechen und Einstellungen ( Konfigurieren )und nebenbei hat der µC noch 1 Achse der CNC Fräse Gesteuert. bei: http://www.peters-cnc-ecke.de Das nennt sich UHU Servocontroller. Da gibt es dann kleine befehle zum setzen von Parametern oder zum anzeigen von eingestellten Parametern usw.
Hallo, ich habe für meine Teleskopsteuerung so eine Shell programmiert. Sie arbeitet mit Tabellen, die Schlüsselwörter (Befehle) mit Sprungadressen für die entsprechenden Routinen enthalten. Die jeweilige Routine holt dann weitere Parameter aus dem Eingabestring ab. Diese können Zahlen (beginnend mit Ziffern, '0x' oder '0b') oder wiederum Labels sein. Hier ist der Quelltext zu finden: http://www.martin-cibulski.de/atm/mount_controller_4/mc_4_asm_main/index_de.htm Die Shell steht in monitor.asm. Modular ist das Ganze auch, weil es mehrere Befehlstabellen gibt, die nacheinander durchsucht werden. In monitor.asm gibt es dazu die 'mon_master_label_tab', die auf die Untertabellen verweist. Gruß, Martin
Wenn Du Dich mit UPN anfreunden kannst, dann wäre vielleicht ein FORTH das richtige. Forth gibt es überall für AVR's, ARM's und alle möglichen Prozessoren. Gruss Frank
Hallo, ja eigentlich wäre ja uC Linux gut. Aber damit kenne ich mich nun wirklich nicht aus, und so wie ich das einschätze, braucht das wohl auch ziemlich viel RAM bzw. FLASH, was nicht in jedem Fall zur Verfügung steht. Aber gut wäre es auf alle Fälle.... @Frank: das mit UPN und FORTH interessiert mich. Du meinst aber doch wohl nicht DAS UPN, das auch bei hp-Taschenrechnern zum Einsatz kommt oder? ;)
Gast wrote: > @Frank: > das mit UPN und FORTH interessiert mich. > Du meinst aber doch wohl nicht DAS UPN, das auch bei > hp-Taschenrechnern zum Einsatz kommt oder? ;) Doch, genau das meine ich. Wenn es Dich interessiert - schau Dir ruhig mal FORTH an. 1 1 + . <enter> 2 Bei den meissten Forth bekommst Du ein Terminal, kannst "online" das Programm erweitern. Wird im Flash gespeichert. Ist halt UPN :-) Ich kenne es zwar nur für AVR's und PC's, aber gibt es auch für ARM Vielleicht kann ja jemand von den Kollegen hier ein's vorschlagen. Gruss Frank
Klingt gut. Ich hab nen funktionierenden Commandline-Parser, den könnte man ganz leicht nach C portieren und verwenden.
Das nannte man früher Monitor damit wurde der uC fernbedienbar, http://forums.freescale.com/t5/8-Bit-Microcontrollers/Sorce-code-and-Doc-for-BUFFALO-or-other-Monitor-for-68HC11/td-p/2121 und die MS-DOS Kommandozeile (oder CP/M oder Bourne) verfolgt genau den Ansatz, alles was noch nicht als eingebautes Kommando bekannt ist, als Extension zu suchen und aufzurufen, dort hat auf Diskette/Platte und nicht im Speicher, aber im Prinzip ist das nichts anderes. Deine Idee ist also nichts Neues, sondern seit 50 Jahren gängige Praxis, und die Leute sind zu dutzenden leicht unterschiedlichen Lösungen gekommen, bei denen du nun bewerten darfst, welcher Aufwand welchen Effekt wert war und dann hältst du dich einfach an so eine Vorlage. Die meisten sind inzwischen im Source verfügbar.
Gast schrieb: > Extrem nützlich wäre es auch, wenn man verschiedene 'Pakete' > programmieren könnte. Also jeweils kleine, unabhängige Programme, die > man nach belieben zusammensetzen könnte. Ziel davon wäre es, dass man > sich die Software für verschiedene Mikrocontroller schön modular > zusammenbauen könnte. Genau das macht man doch. Wer zum Beispiel einen CAN-Treiber braucht, der linkt ihn in seinem Programm mit - den schreibt man ja in der Regel nicht selbst. > So als Beispiel: Man hat ein Paket für CAN, eines für USB und eines für > Ethernet. Auf einem kleinen 44pin-ARM, wo z.B. nur der CAN-Controller > verwendet wird, lädt man nur das CAN-Paket runter. Auf einem anderen > will man dafür USB und Ethernet verwenden, deshalb installiert man da > noch die beiden anderen Pakete. Der Zweck davon wäre, dass man nicht > immer wieder extra was neues schreiben muss, sondern nur noch fertige > 'Bauklötzchen' zusammenschustern muss. Und wie genau soll das zur Laufzeit gehen? Das CAN-Paket soll ja vermutlich im Flash-Speicher landen. Oder nicht? Ansonsten, um Treiber (eben für CAN oder für anderes) dynamisch zu laden oder aus dem (Haupt-)Speicher wieder zu entfernen, braucht es eben ein Betriebssystem. Irgendwie sehe ich noch nicht so richtig, was Du machen willst, was aber mit modularer Programmierung in C und Linken der entsprechenden Bibliotheken die man braucht und Weglassen derer, die man halt nicht braucht, nicht gehen soll... dass man die Treiber für verschiedene Schnittstellen sehr oft ändert, erscheint mir jedenfalls als ein leicht exotischer Anwendungsfall.
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.