Skip to content

n6il/pyMite-coco

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pyMite-coco

================ Python-on-a-Chip

featuring PyMite

:Author: Dean Hall :Copyright: Copyright 2002 Dean Hall. See License_ for details. :Release: 09 :Site: http://www.pythononachip.org

Purpose

Python-on-a-Chip (p14p) is a project to develop a reduced Python virtual machine (codenamed PyMite) that runs a significant subset of the Python 2.6 language on microcontrollers without an OS. The other parts of p14p are the device drivers, high-level libraries and other tools. Please join the python-on-a-chip google group_ to discuss this project.

.. _python-on-a-chip google group: http://groups.google.com/group/python-on-a-chip

License

See the LICENSE_ file to understand the terms of licensing for each component of the Python-on-a-Chip program.

.. _LICENSE: LICENSE

Build

P14p is built, for most platforms, using a POSIX-like terminal, a Makefile (or using SCons) and a GCC [cross] compiler. The desktop64 platform is the default target platform and it builds for Mac OS X, Linux or Cygwin.

GNU Make should be installed since other forms of Make aren't 100% compatible. The development system should have installed the GNU Compiler Collection_ version 3.4 or later and Python_ 2.6. The SCons build system is experimental. Please read docs/src/BuildSystem.txt for more details.

To build p14p for the desktop platform and run the interactive prompt::

$ make ipm
...
ipm> print "Hello world."
Hello world.
ipm> ^D

Press Control+D when done with the interactive prompt. To run the system tests on the desktop::

$ make check

To cross-compile for a different platform, type make PLATFORM=<plat> where <plat> is the name of a subdirectory in src/platform/. For example::

$ make PLATFORM=avr

The author uses avr-gcc to compile for Atmel AVR microcontrollers. Other platforms use other compilers. The windows platform uses a MicroSoft IDE.

Since p14p is so deeply embedded, it does not rely on many libraries. For example, the avr platform needs only avr-libc and the econotag platform requires newlib but also uses libmc1322x for advanced wireless features.

.. _GNU Compiler Collection: http://gcc.gnu.org/ .. _Python: http://www.python.org/download

Discussion

Please browse the Python-on-a-chip project_ site for up-to-date information. and join the Python-on-a-chip maillist_ for discussion about the p14p project.

.. _Python-on-a-chip project: http://code.google.com/p/python-on-a-chip/ .. _Python-on-a-chip maillist: http://groups.google.com/group/python-on-a-chip

Thanks

My personal thanks go out to these people for their recent contribution to p14p:

r0A


- David Earlam: finding and fixing a defect with backtraces.
- JT: reporting and fixing a defect with the mbed build.
- Sitti: suggested an improvement for the mbed Makefile.
- James Thomas: Created issues and patches for ipm, mbed and __bi.py.
- Sergiu Mihai: Reported that arduino_mega port wasn't working
- Andrej Antonov: Reported and sent patch to desktop/ipm.py
- Tonio Monnet: Maintained the pmHeapDump.py tool

r09
  • Oscar Lindberg: Porting p14p to the MoSync platform.
  • Alex Litz: Reported an error on the windows platform.
  • Tonio Monnet: Recommended to use 'const' for the native func table to save RAM, enhancements to src/tools/pmHeapDump.py.
  • Michael (michaelnt): Reporting mbed sys.time() and including a patch.
  • Angus Gratton: enhancements to lib/avr, port to Teensy++
  • J.W. Bruce: Reporting build issue and provided fix.
  • Michael (xinx): Found mbed name conflict, reported PySerial issue in ipm and provided fix, reported error in the porting document, donated code to allow hex string formatting.
  • Michael Reithinger: Reported GC defects and provided fixes.
  • Davide Carboni: Reported a build break, implemented module loading in ipm.
  • Markus Gritsch: Feedback on PIC port and ipm docs.
  • Bryan Jones: Making Doxygen docs, developing port to PIC24/dsPIC33 platform, mainlining VM bug fixes and helping the windows port.
  • Trammell Hudson: Patches for string concatenation and backtick operator (UNARY_CONVERT).
  • Duncan McGreggor: Creating an excellent Python-on-a-Chip logo.
  • Jan Wedel: Reporting an issue and providing a fix for the DELETE_ATTR bytecode.
  • Tyler Wilson: Porting and maintaining p14p on the Windows platform and making good VM improvement suggestions.
  • Thomas Fenzl: Patching and testing for 64-bit systems.
  • Alex Clausen: Reporting a build break and including a patch for 64-bit systems.
  • James Snyder: Porting and maintaining p14p on the STM32 platform.

Target Platforms

Platforms in bold are new since the previous release:

- **arduino_mega**: The Atmel ATmega1280 based `Arduino Mega board`_
- at91sam7s-ek: The Atmel `evaluation kit for the ARM7 AT91SAM7S64`_ **[Not Recommended]**
- avr: Generic `Atmel AVR`_
- desktop: Mac OS X, Linux, Cygwin or any other Posix-like desktop OS
- **desktop64**: Mac OS X, Linux, Cygwin or any other 64-bit Posix-like desktop OS
- **econotag**: The Freescale MC13224 based `Redbee EconoTAG`_ 802.15.4 wireless module
- mbed: The NXP LPC1368 based mbed_ microcontroller platform
- mmb103: The Atmel ATmega103 based Mega Mini Board **[Not Recommended]**
- **mosync**: The MoSync_ cross-platform framework for mobile platforms.
- **pic24**: The `Microchip PIC24/dsPIC family`_
- **stm32**: The ST Microelectronics STM32F103 `ET-STM32 Stamp Module`_
- **teensy**: The Atmel ATmega 1280 based `Teensy++ 2.0`_
- **windows**: The MicroSoft Windows desktop OS

.. _Arduino Mega board: http://arduino.cc/en/Main/ArduinoBoardMega .. _evaluation kit for the ARM7 AT91SAM7S64: http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3784 .. _Atmel AVR: http://www.atmel.com/products/AVR/megaavr.asp?family_id=607&source=avrhomereadmore .. _Redbee EconoTAG: http://redwirellc.com/store/index.php?route=product/product&product_id=56 .. _mbed: http://mbed.org/ .. _MoSync: http://www.mosync.com/ .. _Microchip PIC24/dsPIC family: http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2629&param=en533465 .. _ET-STM32 Stamp Module: http://www.futurlec.com/ET-STM32_Stamp.shtml .. _Teensy++ 2.0: http://www.pjrc.com/teensy/

Release Notes

This is release 09

  • Release 09, 2010/09/21

    For a complete list of changes for this release, go here_. Added support for the following major new features:

      - Classes with multiple inheritance
      - Generators with iterators, expressions and coroutines
      - String concatenation using the addition operator '+'
      - Migrated to Python 2.6 compiler and bytecodes
      - The backtick operator (s=`x`) for integers and floats
      - String format (%) using %d,s,f format chars
      - Closures. Also allows decorators with an argument
      - The Bytearray class: packet = bytearray(128); b = bytearray(b"abc")
    

    And:

      - Improved appearance of ipm
      - Fixed three nasty defects in the Garbage Collector
      - Improved readability of exception tracebacks for some platforms
      - Moved native function tables to "const" to save RAM
      - Added iter() to builtins (commented out)
      - Fixed string.count and string.find
    
  • Release 08, 2009/04/20

  • Release 07, 2009/03/08

  • Release 06, 2009/01/30

  • Release 05, 2007/05/10

  • Release 04, 2006/12/14

  • Release 03, 2006/09/17

  • Release 02, 2006/08/11

  • Release 01, 2003/03/18

.. _go here: http://code.google.com/p/python-on-a-chip/issues/list?can=1&q=Milestone%3D09

.. :mode=rest:

===================================== Python-on-a-Chip and PyMite Licensing

:Author: Dean Hall :Email: [email protected]

Overview

The Python-on-a-Chip program consists of the PyMite virtual machine, ports to specific platforms, libraries, tests, tools and documentation. This document explains the licensing terms of the different components of the Python-on-a-Chip program.

The Python-on-a-Chip program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

The following table explains which license applies to which files in the Python-on-a-Chip program:

===================== ======================================================== The files in . . . are licensed under the . . . ===================== ======================================================== src/vm/ The MIT License_ src/lib/ The MIT License_ src/platform/ GNU LESSER GENERAL PUBLIC LICENSE Version 2.1_ src/tests/ The MIT License_ src/tools/ The MIT License_ docs/ The MIT License_ ===================== ========================================================

.. _GNU LESSER GENERAL PUBLIC LICENSE Version 2.1: http://opensource.org/licenses/LGPL-2.1 .. _The MIT License: http://opensource.org/licenses/mit-license.php

Details

Dean Hall is the copyright holder for all files in src/vm. Dean Hall is the majority copyright holder for all other files in Python-on-a-Chip with these exceptions:

Bryan Jones contributed all files in src/platform/pic24. James Snyder contributed all files in src/platform/stm32.

Python-on-a-Chip was formerly offered under a dual-license: a commercial license and the GPL. On 2012/08/29, Dean Hall changed the license to the MIT License for all files except those in src/platform/. This license change applies only to the r09 release and specifically does not apply to the software in the repository under the v10 branch.

Net Effect

The cumulitive effect of the licensing above results in the r09 code having a very liberal license and obtaining a commercial license from Dean Hall is no longer necessary for the r09 code.

.. :mode=rest:

About

Port of pyMite to TRS-80 Color Computer

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published