Mon équipe matérielle prévoit d'utiliser un microcontrôleur Atmel AVR 8 bits pour un futur projet.
Pour autant que je sache, il doit être programmé en C. J'ai trouvé une JVM pour AVR, bien qu'elle soit plus limitée que les bibliothèques C natives d'Atmel.
Pouvez-vous me suggérer un microcontrôleur 8 bits qui prend en charge Java?
PS. Je ne connais pas C et je suis inexpérimenté en programmation microprocesseur.
microcontroller
avr
java
sterz
la source
la source
big_floating_skirt
objet qui implémente l'boat
interface dans leorg.buoyant
package, et despole
objets, qui ont une sorte de modèle d'héritage bizarre avecjava.net
lequel je ne me souviens pas maintenant (mais qui est clairement décrit dans l'UML)?Réponses:
Si vous êtes inexpérimenté dans le domaine de la programmation des microprocesseurs / microcontrôleurs, vous devriez probablement apprendre le C en premier, afin de pouvoir comprendre quand et pourquoi Java est un mauvais choix pour la plupart des projets de microcontrôleurs.
Avez-vous lu les restrictions sur la machine virtuelle Java que vous avez liée? Il comprend les problèmes suivants:
Si vous ne savez pas ce que ces restrictions signifient, assurez-vous d'avoir un plan B s'il s'avère que vous ne pouvez pas réellement faire le projet avec Java en raison des restrictions d'espace et de vitesse.
Si vous voulez toujours utiliser Java, peut-être parce que vous vous attendez à ce que l'appareil soit programmé par beaucoup de gens qui ne connaissent que Java, je vous suggère fortement d'obtenir un matériel plus gros, probablement quelque chose qui exécute Linux embarqué. Voir cette page d'Oracle pour quelques spécifications à utiliser pour exécuter la JVM intégrée, dans la FAQ de leur discussion, ils recommandent un minimum de 32 Mo de RAM et 32 Mo de Flash. C'est environ 32 000 fois la RAM et 1 000 fois le flash de l'AVR que vous regardez. La page Java Embedded Intro d' Oracle explique plus en détail les restrictions de la JVM. Leur ton de voix est, comme vous pouvez le deviner, beaucoup plus compatible avec Java que le mien. Sachez que ce type de matériel est beaucoup plus difficile à concevoir qu'un AVR 8 bits.
Je suis un étudiant en génie informatique avec une mineure en informatique. Le département CS de mon université a bu le Java Kool-aid, donc beaucoup d'étudiants du programme d'ingénierie ne connaissent que Java (ce qui est une triste situation pour un programmeur, apprenez au moins du Python ou du C ++ si vous ne le faites pas). voulez apprendre le C ...), alors un de mes professeurs a publié une feuille de triche C pour les étudiants ayant un an d'expérience Java. C'est seulement 75 pages; Je vous suggère de le lire ou de le parcourir avant de prendre une décision. À mon avis, C est le langage le plus efficace, le plus durable et le plus professionnel pour développer un projet intégré.
Une autre alternative à considérer est le framework Arduino . Il utilise une version allégée du langage de câblage , qui est comme C ++ sans objets ni en-têtes. Il peut fonctionner sur de nombreuses puces AVR, ce n'est certainement pas limité à leur matériel. Cela vous donnera une courbe d'apprentissage plus facile que de sauter directement en C.
En conclusion,
texte Alt: Il m'a fallu cinq essais pour trouver le bon, mais j'ai réussi à sauver notre soirée - sinon le bateau - à la fin.
la source
L'environnement de programmation le plus populaire pour l'AVR Atmel est Arduino . Le langage Arduino est un sous-ensemble de C ++.
Les "croquis" / programmes Arduino semblent syntaxiquement très similaires à Java. Le langage de câblage dont Arduino dérive a des implémentations en C ++ ( Arduino ), Java ( Processing ) et Javascript ( processing.js ).
Les deux langues partagent le même style de déclaration, les constructions de boucles et les opérateurs arithmétiques en raison de leur ascendance commune dans Algol68. En règle générale, tous les objets dans Arduino sont déclarés globalement ou sur la pile, comme Java, les fonctions membres sont appelées avec l'
.
opérateur (par exempleLED.flash()
).Le langage sera très familier à un programmeur Java - mais, surtout, les croquis Arduino sont compilés en code natif qui s'exécute à pleine vitesse avec un accès matériel complet. Ceci est essentiel pour tirer le meilleur parti de votre microcontrôleur.
Voici l' API .
Arduino fournit tout ce dont vous avez besoin pour démarrer: un matériel à faible coût, un environnement de développement intégré gratuit et un chargeur de démarrage (vous pouvez donc charger du code via USB / série).
la source
Je tiens à préciser que je n'en ai jamais utilisé auparavant, mais il y en avait un il y a un an appelé Javelin. Il est possible que Parallax les ait acquis ou quelque chose comme ça, car maintenant le seul qui apparaît est le "Javelin Stamp". Il y a des années, il y avait aussi une entreprise appelée Velocity Semiconductor, qui a fait un remplacement (supposément) pour les modules de base de Rabbit Semiconductor, et il y avait une JVM en matériel, mais cette entreprise a apparemment disparu. Bonne chance dans votre recherche!
la source
Sun Microsystems avait l'habitude de créer une plate-forme appelée Sun Spot, qui était essentiellement une plate-forme Java intégrée. Maintenant, évidemment, Sun Microsystems n'est plus là (Oracle les a achetés), mais il semble que vous pouvez toujours acheter Sun Spots - http://www.sunspotworld.com/products/ . Je ne suis pas grand sur l'idée d'utiliser Java dans un environnement embarqué (mauvais niveau d'abstraction pour le travail à mon humble avis) mais cela semble être la plate-forme embarquée la plus naturelle pour Java. Notez les spécifications de ces choses - elles sont robustes à 180 MHz / 512k RAM, et elles ne sont pas bon marché à 400 $ pour un kit de démarrage.
Je serai donc un deuxième ou un troisième pour les intervenants de plaidoyer Arduino à cette question. Il existe une communauté d'enfer pour vous soutenir si vous avez besoin d'aide. Et si vous avez besoin de matériel périphérique, recherchez "Boucliers Arduino" sur Google et soyez étonné - vous pouvez faire n'importe quoi, des servomoteurs de contrôle à sauter sur un réseau sans fil 802.11 avec la bonne combinaison de boucliers. Ce n'est pas pratique d'apprendre le C (le pointeur dit quoi!?) Sans un peu de temps de pratique, mais vous pouvez commencer à écrire des croquis Arduino en un rien de temps ... Vous pouvez également obtenir de "vraies" plates-formes Arduino autour de 30 $ et des clones (par exemple RBBB ou DorkBoard) pour moins de 15 $.
la source
Parallax crée le Javelin Stamp , un CoM (Computer-on-Module) qui exécute une JVM.
C'est 60 $ et exécute une flamboyante ~ 8 500 instructions Java / sec.
De plus, le PCB est rose (vraiment!)
la source
Les systèmes Ajile produisent une variété de puces Java et de cartes d'évaluation natives intégrées en temps réel.
Ils exécutent du java en métal nu. C'est très agréable.
www.ajile.com fabrique les puces et les planches d'évaluation.
www.systronix.com vend une variété de matériel java intégré.
J'ai utilisé AJ-100 d'ajile pour un travail exigeant, ils sont très agréables à travailler. Et non, ils ne sont pas aussi bon marché qu'un avr, mais ils traitent les données comme un pentium bas de gamme.
Les puces d'Ajiles répondent aux interruptions (latence d'interruption) en moins de 1 microseconde.
la source
Mon expérience personnelle est que le code C pour programmer et démarrer avec AVR est assez facile, je viens également de nombreuses années de java, et après environ 2 mois d'utilisation de croquis en arduino, j'ai abandonné l'environnement et j'ai opté pour avr-gcc, sites comme avrfreaks permettent de trouver facilement des réponses aux problèmes courants. (Je fais toujours tout sur mon fidèle Arduino Duemillenove)
Utiliser eclipse pour compiler et "déployer", c'est-à-dire écrire sur la puce, est également agréable car je n'ai pas à faire face à un autre IDE
Je pense qu'il est en fait plus difficile de se familiariser avec les registres, les registres 16 bits et de les lire dans l'ordre approprié, les interruptions, les temporisateurs, le PWM matériel, que le langage de programmation lui-même.
la source
Bien que je sois généralement du camp «apprendre C et comprendre ce que les processeurs font réellement» en ce qui concerne le travail intégré, il convient de souligner qu'une puce à petit bras n'est pas beaucoup plus chère qu'un AVR et est presque plausible. position pour gérer des tâches simples sur une jvm.
la source
NanoVM est une machine virtuelle Java conçue pour fonctionner sur des microcontrôleurs AVR 8 bits.
(depuis la page d'accueil)
la source
Ce n'est pas tout à fait Java - ou 8 bits, mais il existe un interpréteur Javascript disponible pour les microcontrôleurs ARM de faible puissance appelé Espruino .
la source