-
Notifications
You must be signed in to change notification settings - Fork 7
/
README
196 lines (146 loc) · 7.5 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
================
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¶m=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: