我的硬件团队计划在未来的项目中使用Atmel AVR 8位微控制器。
据我所知,它必须用C编程。我已经找到了用于AVR 的JVM,尽管它比Atmel的本机C库更受限制。
您能建议我一个支持Java的8位微控制器吗?
PS。我不了解C,并且我对微处理器编程没有经验。
big_floating_skirt
实现包中boat
接口的对象吗?还有那些我现在不记得的奇怪的继承模式的对象(但在UML中有明确描述)?org.buoyant
pole
java.net
我的硬件团队计划在未来的项目中使用Atmel AVR 8位微控制器。
据我所知,它必须用C编程。我已经找到了用于AVR 的JVM,尽管它比Atmel的本机C库更受限制。
您能建议我一个支持Java的8位微控制器吗?
PS。我不了解C,并且我对微处理器编程没有经验。
big_floating_skirt
实现包中boat
接口的对象吗?还有那些我现在不记得的奇怪的继承模式的对象(但在UML中有明确描述)?org.buoyant
pole
java.net
Answers:
如果您对微处理器/微控制器编程领域没有经验,那么您可能应该首先学习C,以便您了解何时和为什么Java对大多数微控制器项目来说是一个糟糕的选择。
您是否阅读了对链接的JVM的限制?它包括以下问题:
如果您不熟悉这些限制的含义,请确定您有一个计划B,如果发现由于空间和速度限制您实际上无法使用Java进行该项目。
如果您仍然想使用Java,也许是因为您希望该设备由许多只懂Java的人来编程,所以我强烈建议您购买更大的硬件,可能是运行嵌入式Linux的硬件。请参阅Oracle的此页面以获取运行嵌入式JVM所需的一些规格,他们在讨论的FAQ中建议至少32MB的RAM和32MB的Flash。这大约是您要查看的AVR的RAM的32,000倍和Flash的1,000倍。Oracle的Java Embedded Intro页面详细介绍了JVM的限制。您可能会猜到,他们的语气比我的Java更友好。请注意,这种硬件比8位AVR设计起来困难得多。
我是计算机工程专业的计算机工程专业的学生。我大学的CS系喝醉了Java Kool-aid,因此工程程序中的许多学生都只知道Java(这对程序员来说是一种可悲的状况,如果您不这样做,至少要学习一些Python或C ++)想学习C ...),所以我的一位教授为具有一年Java经验的学生发布了C作弊表。只有75页;我建议您先阅读或略读它,然后再做决定。我认为,C是开发嵌入式项目的最有效,持久和专业的语言。
可以考虑的另一种选择是Arduino框架。它使用了简化版的Wiring语言,就像没有对象或标头的C ++。它可以在许多AVR芯片上运行,绝对不限于它们的硬件。这将使您比直接跳入C语言更容易学习。
最后,
Alt文字:我花了五次试图找到合适的那只,但最后我还是设法挽救了我们的夜晚-如果不是船的话。
Atmel AVR最受欢迎的编程环境是Arduino。Arduino语言是C ++的子集。
语法上,Arduino“草图” /程序看起来与Java非常相似。Arduino衍生的接线语言具有C ++(Arduino),Java(Processing)和Javascript(processing.js)的实现。
两种语言在Algol68中具有相同的血统,因此它们具有相同的声明样式,循环结构和算术运算符。通常,Arduino中的所有对象都在全局或堆栈上声明,因此像Java一样,成员函数由.
运算符调用(例如LED.flash()
)。
该语言对于Java程序员将是非常熟悉的-但是,重要的是,Arduino草图被编译为本地代码,可以在具有完全硬件访问的情况下全速运行。这对于充分利用微控制器至关重要。
这是API。
Arduino提供了发展所需的一切:低成本硬件,免费的集成开发环境和引导加载程序(因此您可以通过USB /串行加载代码)。
Sun Microsystems曾经制造过一个称为Sun Spot的平台,该平台基本上是嵌入式Java平台。现在显然Sun Microsystems已经不在了(Oracle买了它们),但是看来您仍然可以购买Sun Spots- http://www.sunspotworld.com/products/。我对在嵌入式环境中使用Java的想法并不抱有太大的想法(工作恕我直言的抽象级别错误),但这似乎是Java中最自然的嵌入式平台。请注意这些东西的规格-它们是重型180MHz / 512k RAM,而且对于入门套件来说,价格也不便宜,只有400美元。
因此,我将成为针对该问题的Arduino倡导响应者的第二或第三位。如果您需要帮助,有一个社区的地狱可以为您提供支持。并且,如果您需要外围硬件,请在Google上查找“ Arduino Shields”,并感到惊讶-您可以执行任何操作,从控制伺服电机到使用正确的屏蔽组合跳至802.11无线网络。没有一些练习时间来学习C(指针说什么!?)是不切实际的,但是您可以很快就开始编写Arduino草图了。您还可以在30美元左右获得“真正的” Arduino平台并进行克隆(例如RBBB或DorkBoard)的价格不到15美元。
Ajile系统制造各种本地嵌入式,实时Java芯片和评估板。
他们运行裸机Java。非常愉快。
www.ajile.com制造芯片和评估板。
www.systronix.com出售各种嵌入式Java硬件。
我已经使用ajile的AJ-100进行苛刻的工作,它们非常好用。不,它们不像avr便宜,但是它们像低端奔腾一样处理数据。
Ajiles的芯片可在1微秒内响应中断(中断等待时间)。
NanoVM是一种Java虚拟机,旨在在8位AVR微控制器上运行。
(来自主页)
它不是功能齐全的Java VM,并且永远不会。它将始终限于Java语言和标准Java库的一小部分,以及一些特定于应用程序的方法。此外,这并不意味着取代C作为对微控制器进行编程的标准方法。与C或汇编程序相比,它的灵活性较差且性能较低。
NanoVM是一种为基于微控制器的设备提供有限但可控制的编程接口的方法。由于大多数特定于硬件的代码都是NanoVM本身的一部分,因此用户可以专注于应用程序本身。如果为用户提供了配备NanoVM的设备,则无需考虑硬件本身。此外,他不需要任何特定于目标的编译器等。他需要的只是一个标准的Java编译器和NanoVMTool,它本身是用Java编写的。因此,整个开发链可在具有Java编译器并可以运行Java代码的任何设备上工作。借助NanoVM提供的硬件抽象,用户甚至不必在乎目标所基于的微控制器类型。