96 votes

Comment puis-je me lancer dans la programmation intégrée?

Je voudrais commencer avec la programmation de systèmes embarqués mais je ne sais pas par où commencer ... J'ai une très bonne connaissance de C et C ++ et aimerais de préférence utiliser ces langages avec les compilateurs GNU. J'ai un diplôme en informatique, donc j'ai une base solide ...

Je n'ai aucune idée du matériel et des autres ressources dont j'aurai besoin ... Si vous travaillez ou avez des connaissances dans ce domaine, comment avez-vous commencé et quelles sont les ressources utiles pour un débutant?

Merci.

50voto

Justin Tanner Points 5437

Voici quelques conseils pour débuter dans les systèmes embarqués.

  1. Obtenir un micro-contrôleur. Essayez de démarrer avec une démonstration de conseil. ( ils sont pas cher maintenant )
  2. Plonger dans la programmation et l'exploration de la carte ( allumer la Led, de jouer avec des chronomètres )
  3. Abonnez-vous à Pirater un Jour
  4. Essayez un projet plus ambitieux, impliquant des composants externes ( accéléromètres, les moteurs à courant continu, etc).
  5. Publier votre projet en ligne ( peut-être en vedette sur Pirater un Jour )
  6. Prendre une classe dans les systèmes embarqués ou les systèmes d'exploitation temps réel

Mise à jour:

Ce Conseil de Développement à Utiliser

18voto

dwj Points 2006

J'ai commencé dès la sortie du collège en rejoignant une entreprise qui a fait le développement embarqué. Toute mon expérience précédente était basée sur PC, mais je savais que C et ce qui se passe sur un niveau bas à l'intérieur de la machine.

Voici quelques options pour arriver à:

  • Vous travaillez dans une entreprise qui a intégré des travaux en cours? Pouvez-vous transférer dans le groupe?

  • Rechercher des entreprises dans votre région recrutement junior logiciel embarqué ingénieurs. Beaucoup de gens veulent quelque intégré à l'expérience, mais ne laissez pas cela vous arrêter d'essayer d'obtenir dans la porte. La connaissance de la façon dont le code fonctionne vraiment (à quand la pile utilisé? le tas? ce n'pointeurs vraiment?) est plus important.

  • Ramasser un kit de développement et d'essayer un peu de brew à la maison des projets (p. ex., http://www.embeddedarm.com/products/board-detail.php?product=KIT-ARM#) (maintenant vous parlez $)

De rafraîchir vos connaissances de la façon dont les meules, tas, pointeurs, allocation de mémoire (ou l'absence) de tous les travaux. Lire en temps réel avec des Systèmes d'exploitation (uC/OS-II est un bon début). La pratique de l'écriture propre, maintenable, petit code!

Jack Ganssle a un examen d'un nouveau livre, John Davies "MSP430 Microcontrôleur Bases," qu'il donne de haut accessoires pour débutant et expérimenté développeurs de logiciels embarqués.

16voto

MrEvil Points 1046

Je suis un fan de la AVR papillon et l' Arduino. Les deux sont très bon marché, < $30 USD donc, si vous gravez vos conseil c'est pas une grosse affaire. Les deux ont beaucoup d'exemples de programmes et des exemples d'interface avec le matériel courant. Arduino a aussi un très grand open source de matériel de la communauté qui produit ajouter-sur les boucliers, des schémas, des tutoriels, etc... une Fois que vous avez vos jambes de la mer de l'Arduino chargeur de démarrage peut être remplacé à l'aide de tout AVR ICSP programmeur, vous permettant d'utiliser la GCC AVR chaîne d'outils directement.

En raison de votre expérience, vous pouvez être tenté de sauter directement à l'un des plus avancés des conseils mais je ne vous le conseille. Programmation de systèmes embarqués est une toute nouvelle bête limité des options de débogage et sur le matériel que vous avez patché ensemble à l'aide de cavalier et de la colle chaude. En commençant par un connu et bien documenté de l'environnement comme l'Arduino, vous pouvez éliminer beaucoup de variables rendant plus facile à résoudre tout problème qui pourrait contrecarrer un débutant.

Aussi, j'ai oublié de mentionner quelques ressources utiles:

  • Sparkfun - Vraiment bon amateur détaillant, avec d'excellents forums et tutoriels.
  • AVR Freaks - La principale communauté en ligne pour AVR matériel connexe.
  • Également regarder autour pour les clubs de robotique qui peut être dans votre région.

13voto

gthuffman Points 161

J'ai quelques suggestions:

1) Apprendre à microprocesseur de base tels que les systèmes de mémoire, la façon dont les périphériques sont accessibles, et la différence entre la latence de la mémoire et RTOS "TIQUE".

2) Savoir ce qui se passe lorsqu'une interruption est traitée. Dans le cas où vous n'avez pas compris que le, savoir ce qui se passe lorsqu'une interruption est traitée.

3) Vous pouvez ne pas aimer cette suggestion suivante, mais apprendre le langage d'assemblage pour n'importe quel processeur. Une fois que vous comprenez le langage assembleur, le C et le C++ va faire beaucoup plus de sens dans la façon dont les compilateurs créer un code.

4) Être prêt à tenir une sonde d'oscilloscope. J'ai eu un très bon mentor qui a fait le commentaire, "vous ne pouvez pas programmer sans portée." Ce commentaire alambics me sert plus de 12 ans après je l'ai entendu.

5) Et surtout, être prêt pour le débogage et le dépannage de vraiment différents types de problèmes que vous rencontrez avec le non-incorporé des programmes. Les systèmes embarqués sont l'un des plus difficiles à obtenir "droit", mais la récompense est grande!

Bonne chance dans votre aventure!

10voto

Ben Collins Points 11318

J'ai commencé par la rédaction d'un PC à base de système d'exploitation à partir de zéro. C'était un fabuleux moyen pour s'habituer à l'écriture d'applications sur-le-métal (qui est essentiellement ce que "la programmation embarquée' est, même si vous utilisez un système d'exploitation temps réel comme VxWorks ou quoi que ce soit).

Vous n'avez pas besoin d'acheter quoi que ce soit - il suffit de télécharger Bochs, qui est un excellent émulateur x86. QEMU est bon aussi, mais j'ai trouvé bochs plus facile à démarrer avec.

OSDev.org est un excellent endroit pour commencer. Les forums sont très utiles et amicaux (parce que c'est une niche et n'a pas été envahi par des décérébrés masses (surtout).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X