Good news for folks who were interested in Python on Microcontrollers
at PYCON UK (and anywhere else :-)
The "best" implementation that I have found so far is "Python-on-a-
chip" (P14p)
http://code.google.com/p/python-on-a-chip/
A project lead by Dean Hall. (If you know of something better, please,
please tell me)
Why "best":
1. It already works
2. P14p is runs in about 55 KB+ program memory (flash) and 8KB RAM (to
be useful), so just about fits on an Arduino Mega, and definitely fits
in slightly bigger MCUs.
It does have some missing features:
http://code.google.com/p/python-on-a-chip/source/browse/docs/src/PyMiteFeatures.txt
My Python is so poor, that I feel uncomfortable. I have no problem
with 'exec' being missed out :-)
I do feel uncomfortable (in theory) about 'try', 'except' and
'finally' being missing, but they do feel like pretty sophisticated
concepts to use on a microcontroller. I first saw exceptions in Green,
which became the Ada programming language, a language explicitly
designed for embedded programming. I saw them again in C++, then Java
(I've tried to teach all of them at undergraduate and post grad). IMHO
it requires programming maturity to use them well, but I am always
unhappy to use "cut-down" implementations in order to teach something.
If anyone can find the time, I'd be grateful if folks would tell me if
they think I am "barking up the wrong tree" (or simply "barking":-) by
focusing on P14p.
In the absence of guidance, I will try to keep chipping away:-)
Anyway, while PYCON UK was happening (down the pub:-), 'Dave' of
LeafLabs published this small, but encouraging blog:
http://leaflabs.com/2011/09/pymite/
He has got interactive PyMite (part of Python-on-a-chip) working on an
STM32F103 (ST Micro Cortex-M3 ARM) "Maple" !
I base my boards on the LeafLabs work, so this is excellent news. I
missed this blog until Monday, so I apologise if anyone at PYCON UK
feels I was asking questions unnecessarily.
I currently use Arduinos C/C++ and the Arduino libraries for my
workshops, but I am trying to move to the much more powerful ARM
microcontroller; there are some projects which people ask about which
are much more practical on faster, 32-bit MCUs with better peripherals.
LeafLabs IDE is a fork of Processing (the base for the Arduino-IDE)
and uses the same gcc C/C++ toolchain, but with LeafLabs libraries, so
it isn't a big leap from Arduino.
As folks who have done Microcontroller development will tell you,
debugging C/C++ code on a microcontroller without hardware debug
support can get quite hard. I don't use hardware debug with kids for a
bunch of reasons (I'm happy to explain if anyone asks).
So, being able to debug a live program, by printing variables, or
running fragments of code, in the same programming language as the
program is a significant step forward :-)
I think that might be teachable. Actually, I think it might offer a
completely different way to learn.
Please don't assume I think this is "the way" to get Python into the
hands of learners. I think people learn for many reasons, with many
goals. This *broadens* the reach of Python (to include me and smaller
MCUs:-). Of course, I still need to understand it!
GB-)
PS - Bog thank you to people for encouraging my microcontroller
efforts in education (children and adults) at PYCON UK
_______________________________________________
python-uk mailing list
python-uk@python.org
http://mail.python.org/mailman/listinfo/python-uk