Tengo un microcontrolador mbed que tiene un pequeño ARM Cortex M3 . Básicamente, mis recursos efectivos para el proyecto son ~ 25 KB de RAM y ~ 400 KB de Flash. Para E / S, tendré un teclado PS / 2 , un framebuffer VGA (con salida de caracteres) y una tarjeta SD para guardar / cargar programas (hasta un par de MB quizás).
Pregunto porque estoy tratando de averiguar qué lenguaje de programación implementar en la cosa. Estoy buscando un lenguaje interpretado que me sea fácil de implementar y que no rompa el banco de mis recursos. También tengo la intención de que esto sea al menos posible escribir en el dispositivo en sí, aunque el editor se puede interpretar (sí, bootstrapping).
De todos modos, he visto algunos idiomas simples. Algunos buenos candidatos:
¿Alguien ha hecho algo como esto o sabe de algún idioma que se ajuste a este proyecto de ley o tenga comentarios sobre mis tres candidatos hasta ahora?
Respuestas:
Por lo que ha descrito, FORTH es probablemente ideal. FORTH se ejecuta habitualmente en plataformas mucho más pequeñas que la suya. (16K en total es una gran máquina para FORTH.) Habrá una curva de aprendizaje seria involucrada, si nunca antes has visto FORTH.
Hay una implementación de Scheme llamada TinyScheme (como recuerdo), que podría valer la pena. Lo escuché por primera vez de un artículo en Slashdot, sobre un tipo que lo usó como el núcleo de su motor de malware. (Sí, es cierto: su trabajo consistía en escribir malware, para algo u otro, y hacerlo en TinyScheme significaba que su carga útil podría ser mucho menor).
fuente
Voy a argumentar que Lua es, con mucho, su mejor apuesta. Puede compilar Lua en cualquier lugar que C pueda ejecutar y es uno de los lenguajes de script más ligeros que existen. Es enormemente flexible como idioma y las habilidades también son bastante transferibles. Incluso hay una versión específicamente integrada de Lua .
Anexo: Al parecer, es posible reducir la huella de la memoria a poco más de 25K.
Anexo 2 - Las cosas se vuelven locas: esta pregunta SO plantea una opción . Squirrel es un lenguaje del que he oído hablar pero que nunca he usado. Aparentemente es incluso más pequeño que Lua debido al uso del recuento de referencias.
fuente
eLua
pero está fuera de mi rango de recursos. Básicamente, se requieren 32K de RAM para cualquier cosa útilEn cuanto a los lenguajes de secuencias de comandos integrables, los 2 con los que estoy familiarizado son LUA y PAWN .
Creo que hay versiones de Python y otros lenguajes similares portados a sistemas embebidos, pero tienden a ser la variedad Linux embebida. Dependiendo de su plataforma (no tengo idea si es una pequeña MCU con 8K ROM o una PC integrada), esa podría ser una opción.
fuente
Recuerdo haber leído hace algún tiempo sobre Tcl / Tk y su uso en enrutadores.
Extracto del párrafo "Desarrollo integrado" que se encuentra en http://www.tcl.tk/about/uses.html :
fuente