AVR JAVA虚拟机

NanoVM是一个运行在AVR MEGA8 MCU上的虚拟机,它也适用于MEGA系列的其它芯片。NanoVM被用于一个机器人项目,它是由 AREXX engineering用AVR系列MCU制作的一个叫做DLR Asuro robot的机器人项目。运用NanoVM,Asuro能够运行一个标准JAVA运行库。NanoVM和它的相关工具是遵守GPL协议的,它能被使用在其它基于AVR MCU的系统上。
用于Asuro的NanoVM替代了Asuro原来只支持JAVA指令子集的固件,它能运行简单的JAVA程序。
NanoVM是一个对JAVA虚拟机解释非常好的资源。NanoVM当前版本包括一个引导载入程序和一些原始的类,适合于只有8K 闪存ROM的AVR ATmega8 CPU。512字节的EEPROM可用于存储JAVA代码,而1K RAM中的百分之七十五被用于运行JAVA程序。

当前版相包含以下内容:
支持JAVA标准的字节码。
在MEGA8和MEGA32上被测试过。
可配置的15/31位的整型运算。
可选的浮点运算支持。
内存垃圾回收。
统一的堆栈和许多的算术指令。
只要求不到8K的代码存储器。
JAVA字节码存储最少只需512字节。
运行时所需的最小RAM是768字节。
在AVR MCU运行在8M Hz时可以20K的速度执行代码。
原始的类包含如下:
•java/lang/Object (object handling)
•java/lang/System (IO handling)
•java/io/PrintStream (console output)
•java/lang/StringBuffer (string processing)
•asuro (asuro control)
•Native support for LCDs, AVR io etc
NanoVM的优缺点
这里将介绍NanoVM能干什么和不能干什么。
它不是一个完整的JAVA虚拟机,也永远不会是。它被限定于JAVA语言的一个了集,但是支持JAVA标准库,可以运行一些被特殊编写的JAVA程序。
支持的设备
虽然NanoVM可用于各种用途,但也算是变得特别受欢迎的机器人开发工具包。最新NanoVM支持:
•该Asuro是第一个机器人的NanoVM支持,
•它当时移植到c't,博特
•和尼博甚至设计NanoVM支持。
文件
该NanoVM是分布在三个部分:NanoVM自己是安装在目标(Asuro),一个转换器和上传工具NanoVM格式转换成Java类文件,并上传到目标,最后的一些示范项目,他们Asuro 。
安装和使用NanoVM
该NanoVM是一个8KB的程序代码内部的AVR的CPU完全取代(见图)。与原来的Asuros引导程序,它加载到闪存applicaton的NanoVM使用EEPROM来存储程序代码。通常的C开发链转换任何应用程序的源代码直接置入机AVR的特定代码。与此,NanoVM工程与便携式Java字节码是由在运行时NanoVM解释。
例如,有些像应用于AVR在ATmega8的随Asuro预编程来交付给用户。预安装引导装载程序允许用户在CPU上上传更多的代码。例如在Asuro带有一个引导程序,允许通过上传代码与Asuro发表的红外线发射器。该NanoVM无法安装使用这个机制,因为引导程序本身必须被取代。不是的AVR CPU包括引导加载器必须更换的全部内容。这需要的CPU将在一些编程放到船上,例如沙头角- 500。 Alternally,一个简单的界面(安装界面照片),您可以重新编程整个芯片,而其仍放在Asuro。在这两次到PC连接是通过一个特殊的AVR ISP编程电缆进行案件(见例如这些自助说明如果您想建立一个自己)连接到电脑printerport。该NanoVM本身是当时正在上载使用像Ponyprog或下的uisp软件的芯片。
由于目前还没有任何我们所制定的备份或恢复与强烈建议使用的NanoVM单独ATmega8的CPU的Asuro发运ATmega8的原引导程序的方法。新型AVR ATmega8的处理器无计划便宜!
该NanoVM本身包含它自己的引导程序。一旦安装在目标系统,例如像该Asuro它可以使用红外接口,Java客户端安装程序。特别NanoVM工具(原转换工具)是可用于NanoVM的uplaod Java程序Asuro。
下载
截至2005年9月15号,含完整的NanoVM。源代码和asuro和其他正式支持plattforms二进制文件分布在一个文档。在rxtx安装脚本是为了简化安装的GNU / rxtx java扩展对Linux的电脑。这个扩展要求允许NanoVMTool访问个人电脑的串行端口直接上传申请一NanoVM配备设备。
旧版本:
[url=/nanovm-20060613.tgz]nanovm-20060613.tgz[/url]
[url=/nanovm-20051217.tgz]nanovm-20051217.tgz[/url]
[url=/nanovm-20051204.tgz]nanovm-20051204.tgz[/url]
[url=/nanovm-20051201.tgz]nanovm-20051201.tgz[/url]
[url=/nanovm-20050926.tgz]nanovm-20050926.tgz[/url]
[url=/nanovm-20050915.tgz]nanovm-20050915.tgz[/url]
[url=/install_rxtx.sh]Linux rxtx installation script[/url]
如果你有兴趣的最新变化,并在促进NanoVM的发展非常感兴趣,你可以在CVS库的NanoVM看看。
你的贡献
你想做出贡献?伟大的!以下是东西这将是一个巨大的贡献NanoVM一些:
•阿NanoVM仿真器,模拟AVR的,asuro,或在电脑上其他本地方法将允许如与虚拟asuro测试程序之前上传到真实的东西。
•一个简单的Java图形化编程上面层将使甚至完全初学者与nanovm配备设备。简单的拖放'东经下降桂允许建立简单的流量控制图,然后转换成Java将是你只需要完成此这些。
•您有一个更好的主意?欢迎您...
历史
版本2006/06/13:
•NanoVM 1.4,NanoVMTool 1.4
奥利弗•舒尔茨一个新的和更可靠的上传协议
•代码清理由奥利弗舒尔茨
•浮法和31位的整数支持尼尔斯施普林戈布
•各种小错误修复
版本2005/12/17:
•NanoVM 1.3,NanoVMTool 1.3
•切换到rxtx为Java RS232支持(感谢这暗示,奥利弗舒尔茨)
•NanoVMTool现在运行在Linux,Windows和MacOS
版本2005/12/04:
•NanoVM 1.3,NanoVMTool 1.2
•通用机液晶显示器的方法
为Atmega32•示例配置
•为Atmega8的原理图和Atmega32测试板
•扩展的文件(见维基(德国))
版本2005/12/01:
•NanoVM 1.3,NanoVMTool 1.2
•通用的PWM和ADC ATmega8的类
•简单的InputStream的支持(串行输入)
•新增dup2指令和类型转换指令
•GPL许可验证
版本2005/09/26:
•NanoVM 1.2,NanoVMTool 1.1
•独立的堆栈管理
•固定Asuro编译
版本2005/09/15:
•NanoVM 1.1,NanoVMTool 1.1
•初始源代码发布
•完整的虚拟机根据GPL
待办事项
还剩下些什么?越南船民本身完成。它不是一个完全的Java虚拟机,因为它不支持异常,线程,浮点运算和其他各种一样的东西,例如从本机类继承。由于内存限制,这些东西可能永远不会被实施的Asuro及其ATmega8的中央处理器(记住,这一切都放进内存8KB的代码)。通用版本缺少了一套完整的原生类,以便真正有用的最终用户。
完整的NanoVM是开源的。由于认为,一个Eclipse插件,有可能给我们写信。此外,NanoVM可以很容易地移植到其他各种AVR的系统。
汇爱特梅尔AVR系列通用NanoVM
它可以使用了比Asuro其他项目NanoVM。对于Asuro NanoVM包括Asuro具体机类只。该NanoVM分布包括一些更通用的AVR的,可以如本机类可以用来直接与车牌自动辨认系统IO口的AD转换器,脉宽调制单元和串行接口。这些原生类已列入档案的来源。几个简单的例子包括,显示了如何使用这些通用机类建立自己的Java控制AVR的应用。
该ATmega8的很可能是最小的AVR的运行NanoVM的能力。这里没有多少内存在8KB的闪存左(约700字节的还是免费的),所以没有通用机类的大量空间。随着更大的CPU(有AVR产品高达32倍ATmega8的代码存储器),即使是最复杂的本机类应该是可能含。例如:网络和无线的支持。
外部文件和讨论
German Wiki entry with plenty of NanoVM details.
User contributed page incl. english translation of the document above
German thread on mikrocontroller.net about the NanoVM
Another german thread on mikrocontroller.net about the NanoVM
相关链接:
NanoVM at Sourceforge
Eclipse plugin for nanovm
German web site focussed on microcontroller development.
The java.comm package required for upload via the serial port
RXTX: serial I/O libraries for Java
Howto for installing rxtx/gnu.io under Linux
Java virtual machine specification
AVR ISP programming cable
Atmel STK500 AVR developer kit
Ponyprog AVR programming software for Windows
UISP AVR programming software for Linux
robot construction kit Nibo
The university of Duisburg-Essen is running the NanoVM on the c't-bot
项目地址:http://www.harbaum.org/till/nanovm/index.shtml

你可能感兴趣的:(JAVA虚拟机)