Eu tenho um microcontrolador mbed que possui um pequeno ARM Cortex M3 . Basicamente, meus recursos efetivos para o projeto são ~ 25 KB de RAM e ~ 400 KB de Flash. Para E / S, terei um teclado PS / 2 , um buffer de quadros VGA (com saída de caracteres) e um cartão SD para salvar / carregar programas (até alguns MB, talvez).
Eu pergunto porque estou tentando descobrir qual linguagem de programação implementar na coisa. Estou procurando uma linguagem interpretada que seja fácil de implementar e que não prejudique meus recursos. Também pretendo que isso seja pelo menos possível escrever no próprio dispositivo, embora o editor possa ser interpretado (sim, inicialização).
Enfim, eu olhei para alguns idiomas simples. Alguns bons candidatos:
Alguém já fez algo parecido com isso ou conhece algum idioma que se encaixa nesse projeto ou tem comentários sobre meus três candidatos até agora?
Respostas:
Pelo que você descreveu, FORTH é provavelmente o ideal. FORTH rotineiramente roda em plataformas muito menores que as suas. (O total de 16K é uma grande máquina para a FORTH.) Haverá alguma curva de aprendizado séria envolvida, se você nunca olhou para a FORTH antes.
Há uma implementação de esquema chamada TinyScheme (se bem me lembro), que pode valer a pena dar uma olhada. Eu ouvi sobre isso pela primeira vez em um artigo no Slashdot, sobre um cara que o usou como o núcleo de seu mecanismo de malware. (Sim, isso mesmo: o trabalho dele era escrever malware, para uma coisa ou outra, e fazê-lo no TinyScheme significava que a carga útil poderia ser muito menor.)
fonte
Vou argumentar que Lua é de longe a sua melhor aposta. Você pode compilar Lua em qualquer lugar em que C possa ser executado e é uma das linguagens de script mais leves existentes. É extremamente flexível como idioma e as habilidades também são transferíveis. Existe até uma versão especificamente incorporada do Lua .
Adendo: Aparentemente, é possível reduzir o espaço da memória para pouco mais de 25K.
Adendo 2 - As coisas ficam loucas: existe uma opção apresentada por essa pergunta do SO . Esquilo é uma linguagem que eu já ouvi falar, mas nunca usei. Aparentemente, é ainda menor que Lua devido ao uso da contagem de referência.
fonte
eLua
mas está fora do meu alcance de recursos. Basicamente 32K de RAM é necessário para qualquer coisa útilEm relação às linguagens de script incorporáveis, as duas com as quais estou familiarizado são LUA e PAWN .
Eu acho que existem versões do Python e outras linguagens desse tipo portadas para sistemas embarcados, mas elas tendem a ser a variedade Linux embarcada. Dependendo da sua plataforma (não faço ideia se é um pequeno MCU com 8K ROM ou um PC incorporado), isso pode ser uma opção.
fonte
Lembro-me de ler há algum tempo sobre o Tcl / Tk e seu uso em roteadores.
Trecho do parágrafo "Desenvolvimento incorporado", encontrado em http://www.tcl.tk/about/uses.html :
fonte