`
爱迪生的小屋
  • 浏览: 36474 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Arduino 与 Java

阅读更多

开博第一篇,先写一点我现在感兴趣的东西: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竟然是以前土豆的同事,哈哈,这也是激起我开这个博客的直接动力

分享到:
评论
1 楼 wtugua 2017-04-28  
你好,想问一下你这个项目进行的怎样了,我也在研究nanovm,遇到好多问题不懂

相关推荐

    (源码)基于Arduino和Java的直流电机监控系统.zip

    # 基于Arduino和Java的直流电机监控系统 ## 项目简介 本项目是一个基于Arduino和Java的直流电机监控系统,旨在通过网络控制和监控带有编码器的直流电机。... 使用HTTP GET请求与Arduino进行通信,实现远程控制。

    Arduino联通java博文的代码

    Java与Arduino的通信通常依赖于串行通信,例如使用SerialPort类,它位于Java的javax.comm库中。Java程序会监听串口,接收Arduino发送的数据,并可能根据这些数据做出反应。同时,Java也可能通过串口向Arduino发送...

    BabyCARE-Arduino-Java-Source-Code:BabyCARE arduino + java项目-java project source code

    【标题】"BabyCARE-Arduino-Java-Source-Code:BabyCARE arduino + java项目-java project source code" 提供的是一个结合了Arduino硬件平台与Java软件开发的婴儿护理项目的源代码。这个项目旨在利用Arduino的实时...

    RFID-ARDUINO-JAVA.rar_java RFID_rfid_usefull75

    总的来说,这个项目涵盖了硬件接口(RFID阅读器与Arduino)、软件编程(Java与RXTX库)、串行通信以及RFID技术的基本原理。通过实践这个项目,你将能够掌握RFID系统的设计和开发,以及如何将它们融入到Java应用程序...

    精选_基于Arduino和Java实现的教室桌面控制系统_源码打包

    根据标签“java 开发语言”,我们可以推断出这个项目主要的编程工作是在Java环境下完成的,可能涉及到网络通信、多线程、IO流等Java核心技术,以便Java应用程序能够与Arduino板进行通信,接收和发送指令。...

    java.rar_arduino_java serial

    Arduino code on serial

    Arduino-SerialRead-Java:如何使用 Java 应用程序与 Arduino 板通信

    如何使用 Java 应用程序与 Arduino 板通信。 ##Intro## 在这个例子中,我将展示如何使用 Java 应用程序读取 Arduino 板发送的数据。 Arduino 板详细说明一个随机数并通过串行端口打印数据。 Java 应用程序旨在查找...

    arduino-y-java:Conecta arduino一个Java

    在本文中,我们将深入探讨如何将Arduino与Java编程语言相结合,实现两者之间的通信。Arduino是一种开源电子原型平台,常用于物理计算和互动装置项目。而Java作为一款强大的、跨平台的编程语言,广泛应用于各种软件...

    课程设计-设计了一个由stc89c52和Arduino搭建的压力控制平台,同时使用matlab和java进行计算机与单片机的串

    课程设计——设计了一个由stc89c52和Arduino搭建的压力控制平台,同时使用matlab和java进行计算机与单片机的串 课程设计——设计了一个由stc89c52和Arduino搭建的压力控制平台,同时使用matlab和java进行计算机与...

    Arduino Mkr1000和Java Swing射击游戏-项目开发

    标题中的“Arduino Mkr1000和Java Swing射击游戏-项目开发”表明这是一个结合了硬件和软件的项目,利用Arduino Mkr1000作为控制器,与Java Swing框架一起构建了一个射击游戏。这个项目旨在将嵌入式系统与桌面应用相...

    在Arduino上用Java编程-序

    NULL 博文链接:https://edisonlovecola.iteye.com/blog/1869689

    java-serial-communication-arduino:java-串行通信-arduino

    java-串行通信-arduino java-serial-communication-arduino :一段从 Arduino 读取串口值的代码(使用 linux 32 位 naitve lib) 1 - 在你的 CLASS_PATH 中使用 comm.jar 2 - 在你的 CLASS_PATH 中也有 javax.comm....

    arduino-1.8.9版本

    这个"arduino-1.8.9版本"压缩包包含了一系列与Arduino开发相关的文件和工具,让我们来深入了解一下其中包含的重要知识点。 1. **Arduino IDE**: Arduino的核心是其集成开发环境(IDE),它是一个基于Java的编程软件...

    java-arduino-serial

    标题 "java-arduino-serial" 指的是一项利用Java编程语言与Arduino硬件进行串行通信的项目。在Java世界中,与硬件交互通常需要...通过阅读这些内容,开发者可以学习如何将Java与Arduino结合,实现自己的硬件控制项目。

    JavaArduino:Java Arduino 接口和串行通信

    在本文中,我们将深入探讨Java与Arduino之间的连接、串行通信的基础以及如何利用Java实现这一通信过程。 首先,Java是面向对象的编程语言,广泛应用在服务器端开发、移动应用以及嵌入式系统等领域。而Arduino则是一...

    Autopilot with Arduino and JAVA:带有Arduino和Java的自动Pitloto-开源

    标题 "Autopilot with Arduino and Java: 带有Arduino和Java的自动Pilot-开源" 暗示了这是一个项目,它结合了硬件平台Arduino和编程语言Java,用于实现一个自动驾驶系统。这个系统可能是一个原型或者教育项目,因为...

    基于Arduino与Processing的悬挂画图机器人的设计.pdf

    根据提供的文件内容,以下是针对“基于Arduino与Processing的悬挂画图机器人的设计”这一主题的知识点: 1. 绘画机器人现状问题: 当前市场上的绘画机器人存在价格昂贵、结构复杂、难以实现以及功能扩展有限等问题...

    Arduino 1.0.6编程软件安装包.rar

    Arduino是一款易于上手的电子原型平台开发软件,其包含了硬件和软件,构建于开放原始码simple I/O介面版,使用类似于C和JAVA的开发环境,通过硬件模块连接的Arduino电路板,Arduino IDE程序开发环境,让你在IDE中...

    Arduino所有库.zip

    9. **Firmata**: Firmata是一个协议,允许Arduino板通过各种编程语言(如 Processing、Java 或 JavaScript)进行远程控制。这个库可能包含了实现Firmata协议的代码。 10. **ADXL345**: ADXL345是一款低功耗、三轴加...

Global site tag (gtag.js) - Google Analytics