我的公司正在使用Python作为一个相对简单的嵌入式项目.是否有其他人在嵌入式平台上使用Python?总的来说,它对我们很有用,可以快速开发应用程序,快速调试.我喜欢这种语言的整体"简洁".
我在日常工作中唯一真正的问题是缺少静态检查和常规编译器会导致在运行时抛出问题,例如字符串的简单意外cat和print语句中的int可以带来整个申请下来.
我们在很多嵌入式主板上使用python,配备ARM处理器和16 MB RAM(运行linux).
它工作得很好,很容易快速制作自定义代码 - 这是python的优点之一.
至于代码的可靠性 - 我们尝试拥有100%的测试覆盖率.用python编写测试非常快,它给你一种美妙的信心.我们使用扭曲试验来运行测试并报告覆盖范围,但还有许多其他工具可用.
根据我的经验,python +测试比任何其他替代方案更可靠,更快速地编写.
嵌入式工作的唯一缺点是有时python可能很慢,有时它会占用大量内存(相对而言).这还没有导致我们显示停止问题,如果python成为一个问题,python很容易分析速度和内存.
pychecker也非常有用,它会捕获很多常见错误.
BTW,请参阅此博客文章:" Python的类型推断 ",讨论类型推断和静态类型,包括一些Guido van Rossum博客文章的链接,描述为Python添加可选的静态类型.
我同意布鲁斯·埃克尔(Bruce Eckel)的观点,认为练习"强力测试"比依靠强力打字更好.我认为这同样适用于嵌入式开发.
就个人而言,我已经研究过BusRadio使用的设备中运行的一些软件.这是一个基于Twisted和Python 构建的嵌入式项目的示例.该设备是一个运行debian派生分布的嵌入式XScale处理器,因此它可能不符合"嵌入式"的某些定义,但它非常小:它适合校车的仪表板.
使用Python和大型库有一些有趣的问题 - 解释器可能需要很长时间才能启动并在非常慢的芯片上加载Twisted的所有代码,有些事情需要特殊情况优化.但是,Python的动态特性决不是问题.有问题的软件肯定不是很完美,但至少在使用Twisted时,一个简单的编程错误不会"使整个应用程序失效".将记录回溯,并继续处理.
因此,如果您处于一个完全不受限制的嵌入式环境中,您可以首先使用Python,那么它与开发"常规"程序(游戏,桌面应用程序,Web应用程序)没有什么不同.你不需要静态输入,你也不需要它.
在我以前的雇主,我曾想花一些时间玩在tinypy中构建嵌入式系统,这是"64k代码中的Python的极简主义实现".(但我从来没有这样做,我也没有时间.)
Telit生产包含嵌入式Python解释器的GSM/GPRS调制解调器模块.
我自己没有尝试过,所以我不知道Python解释器与PC实现的比较或不同,例如包括模块,RAM和ROM内存限制,执行速度等.
然而,正如用户远见卓识在评论中指出的那样,它们似乎使用的是Python 1.5.x,这是一个真正古老的版本,因此我很难认真对待它们.如果没有如此多的现代Python功能,Python开发人员不会喜欢降级到如此古老的版本.我会担心这个旧版本的安全问题.
我一直致力于基于旧的和慢的powerpc和16Mb RAM的微波通信设备.
我已经能够在VxWorks上移植Python 2.6.1解释器,以便直接从目标shell获得命令行解释器,或者执行上传到目标flash的python脚本.
我们使用这些脚本在目标上执行自动测试或执行诊断程序.这里有一些关于整个过程的细节:如何:将Python移植到VxWorks