Bill Welliver wrote:
It's certainly true that AVR and friends aren't powerful enough to run a pike interpreter, but they're also much simpler, smaller and also use a fraction of the power that any ARM would use. I'm
Well, I admit you caught me off-guard with the powerusage. Checked it just now, comparing an ATtiny461A with the MKE05Z8VTG4: - Running without all peripherals active the ATtiny uses about 3.6mA at 5V and 8MHz, the ARM uses about 3.5mA at 5V and 12MHz. - Power down mode ATtiny uses 4uA at 3V, stop mode ARM 1.9uA at 3V. Doesn't look like ARM is at a disadvantage there.
surprised that you'd be able to get an ARM for less than an AVR... you must have better sources than I.
Well, the ARM ATtiny rival would be this one (8KB Flash, 1KB RAM): http://nl.farnell.com/freescale-semiconductor/mke04z8vtg4/mcu-32bit-cortex-m... I can't come up with any convincing reasons to use an ATtiny instead.
And if you want USB, try MKL26Z128VLH4 (128KB flash, 16KB RAM): http://nl.farnell.com/jsp/search/productdetail.jsp?sku=2360679
The chip that they're targeting for this project runs about $12 in quantities less than 100 and they're selling the board for about $25. ST sells a discovery board using the same chip as the micropython developer board, but without the card reader for $14. you can put an RTOS like nuttx on it. If Pike ran under that, you might be in business without having to resort to a "micro pike".
Well, this time I actually looked for a 1MB flash ARM, and I find this MK22FN1M0VLL12 (1MB flash, 128KB RAM, EUR 6.50): http://nl.farnell.com/freescale-semiconductor/mk22fn1m0vll12/mcu-32bit-corte...
I'm actually amazed at the low price. It's about three times the price for the 128KB version. Which, admittedly, makes Pike on an embedded ARM a possibility again. I just checked out nuttx; looks nice, but judging from the functionality it probably does require a high enough clockrate to achieve anything meaningful (and that, sort of linearly increases power consumption).
Glancing at Pike I notice that: - The i386 compiled 32 bit binary is roughly 2MB text size and 866KB BSS size. - program.o contains an unexpectedly large BSS segment of 306KB, why? - cpp.o is 153KB vs. language.o being 131KB. It is rather unexpected that the cpp module is larger than the actual language parser. Why don't we use yacc for the preprocessor too; or is it difficult to capture the rules in yacc for the preprocessor? - Which is not say that an embedded Pike could do without the preprocessor, and possibly even without the language parser (it would mean that everything would need to be precompiled).