Cómo crear Forth para dispositivos integrados

Hasta ahora acabo de encontrar este documento que proporciona una guía para lograrlo: MOVING FORTH. Parte 1: Decisiones de diseño en el cuarto kernel

  1. ¿Hay una guía más reciente?

  2. ¿Qué Forth es mejor para ese propósito?

Planeo usarlo con PIC16F877A, y sé que PicForth existe, pero es solo un compilador, no un sistema para comunicarse con una ventana de terminal mediante una conexión en serie (por eso voy a usar Forth).

Parece que un PIC16 no será adecuado para pForth; Actualicé mi respuesta para recomendar un PIC32 en su lugar.

Respuestas (3)

Echa un vistazo a Mecrisp Forth . Lo he estado usando en microcontroladores STM32.

Se compila a aproximadamente 25K y probablemente sea mucho trabajo (lenguaje ensamblador) para que funcione en un PIC32. Pero si lo hace, tendrá una implementación pequeña y rápida de Forth. Si lo haces, házmelo saber.

Vale la pena echarle un vistazo, ya que es una implementación de Forth tan vanguardista como he visto.

Incluso las partes más pequeñas del STM32 son órdenes de magnitud más grandes que el PIC16 al que el autor quería apuntar.
No publiques información personal en las respuestas.
Encontré lo mismo y usé stm32f103 porque tienen el mismo precio, pero usé la versión personalizada de subprocesos indirectos y usé el código de mecrisp"compilar en RAM y FLASH", jones adelante"modelo" y hforth"multitarea". Utilicé subprocesos indirectos para ser portado fácilmente y creo que la optimización no es una buena idea "inyectar código ensamblador es la buena solución de la compilación cruzada". Por cierto, mecrisp adelante es muy bueno, vea este documento hightechdoc.net/mecrisp-stellaris/_build/html/…

Es posible que desee consultar pForth , que es una implementación portátil en C. El PIC16F877A tiene 14K de Flash y solo 368 bytes de RAM, por lo que no hay forma de que pForth encaje. El PIC16F877A también tiene una pila de hardware de 16 de profundidad que se usa solo para las direcciones de retorno y no tiene una pila de parámetros. Estas restricciones probablemente habrían descartado el uso de un PIC16 para pForth de todos modos, incluso si pudiera obtener uno con suficiente Flash y RAM.

Según la respuesta de gbarry, parece que necesitará un microcontrolador mucho más grande para pForth. También puede omitir el PIC18 (que tiene un tamaño de programa máximo de 128K), y también el PIC24 (que también tiene un máximo de 128K) e ir con un PIC32. El PIC32MX170F256B tiene 256K de Flash y 64K de RAM y cuesta menos de $4 . Sin embargo, viene en un DIP de 28 pines en lugar de uno de 40 pines.

También es posible que desee consultar los siguientes libros:

Programación de un lenguaje orientado a problemas: Forth: cómo funcionan las partes internas por Charles H. Moore (el creador original de Forth)

Este libro solo está disponible como libro Kindle, pero puede obtener un lector gratuito para la PC y la mayoría de los dispositivos portátiles como iPhone, iPad y equivalentes de Android.

Técnicas de aplicación de Forth: Cuaderno del curso , 5.ª edición por Elizabeth D. Rather (quien fue cofundadora de Forth, Inc.)

Descargué pForth siguiendo el consejo de @tcrosley, compilé bajo OS X, y la imagen independiente es de 180 K. Este es uno de los varios obstáculos que me han impedido lograr un objetivo similar al del autor de la pregunta. Solo que lo he estado intentando durante 15 años :) La mayoría son demasiado grandes, algunos carecen de un intérprete, algunos no están en C, algunos no se compilarían, algunos esperaban un entorno de Windows, etc.

La información provista por Brad Rodríguez todavía es aplicable a la construcción de una serie de sistemas FORTH. No estoy al tanto de ninguna actualización, y dado que es su sitio, ahí es donde estarían las actualizaciones. Recientemente me estaba refiriendo a estos documentos y todavía estoy intentando crear mi propio FORTH pequeño escrito en C. He tenido un poco de éxito, pero puedo decirles que hay mucho en los detalles. Este no es el tipo de cosas que puede hacer al mismo tiempo que intenta avanzar en un proyecto integrado.

Tenga en cuenta que FORTH originalmente esperaba tener un bloque de RAM donde se compilan las nuevas palabras del diccionario. O tiene que lidiar con poca RAM o encontrar una forma de escribir en el flash del programa.

También probé algo llamado FlashForth (este está escrito en ensamblador) y funcionó, pero lo puse en un PIC18F6620 bastante grande. Me distraje tratando de descifrar las partes internas del diccionario y dónde se almacenaban las cosas, así que nunca llegué a donde pudiera desarrollarlo. Le sugiero que lo pruebe si puede conseguir algo de la familia PIC18F... aunque solo sea para probarlo. En ese sentido, hay algunas piezas de 18F que son compatibles con pines con sus contrapartes de 16F, por lo que si el costo es una preocupación, solo use las piezas más grandes para el desarrollo si FORTH no se incluye en el producto final.

Gracias por la información útil sobre el tamaño de pForth. He modificado mis recomendaciones de un PIC16F a un PIC32MX. Todavía por menos de $4 y disponible en un paquete DIP, también me di cuenta de que el PIC16 probablemente no sería una buena opción para Forth, ya que tiene una pila de retorno de hardware limitada de 16 profundidades y no tiene una pila de parámetros.