将Python移植到嵌入式系统

将Python移植到嵌入式系统,python,embedded,Python,Embedded,我正在使用一个ARM Cortex M3,我需要在它上移植Python(不带操作系统)。我最好的方法是什么?我只需要核心Python和基本I/O。天哪,这是一个很高的要求。Python依赖于如此多的内核服务,您必须自己提供这些服务。我想你最好还是找一个轻量级的操作系统--也许吧?--安装嵌入式处理器 如果做不到这一点,我会非常想手工翻译成C语言,并在此基础上构建基本要素。一种可能的方法是在软件中构建自己的,直接解释和执行Python。当然,这不是一项移植工作,而且实现起来相当耗费人力,但是为嵌入

我正在使用一个ARM Cortex M3,我需要在它上移植Python(不带操作系统)。我最好的方法是什么?我只需要核心Python和基本I/O。

天哪,这是一个很高的要求。Python依赖于如此多的内核服务,您必须自己提供这些服务。我想你最好还是找一个轻量级的操作系统--也许吧?--安装嵌入式处理器


如果做不到这一点,我会非常想手工翻译成C语言,并在此基础上构建基本要素。

一种可能的方法是在软件中构建自己的,直接解释和执行Python。当然,这不是一项移植工作,而且实现起来相当耗费人力,但是为嵌入式系统构建的自包含Python字节码堆栈处理器可以让您不需要操作系统

另一种方法是编写自己的低级执行程序(比通用操作系统低一步),其中包含核心Python解释器端口所需的最低服务。我不确定这是否比构建堆栈处理器更需要劳动

我不推荐这两种方法中的任何一种——就个人而言,我最喜欢Charlie Martin的Minix 3方法,因为它是一种平衡的需求折衷方法。另一方面,如果您的项目绝对需要Python而不需要操作系统,并且项目有很好的时间和资金预算,那么我的建议可能会很有趣


2012年3月5日更新:如果严格遵守Python/无操作系统的要求,解决方案的另一个可能途径可能在于使用无操作系统的Java VM(例如,目前处于测试阶段)并使用Python创建Java字节码。当然,这不是一个理想的现成解决方案,而且它似乎满足了无操作系统的Python要求。

您肯定应该看看eLua:

“嵌入式电源,由Lua驱动
利用Lua的强大功能快速原型化和开发嵌入式软件应用程序,并在各种微控制器体系结构上运行这些应用程序“

有一些项目尝试将Python移植到您提到的情况,请看一看,或者tinypy。它们针对的是没有操作系统的低功耗微控制器,并且倾向于关注稍旧的Python语言版本和减少的库支持。

将其编译为c:)


仅供参考,我刚刚将CPython 2.7x移植到非POSIX操作系统。那很容易。 您需要以正确的方式编写pyconfig.h,删除大部分未使用的模块。禁用未使用的功能。 然后修复编译、链接错误。然后,它只是在运行时修复了一些简单的问题后才起作用。 如果没有POSIX头,请自己编写一个。实现所需的所有POSIX函数,例如文件i/o。 就我而言,花了2-3周的时间。尽管我有大量定制的Python核心。不幸的是,无法将其开源:(


Py>之后,我认为Python可以很容易地移植到任何有足够RAM的平台上。

为什么你想要一个像Python这样的高级语言,但不想要一个OS?不管你想做什么,我都怀疑Python是很适合它的。考虑一个更简单的语言,少一些依赖性。看一下,戴维,我不认为字节码解释器Woul。d够了——python依赖于大量服务和系统调用,例如I/O和调度。@CharlieMartin你有一个很好的观点。同意,一个直接的CPython端口需要大量的系统服务。同意,一个直接字节码解释器也需要同样的服务。我想可能是堆栈处理器风格的直接字节码由于堆栈处理器的本质要求在执行时采用某种结构,因此执行服务所需的时间会更少。我最近在研究Python字节码时,突然想到可以创建一种类似Forth的堆栈处理器来解释字节码流。不过,这可能太过研究性了。这将是一个有趣的项目;第ING是你,总有一天,你必须用你的设备来下载和弄脏,我怀疑这是代码中最差的地方。用SeeGracle本身编译的结果需要用一个支持来自操作系统目标库的C++编译器编译。所以你仍然有一个OS的要求。E臂皮质M3 C++编译器。核心Python应该(我不是专家,所以请告诉我,如果我是偏离基地)没有OS库的支持,基本IO不管你做什么都会是平台依赖的。哈。第二个想法是,这是一个有趣的方法。所以你写低级执行或引导加载程序或简单的服务提供者C++生成的Su皮。这当然不难,我提出的,可能更少。所以。谢谢你指出这一点,8比特宽。谢谢。只是为了确定,“芯片上的python”和“PyMite”是同一件事,对吗?否定。“python依赖的内核服务太多了”不,Python是一个语言解释器,而不是OS。Python使用一些特定于OS的API,但它们都可以被禁用,或者您可以轻松编写自己的伪API,然后它将编译,基本函数应该可以工作。我这样做了,它可以在从未存在Python的平台上工作(非POSIX OS).好吧,如果你不认为这听起来有点高要求,我怀疑做PyMite的人会希望看到你这么做。如何编写
pyconfig.h
?@认识Taraviya嗨!很简单。这是我的:^^^^^用于windows。+一个用于“非POSIX”:。我不能包含一些非开源部分,对不起。基本上,你应该在它工作时禁用所有可以禁用的部分。如果操作系统没有信号。你可以禁用它,编写包装等。我建议使用Python 2.x,它更容易移植。你是个天使!!我已经尝试了两天了。这里有一个招待你:(提前道歉!!)