通过以上可以得出,嵌入式系统隐藏在我们生活中的各个角落。而Python又是一个简单的脚本语言。本次的目的是实现目前流行的一种脚本语言在ATMEL芯片上的移植。通过本次课题,深入了解ATMEL的开发平法和PYMITE解析器。理解ATMEL平台下的软件的移植过程以及脚本语言解释器的执行过程。
1.1 课题背景
早期的商业尝试构建嵌入式运行时系统,如BASIC Stamp,它需要多个芯片并且在教育应用中并没有被大量使用。学术项目主要集中在非常小的8位器件。这些系统的建成只能运行几十行代码,并且根本就没有设计更加现代化和有能力能够运行在32位微控制器上的程序。
Java卡的系统运行的是嵌入式的JVM子集,以允许智能卡来执行一些有限的计算。虽然它有制定了一些小的概念验证应用程序,如基本的web服务器,有限的计算和I/O渲染建设,但是并不能实现Java Card大型应用程序。
而Android使用一个解释器,Dalvik的,即在嵌入式系统上运行时,它具有非常不同的设计目标比这些项目。 Dalvik的依赖底层Linux内核提供I / O,内存分配,处理隔离度和文件系统。它至少有64 MB的内存,三个数量级,系统可用于的微控制器不仅仅是ARM的Cortex-M。 Arduino2是一个简单的微控制器平台已经由业余爱好者和大专院校广泛采用。这表明,有极大的兴趣使得微控制器编程更加容易。然而,Arduino的专注于提供I/O的抽象层通过高层次的库,而PyMite则提供了计算与管理的运行时系统的抽象层。
此时两种高级语言开源运行时系统已被开发:Python(p14p)和eLua。 p14p是已经被移植到几个微控制器,包括AVR,PIC和ARM Python的运行时系统。该p14p系统是一种便携式的Python VM可以使用很少的资源运行,并支持Python语言的显著部分。同样,eLua是Lua编写的运行时系统,它运行在ARM微控制器上。eLua对对象的所有的运行方法都与P14p相似。因此他们不是重复的。
1.2 本课题研究目的及意义
PyMite是专为AVR微控制器设计的完整系统,其中包括一个交互式开发环境,一套分析器,以及一个解释器。它是由几个开源项目,包括CPython和baobab最后整合成PyMite而成。
PyMite自身制定了一套全面的剖析和分析工具。 使用的数据是来自这些静态和动态分析工具,以及从具有水稻般庞大的用户群体验。 我们显著扩大,重新架构,并改进原p14p系统的鲁棒性。 PyMite开发了许多相应的工具链,其中包括在Windows,Mac OS X和Linux上可以进行微控制器编程的简易IDE工具。 我们还在运行时系统中增加了两个原生的功能接口,栈保护,自动装箱,代码缓存,和许多其他改动。 此外,该工具链和运行时系统已经重新设计以消除动态加载的需要。
PyMite表明,我们可以使用高级语言来开发复杂的嵌入式系统软件。许多软件应用中已经基于PyMite的开发,其中包括一个GPS跟踪器,网络服务器,一个读/写FAT32文件系统,和一个人工地平线显示等。此外,PyMite是能够运行的软实时系统。这些应用程序完全是用Python编写并且程序员之前没有嵌入式系统的经验,表明了使用运行时系统来为微控制器编码不仅是可能的,并且非常富有成效。此外,PyMite被很多大学用作R-教育机器人的软件平台。在使用期间很少发生从未有过奔溃现象。
生产力的基石是互动发展的过程。用户可以连接到微控制器然后输入语句被立即执行。这就可以很容易在实验中使用外设等其他功能,使得微控制器的程序开发几乎不那么繁琐。在传统开发环境,程序员编写代码和调试需要不断通过一个繁琐的编译/链接/烧入/运行的周期。但是,在PyMite搭建的系统中的用户可以在交互接口尝试一件事,然后立即尝试别的东西在击中简单的“return”后。实验几乎没有什么成本。