Differences between revisions 14 and 15
Revision 14 as of 2013-08-28 12:44:52
Size: 3334
Editor: mpastell
Comment:
Revision 15 as of 2014-05-31 07:56:03
Size: 440
Editor: 192
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= 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:

 * [[http://www.gumstix.org/|Gumstix]]
 * [[http://www.raspberrypi.org/|Raspberry Pi]]
 * [[http://beagleboard.org/Products/BeagleBone%20Black|BeagleBone Black]]
 * FIC [[http://wiki.openmoko.org/wiki/Neo1973|Neo1973]] and [[http://wiki.openmoko.org/wiki/Neo_FreeRunner|Neo FreeRunner]] ([[http://wiki.openmoko.org/wiki/Python|Python on Openmoko]])
 * [[http://www.telit.com/en/products/python/why-python.php|Telit GSM/GPRS modules]] (also available as [[http://www.roundsolutions.com/aarlogic/index.htm|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:

 * [[http://cgit.openembedded.org/cgit.cgi/openembedded/tree/recipes/python|Patches in the OpenEmbedded repository]]
 * Cross-compilation issues: Issue:1006238, Issue:5404, Issue:3871
 * General interpreter startup costs: SpeedUpInterpreterStartup
 * File access overhead on startup: [[http://mail.python.org/pipermail/python-list/2008-October/467718.html|Improving interpreter startup speed]], [[http://mail.python.org/pipermail/python-list/2005-May/339691.html|Tons of stats/opens to non-existing files increases Python's startup on loaded NFS servers]], [[http://mail.python.org/pipermail/python-dev/2003-May/035359.html|Startup time]]
 * Import-related costs: [[http://mail.python.org/pipermail/python-dev/2010-March/098042.html|__file__]]
 * Using a launcher process where "expensive" modules are required: [[http://blogs.gnome.org/johan/2007/01/18/introducing-python-launcher/|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:

 * PyMite
 * [[Tiny Python]]

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:

 * [[http://myhdl.jandecaluwe.com/|MyHDL]]
 * [[http://www.sticlete.com/whatos/|WhatOS]]
I'm a 39 years old and study at the college (Physical).<<BR>>
In my spare time I teach myself Chinese. I have been twicethere and look forward to returning sometime in the future. I like to read, preferably on my ebook reader. I like to watch Modern Family and The Big Bang Theory as well as docus about anything technological. I like Conlanging.<<BR>>
<<BR>>
Here is my web blog: [[http://www.mylife.com/judyneinstein|Greg Neinstein]]

I'm a 39 years old and study at the college (Physical).
In my spare time I teach myself Chinese. I have been twicethere and look forward to returning sometime in the future. I like to read, preferably on my ebook reader. I like to watch Modern Family and The Big Bang Theory as well as docus about anything technological. I like Conlanging.

Here is my web blog: Greg Neinstein

EmbeddedPython (last edited 2022-02-02 18:15:38 by SkipMontanaro)

Unable to edit the page? See the FrontPage for instructions.