开博第一篇,先写一点我现在感兴趣的东西:arduino 与 jvm
一直想在软件世界之外做点硬件的研究。最近对开源硬件arduino生产了兴趣,搭了一些实验系统,也用c++写了一些简单的程序。虽然对于程序员来说,应该不拘泥于使用何种语言,但必竟java还是我最熟悉的语言,于是就有了一个想法,可不可以在arduino芯片上执行java代码?
首先,当然网上找现成的,找到一个项目NanoVM,一个可以在Atmega8芯片上用的jvm,但是有几点要改造,一是NanoVM是以引导程序bootloader方式烧录的,必然会和arduino本身的引导程序生产冲突。二是NanoVM的class文件需要保存在eeprom里,只有1k的空间,完全不够使用。
如果不想自己去改NanoVM的代码,那只有自己开发一途,正好我一直要找一个项目去深入研究一下jvm的机制,两个目的不谋而和,就算不成功,也可以在这两个领域积累不少经验。
要达成在arduino上执行java代码有三种方法:一是解释执行,我有成功写过java解释器,但是要在单片机的环境下写java解释器,资源不够是一个大问题,所以基本不考虑。二是把java代码翻译成c++代码再用gcc编译,这似乎是一个可行的办法。三是和NanoVM一样,写一个微型的jvm执行class里的byte code。
暂时决定采用第三种方法,自己DIY JVM。
现在正在做的事情:
1. 看JVM规范,学习class文件的结构,以及程序操作码的执行过程
2. 通过javacc定义和解析ClassFile结构,自动生成读取class文件的代码(Java代码)
目标要做到的事情:
3. 在PC的java平台实现自己的jvm执行class文件中的程序代码
4. 将读取class文件和jvm移植到arduino的c++平台上
5. 将一些arduino的库通过java实现一份
6. 将class文件保存在sd卡供jvm读取
7. 考虑在sd上实现虚似内存以弥补芯片的内存不足
现在就想到这么多,先写这些,能不能做到还不好说,过程愉快足矣。
PS. 在看《Java虚拟机规范(Java SE 7)》的过程中,意外发现其中一名译者@langyu竟然是以前土豆的同事,哈哈,这也是激起我开这个博客的直接动力
相关推荐
为Arduino联通java博文的代码,new为Arduino代码,sensor为java项目;因使用了swing故可能需要在本地下载相关插件。
Arduino code on serial
基于Arduino和Java实现的教室桌面控制系统
NULL 博文链接:https://edisonlovecola.iteye.com/blog/1869689
java-串行通信-arduino java-serial-communication-arduino :一段从 Arduino 读取串口值的代码(使用 linux 32 位 naitve lib) 1 - 在你的 CLASS_PATH 中使用 comm.jar 2 - 在你的 CLASS_PATH 中也有 javax.comm....
如何使用 Java 应用程序与 Arduino 板通信。 ##Intro## 在这个例子中,我将展示如何使用 Java 应用程序读取 Arduino 板发送的数据。 Arduino 板详细说明一个随机数并通过串行端口打印数据。 Java 应用程序旨在查找...
Adruino的婴儿护理项目</>
具有Arduino和Java的自动驾驶仪具有Arduino和Java接口的自动驾驶仪:二手:Arduino AtMega2560驱动程序LM298传感器HMC5883L
课程设计——设计了一个由stc89c52和Arduino搭建的压力控制平台,同时使用matlab和java进行计算机与单片机的串 课程设计——设计了一个由stc89c52和Arduino搭建的压力控制平台,同时使用matlab和java进行计算机与...
RFID progrqmming with java
它构建于开放原始码simple I/O介面版,并且具有使用类似Java、C语言的Processing/Wiring开发环境。主要包含两个主要的部分:硬件部分是可以用来做电路连接的Arduino电路板;另外一个则是Arduino IDE,你的计算机中的...
(E)基于Arduino硬件的EPROM编程器 MEEPROMMER 是硬件和软件的组合,可让您从(和向)28Cxxx EEPROMS 读取和写入数据。...对于主机,可以使用基于 Java 的 GUI 应用程序,该应用程序使用 RXTX 库来连接程序员。
java-arduino-串行
JavaArduino Java Arduino 接口和串行通信
它构建于开放原始码simple I/O介面版,并且具有使用类似Java、C语言的Processing/Wiring开发环境。主要包含两个主要的部分:硬件部分是可以用来做电路连接的Arduino电路板;另外一个则是Arduino IDE,你的计算机中的...
Arduino是一款易于上手的电子原型平台开发软件,其包含了硬件和软件,构建于开放原始码simple I/O介面版,使用类似于C和JAVA的开发环境,通过硬件模块连接的Arduino电路板,Arduino IDE程序开发环境,让你在IDE中...
它构建于开放原始码simple I/O介面版,并且具有使用类似Java、C语言的Processing/Wiring开发环境。主要包含两个的部分:硬件部分是可以用来做电路连接的Arduino电路板;另外一个则是Arduino IDE,你的计算机中的程序...
它构建于开放原始码simple I/O介面版,并且具有使用类似Java、C语言的Processing/Wiring开发环境。主要包含两个主要的部分:硬件部分是可以用来做电路连接的Arduino电路板;另外一个则是Arduino IDE,你的计算机中的...