【问题标题】:How to port/embed python for arm based devices?如何为基于 arm 的设备移植/嵌入 python?
【发布时间】:2015-03-29 21:28:24
【问题描述】:

TL; DR:将 Python 移植到新操作系统有多难?

我想使用 python 为 Verifone 的 VX 680 编写应用程序。它们是基于 32 位 ARM 的设备,具有 128+MB 的 RAM。 http://www.verifone.com/media/4300697/vx680_ds_ltr.pdf

我的想法是编写一个调用 Python 解释器的 C 应用程序。我的应用程序将是一堆 python 模块。该应用程序需要显示图形丰富的 UI、发送 HTTPS 消息、访问外围设备(例如 WiFi 无线电、PinPad、热敏打印机)。尽管我进行了调查,但我仍然完全迷失了。

为了能够在此设备中编写 python 应用程序,我需要解决哪些问题?

【问题讨论】:

  • 在ARM上运行Python解释器是例行公事(我的手机安装了Python),问题可能在于与底层操作系统的集成(上次我以“奇怪”的配置编译CPython最问题出在特定于平台的动态模块加载上)。但是我不会在具有 64 MB 实际 RAM 的 400 MHz 机器上使用 Python(传单上说 192,但 128 MB 是闪存) - 想想 Raspberry PI 1,但速度要慢一倍,并且只有 1/4 的 RAM。
  • 我的替代方法是嵌入 webkit 并用 HTML + JavaScript 编写我的应用程序。比 python 还差吗?

标签: python arm python-embedding verifone


【解决方案1】:

我亲自为我自己的操作系统移植了 CPython;真正的问题是缺乏交叉编译支持——我找到了 2.5.1 的补丁,使它可以干净地交叉编译。

在它编译干净后,我只需要提供相当少的系统调用集即可工作。对于任何严重的事情,至少只读文件系统是必须的。无论如何,如果您的 libc 是 POSIXish,那么您应该不会遇到太多问题。

我一开始的系统调用集是exitopencloseread(用于控制台和文件)、write(仅用于文件描述符 1 和 2)、@ 987654326@、fstatsbrk(用于更改堆大小)。我使用带有 libgloss 的 newlibc C 库 - 没有映射到这些的所有内容,只返回错误值或默认值。

【讨论】:

  • 有这些系统调用的列表吗?
猜你喜欢
  • 2011-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-08
  • 2012-03-20
  • 2016-07-19
  • 2013-10-31
  • 1970-01-01
相关资源
最近更新 更多