Mi equipo de hardware está planeando usar un microcontrolador Atmel AVR de 8 bits para un proyecto futuro.
Hasta donde sé, debe programarse en C. He encontrado una JVM para AVR, aunque es más limitada que las bibliotecas C nativas de Atmel.
¿Me puede sugerir un microcontrolador de 8 bits que admita Java?
PD. No sé C y no tengo experiencia en programación de microprocesadores.
microcontroller
avr
java
sterz
fuente
fuente
big_floating_skirt
objeto que implementa laboat
interfaz en elorg.buoyant
paquete ypole
objetos que tienen algún tipo de patrón de herencia extraño con eljava.net
que no puedo recordar ahora (pero se describe claramente en el UML)?Respuestas:
Si no tiene experiencia en el campo de programación de microprocesadores / microcontroladores, probablemente debería aprender C primero, para que pueda entender cuándo y por qué Java es una mala elección para la mayoría de los proyectos de microcontroladores.
¿Leíste las restricciones en la JVM que vinculaste? Incluye los siguientes problemas:
Si no está familiarizado con lo que significan estas restricciones, asegúrese de tener un plan B si resulta que en realidad no puede hacer el proyecto con Java debido a las restricciones de espacio y velocidad.
Si todavía desea utilizar Java, tal vez porque espera que el dispositivo sea programado por muchas personas que solo conocen Java, le sugiero encarecidamente que obtenga un hardware más grande, probablemente algo que ejecute Linux incorporado. Consulte esta página de Oracle para obtener algunas especificaciones para ejecutar la JVM incorporada, en las preguntas frecuentes de su discusión recomiendan un mínimo de 32 MB de RAM y 32 MB de Flash. Eso es aproximadamente 32,000 veces la RAM y 1,0000 veces el Flash del AVR que estás viendo. La página de Introducción Incrustada Java de Oracle entra en más detalles sobre las restricciones de la JVM. Su tono de voz es, como puede suponer, mucho más amigable con Java que el mío. Tenga en cuenta que este tipo de hardware es mucho más difícil de diseñar que un AVR de 8 bits.
Soy un estudiante de ingeniería informática con especialización en informática. El departamento de CS de mi universidad ha bebido el Java Kool-aid, por lo que muchos estudiantes en el programa de ingeniería solo conocen Java (lo cual es un triste estado de cosas para un programador, al menos aprende Python o C ++ si no lo haces). quiero aprender C ...), entonces uno de mis profesores publicó una Cheat Sheet C para estudiantes con un año de experiencia en Java. Son solo 75 páginas; Le sugiero que lo lea o lea antes de tomar una decisión. En mi opinión, C es el lenguaje más eficiente, duradero y profesional para desarrollar un proyecto integrado.
Otra alternativa a considerar es el marco Arduino . Utiliza una versión simplificada del cableado de la lengua, que es como C ++ y sin objetos o cabeceras. Puede ejecutarse en muchos chips AVR, definitivamente no está restringido a su hardware. Le dará una curva de aprendizaje más fácil que simplemente saltar directamente a C.
En conclusión,
texto alternativo: me llevó cinco intentos encontrar el correcto, pero al final pude salvar nuestra noche, si no el bote.
fuente
El entorno de programación más popular para Atmel AVR es Arduino . El lenguaje Arduino es un subconjunto de C ++.
Los "bocetos" / programas de Arduino aparecen sintácticamente muy similares a Java. El lenguaje de cableado del que se deriva Arduino tiene implementaciones en C ++ ( Arduino ), Java ( Processing ) y Javascript ( processing.js ).
Ambos idiomas comparten el mismo estilo de declaración, construcciones de bucle y operadores aritméticos debido a su ascendencia común en Algol68. Por lo general, todos los objetos en Arduino se declaran globalmente o en la pila, por lo que, como Java, las funciones miembro se llaman con el
.
operador (por ejemploLED.flash()
).El lenguaje será muy familiar para un programador de Java, pero, lo que es más importante, los bocetos de Arduino se compilan en código nativo que se ejecuta a toda velocidad con acceso completo al hardware. Esto es fundamental para aprovechar al máximo su microcontrolador.
Aquí está la API .
Arduino proporciona todo lo que necesita para comenzar: hardware de bajo costo, un entorno de desarrollo integrado gratuito y un gestor de arranque (para que pueda cargar el código a través de USB / serie).
fuente
Quiero dejar en claro que no he usado uno antes, pero solía haber uno hace un año llamado Jabalina. Es posible que Parallax los haya adquirido o algo así, porque ahora el único que aparece es el "Sello de Jabalina". Hace años, también solía haber una compañía llamada Velocity Semiconductor, que hizo un reemplazo (supuestamente) para los módulos principales de Rabbit Semiconductor, y tenía un JVM en hardware, pero esa compañía aparentemente ha desaparecido. ¡Buena suerte en tu búsqueda!
fuente
Sun Microsystems solía hacer una plataforma llamada Sun Spot, que era básicamente una plataforma Java integrada. Ahora, obviamente, Sun Microsystems ya no existe (Oracle los compró), pero parece que todavía puede comprar Sun Spots: http://www.sunspotworld.com/products/ . No me gusta la idea de usar Java en un entorno integrado (nivel de abstracción incorrecto para el trabajo en mi humilde opinión), pero esta parece ser la plataforma integrada más natural para Java. Tenga en cuenta las especificaciones sobre estas cosas: son resistentes de 180MHz / 512k RAM, y no son baratas a $ 400 por un kit de inicio.
Así que seré un segundo o un tercero para los defensores de Arduino que abogan por esta pregunta. Existe una gran comunidad para apoyarlo si necesita ayuda. Y si necesita hardware periférico, busque "Arduino Shields" en Google y sorpréndase: puede hacer cualquier cosa, desde servomotores de control hasta una red inalámbrica 802.11 con la combinación correcta de escudos. No es práctico aprender C (¿el puntero dice qué? DorkBoard) por menos de $ 15.
fuente
Parallax crea el Javelin Stamp , un CoM (Computer-on-Module) que ejecuta una JVM.
Cuesta $ 60 y ejecuta unas asombrosas ~ 8,500 instrucciones Java / seg.
Además, el PCB es rosa (¡en serio!)
fuente
Los sistemas Ajile hacen una variedad de chips java embebidos nativos en tiempo real y placas de evaluación.
Corren java de metal desnudo. Es muy agradable
www.ajile.com hace las fichas y evalúa las tablas.
www.systronix.com vende una variedad de hardware integrado de Java.
He usado AJ-100 de ajile para trabajos exigentes, es muy agradable trabajar con ellos. Y no, no son tan baratos como un avr, pero procesan datos como un pentium de gama baja.
Los chips de Ajiles responden a las interrupciones (latencia de interrupción) en menos de 1 microsegundo.
fuente
Mi experiencia personal es que el código C para programar y comenzar con AVR es bastante fácil, también vengo de muchos años haciendo Java, y después de aproximadamente 2 meses de usar bocetos arduino, abandoné el entorno y busqué sitios de avr-gcc. como avrfreaks, hace que sea fácil encontrar respuestas a problemas comunes. (Todavía hago todo en mi fiel Arduino Duemillenove)
Usar eclipse para compilar y "desplegar", es decir, escribir en el chip, también es bueno ya que no tengo que lidiar con otro IDE
Creo que en realidad es más difícil entender los registros, registros de 16 bits y leerlos en el orden apropiado, interrupciones, temporizadores, hardware PWM, que el lenguaje de programación en sí.
fuente
Aunque generalmente pertenecería al campo de "aprender C y comprender lo que los procesadores realmente hacen" en lo que respecta al trabajo integrado, vale la pena señalar que un chip de brazo pequeño no es mucho más caro que un AVR, y es casi plausible posición para manejar tareas simples encima de un jvm.
fuente
NanoVM es una máquina virtual Java diseñada para ejecutarse en microcontroladores AVR de 8 bits.
(desde la página de inicio)
fuente
No es del todo Java, u 8 bits, pero hay un intérprete de Javascript disponible para microcontroladores ARM de baja potencia llamado Espruino .
fuente