So bauen Sie Forth für eingebettete Geräte

Bisher habe ich nur dieses Papier gefunden, das eine Anleitung bietet, um dies zu erreichen: WEITER BEWEGEN. Teil 1: Designentscheidungen im Forth-Kernel

  1. Gibt es eine neuere Anleitung?

  2. Welcher Forth ist für diesen Zweck besser geeignet?

Ich plane, es mit PIC16F877A zu verwenden, und ich weiß, dass PicForth existiert, aber es ist nur ein Compiler, kein System, um über eine serielle Verbindung mit einem Terminalfenster zu kommunizieren (deshalb werde ich Forth verwenden).

Sieht so aus, als wäre ein PIC16 nicht für pForth geeignet; Ich habe meine Antwort aktualisiert, um stattdessen einen PIC32 zu empfehlen.

Antworten (3)

Schau mal bei Mecrisp Forth vorbei . Ich habe es auf STM32-Mikrocontrollern verwendet.

Es kompiliert auf etwa 25K und ist wahrscheinlich eine Menge Arbeit (Assemblersprache), um es auf einem PIC32 zum Laufen zu bringen. Aber wenn Sie das tun, haben Sie eine schnelle kleine Forth-Implementierung. Wenn ja, lass es mich wissen.

Es ist einen Blick wert, da es eine so innovative Forth-Implementierung ist, wie ich gesehen habe.

Selbst die kleinsten STM32-Teile sind um Größenordnungen größer als der PIC16, auf den der Autor abzielen wollte.
Posten Sie keine persönlichen Informationen in Antworten
Ich habe das gleiche gefunden und stm32f103 verwendet, da sie den gleichen Preis haben, aber ich habe eine benutzerdefinierte indirekte Threading-Version verwendet und Code von mecrisp "compile to RAM and FLASH", jones forth "model" und hforth "multitasking" verwendet. Ich habe indirektes Threading verwendet, um es einfach zu portieren, und ich denke, dass die Optimierung keine gute Idee ist. "Das Einfügen von Assemblercode ist die nette Lösung aus der Cross-Kompilierung". BTW mecrisp her ist sehr gut, siehe dieses Dokument hightechdoc.net/mecrisp-stellaris/_build/html/…

Vielleicht möchten Sie pForth ausprobieren , eine portable Implementierung in C. Der PIC16F877A hat 14 KB Flash und nur 368 Byte RAM, sodass pForth auf keinen Fall passen wird. Der PIC16F877A hat auch einen 16-fachen Hardware-Stack, der nur für Rücksprungadressen verwendet wird, und keinen Parameter-Stack. Diese Einschränkungen hätten wahrscheinlich sowieso ausgeschlossen, einen PIC16 für pForth zu verwenden, selbst wenn Sie einen mit genügend Flash und RAM bekommen könnten.

Basierend auf der Antwort von gbarry sieht es so aus, als würden Sie einen viel größeren Mikrocontroller für pForth benötigen. Sie können auch den PIC18 (der eine maximale Programmgröße von 128 KB hat) und den PIC24 (der ebenfalls maximal 128 KB hat) überspringen und mit einem PIC32 fortfahren. Der PIC32MX170F256B verfügt über 256 KB Flash und 64 KB RAM und kostet weniger als 4 US-Dollar . Es ist jedoch mit einem 28-Pin-DIP anstelle eines 40-Pin-DIP ausgestattet.

Vielleicht möchten Sie sich auch die folgenden Bücher ansehen:

Programmieren einer problemorientierten Sprache: Forth - wie die Interna funktionieren von Charles H. Moore (dem ursprünglichen Schöpfer von Forth)

Dieses Buch ist nur als Kindle-Buch erhältlich, aber Sie können einen kostenlosen Reader für den PC und die meisten tragbaren Geräte wie iPhone, iPad und Android-Äquivalente erhalten.

Forth Application Techniques: Course Notebook , 5th Edition von Elizabeth D. Rather (die Mitbegründerin von Forth, Inc. war)

Ich habe pForth auf Anraten von @tcrosley heruntergeladen, kompiliert unter OS X, und das Standalone-Image ist 180 KB groß. Dies ist einer von mehreren Stolperpunkten, die mich davon abgehalten haben, ein ähnliches Ziel wie das des Fragestellers zu verwirklichen. Nur habe ich es seit 15 Jahren versucht :) Die meisten sind zu groß, manche haben keinen Interpreter, manche sind nicht in C, manche würden nicht bauen, manche erwarteten eine Windows-Umgebung und so weiter.

Die von Brad Rodriguez bereitgestellten Informationen sind immer noch auf den Bau einer Reihe von FORTH-Systemen anwendbar. Mir sind keine Updates bekannt, und da es sich um seine Website handelt, würden dort alle Updates sein. Ich habe mich kürzlich auf diese Papiere bezogen und versuche immer noch, mein eigenes kleines FORTH zu erstellen, das in C geschrieben ist. Ich hatte ein wenig Erfolg, aber ich kann Ihnen sagen, es steckt viel in den Details. Dies ist nicht die Art von Dingen, die Sie tun können, während Sie gleichzeitig versuchen, Fortschritte bei einem eingebetteten Projekt zu erzielen.

Beachten Sie, dass FORTH ursprünglich erwartet hatte, einen RAM-Block zu haben, in dem neue Wörterbuchwörter kompiliert werden. Sie müssen entweder mit wenig RAM auskommen oder sich eine Möglichkeit einfallen lassen, in den Programm-Flash zu schreiben.

Ich habe auch etwas namens FlashForth ausprobiert (dieses ist in Assembler geschrieben) und es hat funktioniert, aber ich habe es auf einen ziemlich großen PIC18F6620 gesetzt. Ich war abgelenkt, als ich versuchte, die Interna des Wörterbuchs herauszufinden und herauszufinden, wo Sachen gespeichert waren, also kam ich nie dorthin, wo ich damit entwickeln konnte. Ich schlage vor, es zu versuchen, wenn Sie etwas in der PIC18F-Familie in die Hände bekommen können ... auch nur, um es zu versuchen. In diesem Sinne gibt es einige 18F-Teile, die mit ihren 16F-Gegenstücken Pin-kompatibel sind. Wenn die Kosten also eine Rolle spielen, verwenden Sie einfach die größeren Teile für die Entwicklung, wenn FORTH nicht tatsächlich in das Endprodukt einfließt.

Vielen Dank für die nützlichen Informationen zur Größe von pForth. Ich habe meine Empfehlungen von einem PIC16F zu einem PIC32MX geändert. Immer noch unter 4 $ und in einem DIP-Paket erhältlich, erkannte ich auch, dass der PIC16 wahrscheinlich nicht gut zu Forth passen würde, da er einen begrenzten 16-tiefen Hardware-Return-Stack und keinen Parameter-Stack hat.