Bill Welliver wrote:
The really affordable MCUs, such as AVRs and PICs, are probably just too slow to be useful.
Well, actually, forget the AVRs and PICs. One can get ARM MCUs with everything onboard (except USB) for EUR 0.55. Which is close enough or cheaper than most AVRs and PICs. The first thing that does USB as well as ARM, is something like EUR 2.10 (way cheaper than ATxmega). So 8-bit MCUs have become obsolete as far as I am concerned.
In the case of micropython, I suspect that the micropython interpreter is the firmware flashed to the MCU and that they're using some sort of flash card to store the libraries and script to run,
They do interpreter and libs on the flash, but have a 1MB flash for that. But, in case of an MCU, the amount of libraries required is close to none.
But, like I said, the 1MB flash is larger than I'm willing to put in most small MCU designs.
From the kickstarter site:
-----------------------------cut here----------------------------- Micro Python is a complete rewrite, from scratch, of the Python scripting language. It is written in clean, ANSI C and includes a complete parser, compiler, virtual machine, runtime system, garbage collector and support libraries to run on a microcontroller. The compiler can compile to byte code or native machine code, selectable per function using a function decorator. It also supports inline assembler. All compilation happens on the chip, so there is no need for any software on your PC.
Micro Python currently supports 32-bit ARM processors with the Thumb v2 instruction set, such as the Cortex-M range used in low-cost microcontrollers. It has been tested on an STM32F405 chip.
Micro Python has the following features:
Full implementation of the Python 3 grammar (but not yet all of Python's standard libraries). Implements a lexer, parser, compiler, virtual machine and runtime. Can execute files, and also has a command line interface (a read-evaluate-print-loop, or REPL). Python code is compiled to a compressed byte code that runs on the built-in virtual machine. Memory usage is minimised by storing objects in efficient ways. Integers that fit in 31-bits do not allocate an object on the heap, and so require memory only on the stack. Using Python decorators, functions can be optionally compiled to native machine code, which takes more memory but runs around 2 times faster than byte code. Such functions still implement the complete Python language. A function can also be optionally compiled to use native machine integers as numbers, instead of Python objects. Such code runs at close to the speed of an equivalent C function, and can still be called from Python, and can still call Python. These functions can be used to perform time-critical procedures, such as interrupts. An implementation of inline assembler allows complete access to the underlying machine. Inline assembler functions can be called from Python as though they were a normal function. Memory is managed using a simple and fast mark-sweep garbage collector. It takes less than 4ms to perform a full collection. A lot of functions can be written to use no heap memory at all and therefore require no garbage collection. Tell me about the Micro Python board...
The Micro Python board is an electronics development board that runs Micro Python, and is based on the STM32F405 microcontroller. This microcontroller is one of the more powerful ones available, and was chosen so that Micro Python could run at its full potential. The microcontroller is clocked at 168MHz and has 1MiB flash and 192KiB RAM, which is plenty for writing complex Python scripts. The board measures 33x40 mm and is pictured below. -----------------------------cut here-----------------------------