我的公司正在使用Python进行一个相对简单的嵌入式项目。有没有其他人在嵌入式平台上使用Python?总体来说,它对我们很有帮助,应用程序开发快速,调试也快速。我喜欢这种语言的总体“简洁性”。
我在日常工作中唯一真正的问题是,与普通编译器相比,缺少静态检查可能导致问题在运行时被抛出。例如,一个简单的意外将字符串和整数连接在一起并在print语句中输出,可能会导致整个应用程序崩溃。
我们在使用嵌入式ARM处理器和16MB RAM(运行Linux)的嵌入式开发板中大量使用Python。
它的表现非常出色,而且可以快速编写自定义代码,这是Python的一个优点。
至于代码的可靠性,我们尽量实现100%的测试覆盖率。使用Python编写测试非常快捷,并为您提供信心。我们使用Twisted Trial来运行测试并报告覆盖率,但还有许多其他工具可用。
根据我的经验,使用Python + 测试比任何其他替代方案更加可靠且快速。
唯一不足的是,针对嵌入式开发,有时Python可能会比较慢,有时会使用大量内存(相对而言)。但这并没有给我们带来问题。如果出现问题,Python很容易进行速度和内存分析。
Pychecker是一个非常有用的工具,可以捕获相当多的常见错误。
顺便提一下,请看这篇博客文章:“Python类型推断”,其中讨论了类型推断和静态类型,包括指向Guido van Rossum博客文章的链接,描述了将可选的静态类型添加到Python。
我同意Bruce Eckel的看法,认为进行“强大测试”比依靠强制类型更好。我认为这同样适用于嵌入式开发。
Telit制造包含GSM/GPRS调制解调器模块的产品,其中包括一个嵌入式Python解释器。
我自己没有尝试过,所以不知道Python解释器与PC实现相比有何区别,例如哪些模块被包含、RAM和ROM内存限制、执行速度等等。
然而,正如用户foresightyj在评论中指出的那样,它们似乎使用的是Python 1.5.x,这是一个真正古老的版本,因此我会对它们持怀疑态度。Python开发人员不会喜欢降级到这样一个古老的版本,没有许多现代Python功能。我会担心这个老版本存在安全问题。
在我之前的雇主那里,我曾经想花些时间尝试构建嵌入式系统,使用的是tinypy,它是一个“64k代码中的Python极简实现”。(但我从未实践过,而且现在也没有时间了。)
在日常工作中,我唯一真正的问题是静态检查与普通编译器之间的区别可能会导致在运行时出现问题,例如,在 print 语句中意外将字符串和整数拼接,可能会导致整个应用程序崩溃。
单元测试是你唯一防范这些问题的方法。
根据我的经验,Python在桌面环境中的使用要比嵌入式领域更为普遍。这是由两个原因造成的,与Python是解释性语言有关:
当然,随着嵌入式系统变得更快,上市时间变得更短,Python将在嵌入式领域得到更广泛的应用。
我曾在一家公司工作,该公司使用Python开发基于Atmel AVR32和运行嵌入式Linux的嵌入式产品。由于缺乏可用的硬件原型,固件最初是在PC上开发的,然后移植到交叉编译的Python解释器上运行的嵌入式硬件上。
在开发过程中,能够在设备上“实时”调试和修改源代码是一个很大的优势,节省了很多时间。但Python解释器的速度和内存使用情况是一个很大的缺点。
在第一版生产固件发布后,我们将关键代码部分移植到C / C ++上。移植工作相当简单,并且在速度关键代码上改进了数个数量级(正如您所期望的那样)。
顺便提一下,大部分设计和生产测试代码都是使用Python编写的,主要在PC上的测试环境中运行。