python for microcontrollers
Guy Robinson
guy at NOSPAM.r-e-d.co.nz
Mon Aug 8 18:13:35 EDT 2005
How about just helping this project:
http://pyastra.sourceforge.net/
I know he's trying to rewrite it to work across multiple uC's (AVR,msp430 etc)
HTH,
Guy
Evil Bastard wrote:
> Hi all,
>
> I'm currently tackling the problem of implementing a python to assembler
> compiler for PIC 18Fxxx microcontrollers, and thought I'd open it up
> publicly for suggestions before I embed too many mistakes in the
> implementation.
>
> The easy part is getting the ast, via compiler.ast. Also easy is
> generating the code, once the data models are worked out.
>
> The hard part is mapping from the abundant high-level python reality to
> the sparse 8-bit microcontroller reality.
>
> I looked at pyastra, but it has fatal problems for my situation:
> - no backend for 18fxxx devices
> - only 8-bit ints supported
>
> I'm presently ripping some parts from the runtime engine of a forth
> compiler I wrote earlier, to add support for 8-32 bit ints, floats, and
> a dual-stack environment that offers comfortable support for local
> variables/function parameters, as well as support for simpler and more
> compact code generation.
>
> Python is all about implicitly and dynamically creating/destroying
> arbitrarily typed objects from a heap. I've got a very compact
> malloc/free, and could cook up a refcounting scheme, but using this for
> core types like ints would destroy performance, on a chip that's already
> struggling to do 10 mips.
>
> The best idea I've come up with so far is to use a convention of
> identifier endings to specify type, eg:
> - foo_i16 - signed 16-bit
> - foo_u32 - unsigned 32-bit
> - bar_f - 24-bit float
> - blah - if an identifier doesn't have a 'magic ending', it will
> be deemed to be signed 16-bit
>
> also, some virtual functions uint16(), int16(), uint32(), int32(),
> float() etc, which work similar to C casting and type conversion, so I
> don't have to struggle with type inference at compile time.
>
> Yes, this approach sucks. But can anyone offer any suggestions which
> suck less?
>
More information about the Python-list
mailing list