I would like to generate a list of high-level language interpreters and compilers (e.g. something that compiles LISP to C code) for microcontrollers.
I've done a bit of research so far that I will document here:
List of projects for running Python on microcontrollers: http://web.media.mit.edu/~nvawter/projects/pyMicro/
PyMite: http://wiki.python.org/moin/PyMite
python-on-a-chip: http://code.google.com/p/python-on-a-chip/
Armpit Scheme: http://armpit.sourceforge.net/
TinyScheme: http://tinyscheme.sourceforge.net/home.html
Minimal LISP Interpreter: http://www.sonoma.edu/users/l/luvisi/sl5.c
Embedded ML: http://embeddedml.sourceforge.net/Site/Intro.html
eLua: http://www.eluaproject.net/
Embedded JAVA: http://en.wikipedia.org/wiki/Embedded_Java
amforth: http://amforth.sourceforge.net/
TinyTCL: http://tinytcl.sourceforge.net/
Tiny BASIC: http://www.ittybittycomputers.com/IttyBitty/TinyBasic/index.htm
AVR shell: http://www.instructables.com/id/AVRSH-A-Command-Interpreter-Shell-for-ArduinoAVR/
Bitlash shell (AVR): http://bitlash.net/wiki/start
Transterpreter (occam-pi on AVR): http://www.transterpreter.org/
Rite (embedded Ruby) (will be released in 2011): http://www.slideshare.net/yukihiro_matz/rubyconf-2010-keynote-by-matz
Jal (pascal like) for PICs, compiler: http://www.casadeyork.com/jalv2/ libraries: http://code.google.com/p/jallib/
.NET Micro Framework (C# and VB.NET): http://netmf.codeplex.com/
This is a community wiki – please feel free to add to the list.
5 Answers 5
I would add Staapl to this list.
Staapl allows you to use Scheme macros as a metaprogramming tool on top of a forth-like stack language. Staapl currently targets the PIC18 chips.
Forth is definitely not a high level language, but the addition of Scheme on top of it eases the development.
Here is a good list from SO that lists languages targeted to micros, although I think you got most of them. I've added the ones missing, leaving out the C interpreters.
There are also programs that will compile C++ to C, and I have seen some experimental work to translate c# to c for micro use, but that seems unnecessary.
I'm in the process of installing the toolchain to use the Transterpreter with the Arduino. It lets you write occam-pi for the ATmega chip (which supports concurrency). There's also an occam-pi library that supports all of the Arduino functions:
http://projects.cs.kent.ac.uk/projects/kroc/trac/wiki/CrossBuilding
The Transterpreter is now part of the KRoC (Kent occam-pi system) project.
Some AVR interpreters:
- http://www.cqham.ru/tbcgroup/index_eng.htm
- http://www.jcwolfram.de/projekte/avr/chipbasic2/main.php
- http://www.jcwolfram.de/projekte/avr/chipbasic8/main.php
- http://www.jcwolfram.de/projekte/avr/main.php
- http://code.google.com/p/python-on-a-chip/
- http://www.avrfreaks.net/index.php?module=Freaks%20Academy&func=viewItem&item_id=688&item_type=project
- http://www.avrfreaks.net/index.php?module=Freaks%20Academy&func=viewItem&item_id=626&item_type=project
- http://www.avrfreaks.net/index.php?module=Freaks%20Academy&func=viewItem&item_id=460&item_type=project
Some AVR compilers:
- http://winavr.sourceforge.net
- http://www.iar.com/website1/1.0.1.0/107/1/
- http://www.mcselec.com
- http://www.e-lab.de/index_en.html
- http://www.mikroe.com/eng/categories/view/21/avr-compilers
I would like to add C# using the .NET Micro Framework. There are many ARM ports in use and it is well supported and documented. http://msdn.microsoft.com/en-us/library/cc533001.aspx
Some of the well known development boards out there:
Fez Panda/Domino Netduino and Netduino plus