Minha equipe de hardware planeja usar um microcontrolador Atmel AVR de 8 bits para um projeto futuro.
Até onde eu sei, ele deve ser programado em C. Encontrei uma JVM para AVR, embora seja mais limitada que as bibliotecas C nativas da Atmel.
Você pode me sugerir um microcontrolador de 8 bits que suporte Java?
PS. Não conheço C e sou inexperiente em programação de microprocessadores.
microcontroller
avr
java
sterz
fonte
fonte
big_floating_skirt
objeto que implementa aboat
interface noorg.buoyant
pacote epole
objetos que possuem algum tipo de padrão de herança estranho com ojava.net
qual não me lembro agora (mas está claramente descrito na UML)?Respostas:
Se você não tem experiência no campo de programação microprocessador / microcontrolador, provavelmente deve aprender C primeiro, para entender quando e por que Java é uma má escolha para a maioria dos projetos de microcontroladores.
Você leu as restrições na JVM que você vinculou? Inclui os seguintes problemas:
Se você não estiver familiarizado com o significado dessas restrições, verifique se possui um plano B, caso não consiga executar o projeto com Java devido às restrições de espaço e velocidade.
Se você ainda deseja usar o Java, talvez porque espere que o dispositivo seja programado por muitas pessoas que conhecem apenas o Java, sugiro fortemente que obtenha hardware maior, provavelmente algo que execute o Linux incorporado. Consulte esta página da Oracle para obter algumas especificações a serem executadas para executar a JVM incorporada. Nas perguntas frequentes de suas discussões, eles recomendam um mínimo de 32 MB de RAM e 32 MB de Flash. Isso é cerca de 32.000 vezes a RAM e 1.0000 vezes o Flash do AVR que você está vendo. A página Java Embedded Intro da Oracle detalha as restrições da JVM. O tom de voz deles é, como você pode imaginar, muito mais amigável a Java do que o meu. Esteja ciente de que esse tipo de hardware é muito mais difícil de projetar do que um AVR de 8 bits.
Eu sou um estudante de engenharia da computação com um menor de ciência da computação. O departamento de CS da minha universidade bebeu o Java Kool-aid, então muitos estudantes do programa de engenharia conhecem apenas Java (o que é um estado triste para um programador, pelo menos aprenda um pouco de Python ou C ++, se você não deseja aprender C ...), então um de meus professores publicou uma C Cheat Sheet para estudantes com um ano de experiência em Java. São apenas 75 páginas; Sugiro que você o leia ou remova antes de tomar uma decisão. Na minha opinião, C é a linguagem mais eficiente, durável e profissional para desenvolver um projeto incorporado.
Outra alternativa a considerar é a estrutura do Arduino . Ele usa uma versão simplificada da linguagem Wiring , que é como C ++ sem objetos ou cabeçalhos. Pode ser executado em muitos chips AVR, definitivamente não está restrito ao seu hardware. Isso lhe dará uma curva de aprendizado mais fácil do que apenas pular direto para C.
Em conclusão,
Alt text: Levei cinco tentativas para encontrar a certa, mas consegui salvar nossa noite fora - se não o barco - no final.
fonte
O ambiente de programação mais popular para o Atmel AVR é o Arduino . A linguagem Arduino é um subconjunto de C ++.
Os "esboços" / programas do Arduino parecem sintaticamente muito semelhantes ao Java. A linguagem Wiring da qual o Arduino deriva possui implementações em C ++ ( Arduino ), Java ( Processing ) e Javascript ( processing.js ).
Ambos os idiomas compartilham o mesmo estilo de declaração, construções de loop e operadores aritméticos devido à sua ancestralidade comum em Algol68. Normalmente, todos os objetos no Arduino são declarados globalmente ou na pilha; assim, como Java, as funções de membro são chamadas com o
.
operador (por exemploLED.flash()
).A linguagem será muito familiar para um programador Java - mas, o mais importante, os esboços do Arduino são compilados em código nativo, que é executado a toda velocidade com acesso total ao hardware. Isso é essencial para obter o máximo do seu microcontrolador.
Aqui está a API .
O Arduino fornece tudo o que você precisa para começar: hardware de baixo custo, um ambiente de desenvolvimento integrado gratuito e um gerenciador de inicialização (para que você possa carregar o código via USB / serial).
fonte
Quero deixar claro que não usei um antes, mas havia um ano atrás chamado de Javelin. É possível que a Parallax as tenha adquirido ou algo assim, porque agora o único que aparece é o "Javelin Stamp". Anos atrás, também costumava haver uma empresa chamada Velocity Semiconductor, que substituía (supostamente) os módulos principais da Rabbit Semiconductor e possuía uma JVM em hardware, mas essa empresa aparentemente desapareceu. Boa sorte na sua pesquisa!
fonte
A Sun Microsystems costumava criar uma plataforma chamada Sun Spot, que era basicamente uma plataforma Java incorporada. Agora, obviamente, a Sun Microsystems não existe mais (a Oracle os comprou), mas parece que você ainda pode comprar os Sun Spots - http://www.sunspotworld.com/products/ . Eu não sou grande com a idéia de usar Java em um ambiente incorporado (nível errado de abstração para a tarefa imho), mas essa parece ser a plataforma incorporada mais natural para Java. Observe as especificações sobre essas coisas - elas são pesadas 180MHz / 512k RAM e não são baratas por US $ 400 para um kit inicial.
Portanto, serei um segundo ou terceiro entre os respondentes de advocacia do Arduino a esta pergunta. Existe um inferno de uma comunidade lá fora para apoiá-lo, se você precisar de ajuda. E se você precisar de hardware periférico, procure "Arduino Shields" no Google e surpreenda-se - você pode fazer qualquer coisa, desde servomotores de controle até pular em uma rede sem fio 802.11 com a combinação certa de escudos. Não é prático aprender C (o ponteiro diz o quê !?) sem tempo de prática, mas você pode começar a escrever esboços do Arduino em pouco tempo ... Você também pode obter plataformas Arduino "reais" em torno de US $ 30 e clones (por exemplo, RBBB ou DorkBoard) por menos de US $ 15.
fonte
A Parallax produz o Javelin Stamp , um CoM (Computer-on-Module) que executa uma JVM.
São US $ 60 e executam aproximadamente 8.500 instruções Java por segundo.
Além disso, o PCB é rosa (sério!)
fonte
Os sistemas Ajile produzem uma variedade de chips java e placas de avaliação incorporados nativos em tempo real.
Eles executam java bare metal. É muito agradável.
www.ajile.com faça as fichas e as placas de avaliação.
www.systronix.com vende uma variedade de hardware Java incorporado.
Eu usei o AJ-100 da ajile para trabalhos exigentes, eles são muito agradáveis de se trabalhar. E não, eles não são tão baratos quanto um avr, mas processam dados como um pentium de baixo custo.
Os chips de Ajiles respondem a interrupções (latência de interrupção) em menos de 1 microssegundo.
fonte
Minha experiência pessoal é que o código C para programar e começar a usar o AVR é bastante fácil, eu também venho de muitos anos fazendo java e, após cerca de 2 meses de uso de esboços do arduino, deixei o ambiente e fui para o avr-gcc, sites como avrfreaks, é fácil encontrar respostas para problemas comuns. (Eu ainda faço tudo no meu fiel Arduino Duemillenove)
Usar o eclipse para compilar e "implantar", ou seja, gravar no chip, também é bom, pois não preciso lidar com outro IDE
Eu acho que é realmente mais difícil entender seus registros, registros de 16 bits e lê-los na ordem apropriada, interrupções, temporizadores, PWM de hardware, do que a própria linguagem de programação.
fonte
Embora eu geralmente seja do campo "aprenda C e entenda o que os processadores realmente fazem" no que diz respeito ao trabalho incorporado, vale ressaltar que um pequeno chip de braço não é muito mais caro que um AVR e é quase plausível posição para lidar com tarefas simples em cima de uma jvm.
fonte
O NanoVM é uma Java Virtual Machine projetada para executar em microcontroladores AVR de 8 bits.
(a partir da página inicial)
fonte
Não é exatamente Java - ou 8 bits, mas há um interpretador Javascript disponível para microcontroladores ARM de baixa potência chamado Espruino .
fonte