11 votos

Microcontrolador con API Java

Mi equipo de hardware está planeando utilizar un microcontrolador Atmel AVR de 8 bits para un futuro proyecto.

Hasta donde yo sé, debe ser programado en C. He encontrado un JVM para AVR, aunque es más limitado que las bibliotecas C nativas de Atmel.

¿Pueden sugerirme un microcontrolador de 8 bits que soporte Java?

PS. No sé C y no tengo experiencia en la programación de microprocesadores.

35voto

Simon Gillbee Puntos 366

Si no tienes experiencia en el campo de la programación de microprocesadores/microcontroladores, probablemente deberías aprender primero C, para poder entender cuándo y por qué Java es una mala opción para la mayoría de los proyectos de microcontroladores.

¿Has leído las restricciones de la JVM que has enlazado? Incluye los siguientes problemas:

  • Tan sólo 512 bytes de memoria de programa (no KB, y definitivamente no MB)
  • Tan sólo 768 bytes de RAM (donde van tus variables. Está limitado a 768 caracteres de cadenas por esta restricción).
  • Unos 20k opcodes Java por segundo en un AVR de 8 Mhz.
  • Sólo incluye java.lang.Object, java.lang.System, java.io.PrintStream, java.lang.StringBuffer, una clase de control de JVM y una clase nativa de IO. No podrás hacer un import java.util.*; y obtener todas las clases que no estén en esta lista.

Si no estás familiarizado con lo que significan estas restricciones, asegúrate de tener un plan B si resulta que no puedes realizar el proyecto con Java debido a las restricciones de espacio y velocidad.

Si todavía quieres ir con Java, tal vez porque esperas que el dispositivo sea programado por un montón de gente que sólo sabe Java, yo sugeriría fuertemente conseguir un hardware más grande, probablemente algo que ejecute Linux embebido. Ver esta página de Oracle para algunas especificaciones para ejecutar la JVM embebida, en el FAQ de su discusión recomiendan un mínimo de 32MB de RAM y 32MB de Flash. Eso es unas 32.000 veces la RAM y 1.0000 veces la Flash del AVR que estás viendo. Oracle's Introducción a Java Embedded entra en más detalles sobre las restricciones de la JVM. Su tono de voz es, como puedes adivinar, bastante más amigable con Java que el mío. Ten 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 una especialización en ciencias de la computación. El departamento de ciencias de la computación de mi universidad se ha bebido el Kool-aid de Java, por lo que muchos estudiantes del programa de ingeniería llegan sabiendo sólo Java (lo cual es una triste situación para un programador, al menos aprende algo de Python o C++ si no quieres aprender C...), así que uno de mis profesores publicó un Hoja de trucos C para estudiantes con un año de experiencia en Java. Sólo tiene 75 páginas; le sugiero que lo lea o lo hojee antes de tomar una decisión. En mi opinión, C es el lenguaje más eficiente, duradero y profesional para desarrollar un proyecto embebido.

Otra alternativa a considerar es el Arduino marco. Utiliza una versión reducida de la Cableado que es como C++ sin objetos ni cabeceras. Puede funcionar en muchos chips AVR, definitivamente no está restringido a su hardware. Te dará una curva de aprendizaje más fácil que saltar directamente a C.

En conclusión,
XKCD Golden Hammer
Texto alternativo: Me costó cinco intentos encontrar el correcto, pero al final conseguí salvar nuestra noche, aunque no el barco.

4voto

JW. Puntos 145

No hay problema en escribir una teoría que contenga partículas cargadas sin masa. Simple $\mathcal{L} = \partial_{\mu} \phi \partial^{\mu} \phi^*$ para un campo complejo $\phi$ hará el trabajo. Es posible que tengas problemas con la renormalización, pero no quiero entrar en eso aquí (sobre todo porque hay gente mejor aquí que puede llenar los detalles si es necesario).

Haciendo caso omiso de la teoría, esas partículas serían fáciles de observar suponiendo su densidad lo suficientemente alta. Además, como probablemente sepas, las partículas del Modelo Estándar decaen obligatoriamente (tarde o temprano) en partículas más ligeras siempre que se cumplan las leyes de conservación (como la ley de conservación de la carga eléctrica). Así que suponer que existen partículas cargadas sin masa haría inmediatamente inestable toda la materia cargada (en particular los electrones) a menos que esas nuevas partículas difieran en algunos otros números cuánticos.

Ahora bien, si no mencionaras la carga eléctrica en particular, la respuesta sería más sencilla, ya que en nuestros modelos tenemos gluones (de color) sin masa. Así que definitivamente no es nada extraño considerar partículas cargadas sin masa. Depende de ti si consideras que la carga eléctrica es más importante que la carga de color.

Otro punto de vista sobre esta cuestión es que las partículas del Modelo Estándar (y en particular las cargadas) no tenían masa antes de la ruptura electrosimétrica (al menos sin tener en cuenta otros mecanismos de generación de masa). Así que, en algún momento del pasado, esto era bastante común.

4voto

mathewbutler Puntos 479

Quiero dejar claro que no he usado ninguno antes, pero hace años había uno llamado Javelin. Es posible que Parallax los haya adquirido o algo así, porque ahora el único que sale es el "Javelin Stamp". Hace años también había una compañía llamada Velocity Semiconductor, que hacía un (supuestamente) reemplazo de los módulos centrales de Rabbit Semiconductor, y tenía una JVM en el hardware, pero esa compañía aparentemente ha desaparecido. Buena suerte en tu búsqueda.

3voto

Stephen Denne Puntos 218

Aquí hay uno más: Los eurócratas se olvidan de Gales en la portada de Anuario de Eurostat 2004

enter image description here

Reacciones de BBC , Telégrafo y Correo .

(a través de Spatial Analysis blog ; imagen de NOTICIAS DEL GIT )

1voto

Andrew Walker Puntos 9038

Aquí hay un truco sucio. $\frac{1}{2^n} \sum_{r \ge 0} r {n \choose r}$ es el tamaño esperado de un subconjunto aleatorio de un $n$ -conjunto de elementos. Pero por la linealidad de la expectativa, esto es $n$ veces la probabilidad de que cualquier elemento esté en un subconjunto, que es $\frac{1}{2}$ . Así que

$$\frac{1}{2^n} \sum_{r \ge 0} r {n \choose r} = \frac{n}{2}.$$

Editar: Y ya que tengo esto escrito en alguna parte, puedo usarlo. En esta respuesta de math.SE Demuestro lo siguiente. Si $a_n, b_n$ son secuencias que satisfacen $b_n = \sum_{k=0}^n {n \choose k} a_k$ y si $A(x) = \sum_{n \ge 0} a_n x^n, B(x) = \sum_{n \ge 0} b_n x^n$ entonces

$$B(x) = \frac{1}{1 - x} A \left( \frac{x}{1 - x} \right).$$

En este ejemplo $a_n = n$ . Se puede demostrar con varios argumentos que en este caso $A(x) = \frac{x}{(1 - x)^2}$ ; este es un caso especial de una identidad que utilizo en la respuesta anterior. De ello se desprende que

$$B(x) = \frac{1}{1 - x} \left( \frac{ \frac{x}{1-x} }{ \left( 1 - \frac{x}{1-x} \right)^2 } \right) = \frac{x}{(1 - 2x)^2} = \frac{1}{2} \frac{2x}{(1 - 2x)^2} = \frac{1}{2} \sum_{n \ge 0} n \cdot 2^n x^n$$

como se desee.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X