3347
Comment: wiki restore 2013-01-23
|
3334
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
Line 3: | Line 2: |
Line 7: | Line 4: |
Line 9: | Line 5: |
Line 12: | Line 6: |
Line 16: | Line 9: |
Line 18: | Line 10: |
* [[http://www.raspberrypi.org/|Raspberry Pi]] * [[http://beagleboard.org/Products/BeagleBone%20Black|BeagleBone Black]] |
|
Line 21: | Line 15: |
See also [[PythonForArmLinux|PythonForArmLinux]] and [[OpenEmbedded|OpenEmbedded]]. |
See also PythonForArmLinux and OpenEmbedded. |
Line 26: | Line 18: |
Line 29: | Line 19: |
Line 33: | Line 22: |
* General interpreter startup costs: [[SpeedUpInterpreterStartup|SpeedUpInterpreterStartup]] | * General interpreter startup costs: SpeedUpInterpreterStartup |
Line 38: | Line 27: |
Line 40: | Line 28: |
Line 43: | Line 29: |
Line 47: | Line 32: |
* [[PyMite|PyMite]] * [[Tiny Python|Tiny Python]] |
* PyMite * [[Tiny Python]] |
Line 54: | Line 37: |
Line 56: | Line 38: |
Line 59: | Line 39: |
Line 63: | Line 42: |
Embedded Python
Python can be used in embedded, small or minimal hardware devices, depending on how limiting the devices actually are.
Devices capable of running CPython
Some modern embedded devices have enough memory and a fast enough CPU to run a typical Linux-based environment, for example, and running CPython on such devices is mostly a matter of compilation (or cross-compilation) and tuning.
Devices which could be considered as "embedded" by modern standards and which can run tuned versions of CPython include the following:
FIC Neo1973 and Neo FreeRunner (Python on Openmoko)
Telit GSM/GPRS modules (also available as AarLogic family GPRS/GPS QUAD Band Modules)
See also PythonForArmLinux and OpenEmbedded.
Work to improve CPython for embedded applications
Various efforts have been made to make CPython more usable for embedded applications:
General interpreter startup costs: SpeedUpInterpreterStartup
File access overhead on startup: Improving interpreter startup speed, Tons of stats/opens to non-existing files increases Python's startup on loaded NFS servers, Startup time
Import-related costs: __file__
Using a launcher process where "expensive" modules are required: Introducing python-launcher
Reduced or reworked Python implementations
Some devices may be more restrictive in that the typical memory footprint of CPython may exceed the amount of memory available on the device. In such cases, a re-engineered or adapted version of CPython, perhaps even to the point where it can be considered a new implementation of Python, might be appropriate.
Examples of such implementations include the following:
On the other hand, one can start with a full build, and simply remove unneeded modules, e.g., Tkinter, etc., to realize a reduced-size Python with little effort.
Python-based tools for developing embedded applications
Sometimes the embedded environment is just too restrictive to support a Python virtual machine. In such cases, various Python tools can be employed for prototyping, with the eventual application or system code being generated and deployed on the device.
Tools that support this kind of development include the following: