Je voudrais quelques conseils pour ceux qui veulent devenir un bon développeur de logiciels embarqués ou qui veulent s'améliorer dans ce domaine.
Que devrais-je avoir besoin d'apprendre sur le matériel, les logiciels?
Quels livres sont les plus recommandés? Blogs?
Au final, comment passer d'un amateur débutant à un excellent professionnel?
Pour les livres, je recommanderais de fouiller l'histoire. La plupart des techniques logicielles embarquées d'aujourd'hui proviennent de la fine pointe d'antan.
Comme tout, pratiquez quotidiennement.
la source
Les autres réponses sont excellentes, mais la plus grande différence entre un amateur et un professionnel devrait être un état d'esprit sur la qualité. Alors, continuez votre projet jusqu'au bout, ne vous arrêtez pas lorsque vous avez terminé à 80% avec un projet. Allez jusqu'au bout, prouvez qu'il fonctionne et documentez-le correctement.
Assurez-vous que votre code est lisible et maintenable.
Et n'oubliez pas de vous amuser aussi :)
la source
En plus de l'évidence, comme l'apprentissage du C et commencer avec une carte de développeur, vous voudrez apprendre à lire les fiches techniques du microcontrôleur .
Les fabricants ajoutent de plus en plus de fonctionnalités aux microcontrôleurs, qui deviennent donc de plus en plus complexes. La fiche technique fournit non seulement des caractéristiques électriques (ce qui est plus intéressant pour l'ingénieur en électronique que le développeur de logiciels), mais aussi une description détaillée des registres, des cartes mémoire, etc.
À la première lecture, une fiche technique peut sembler intimidante, mais ne pas les comprendre peut provoquer un mal de tête plus grave dans la phase de débogage.
la source
'Embedded' est un peu un terme chargé ..
À certains égards, tout système dédié à l'exécution d'une seule application pourrait être appelé un système embarqué, tant qu'il y a du matériel à contrôler. Vous pouvez sans doute appeler un PPC604 à 400 MHz avec 2 Go de RAM exécutant une application java au-dessus de linux un système intégré, s'il se trouve qu'il contrôle un processus via des modules d'E / S locaux. D'un autre côté, un arduino exécutant simplement une sorte d'application réseau minimale ne serait pas vraiment un système embarqué. Mais probablement «intégré» fait penser la plupart des gens aux contrôleurs basés sur flash avec seulement quelques centaines d'octets de RAM, aucun système d'exploitation à proprement parler et une pléthore de périphériques sur puce.
Cela étant dit, les deux principaux obstacles auxquels sont confrontés les programmeurs non embarqués sont probablement confrontés à l'apprentissage des systèmes embarqués: les registres d'E / S et les interruptions.
Les interruptions peuvent en fait être les deux concepts les plus faciles à gérer pour les programmeurs non intégrés, car les principaux problèmes avec ceux-ci, la concurrence et la programmation événementielle, sont souvent rencontrés dans les applications traditionnelles. Ce qui rend les interruptions douloureuses, c'est la prise de conscience de l'extrême sensibilité d'un système à la qualité de sa gestion des interruptions, et les subtilités du traitement du matériel pour effacer la condition d'interruption et configurer pour la suivante. Avec une interface graphique, un blocage tue uniquement l'application. Avec un gestionnaire d'interruption, un blocage entraîne le verrouillage de l'ensemble de votre système.
Les périphériques d'E / S semblent être la zone la plus problématique. Pour les non-initiés, il peut être assez surprenant de découvrir que la lecture de ce registre ici a un effet sur ce registre là-bas . Écriture de 1 pour effacer les bits. Bits d'état qui disparaissent d'eux-mêmes lorsque vous lisez un registre de données, etc. L'écriture d'un pilote de périphérique pour un port série vous en apprendra beaucoup sur la programmation d'E / S de bas niveau.
Il n'y a vraiment pas d'autre moyen d'apprendre ces choses que de retrousser ses manches et de programmer un langage C et / ou d'assemblage direct sur le métal nu. Même le système intégré basé sur java susmentionné a finalement besoin d'un pilote de périphérique pour les E / S, et cela signifie finalement faire face à certains C. L'expérience est le meilleur professeur. Choisissez un microcontrôleur, que ce soit MSP430, TMS320, AVR, ARM, PIC, 68HC11, peu importe, trouvez un kit d'évaluation et construisez des systèmes.
la source
Ce que vous voulez apprendre ici, c'est l'assembleur pour différentes plates-formes. C. Interaction C et assembleur. Différents outils GCC et non-GCC. Comment lire une référence de fiche technique / programmeurs (et se rendre compte qu'ils ont tous des erreurs ou peuvent être trompeurs, ne leur faites jamais confiance, le matériel l'emporte sur les documents) et comment lire ou utiliser un schéma. Ce ne sont pas des schémas compliqués normalement. Un certain nombre de cartes sont bonnes pour l'interfaçage dans les projets, ce qui signifie qu'elles n'ont pas de déchets sur la carte, juste un accès direct aux broches d'E / S. Mais ce n'est pas le meilleur pour apprendre. Quelque chose comme un Stellarisle conseil d'administration qui est pénible pour les projets a beaucoup de choses amusantes à bord pour apprendre l'intégration et apprendre à emprunter / utiliser des pilotes ou à écrire les vôtres à partir de fiches techniques. Le papillon Atmel AVR est également une bonne carte s'il est encore disponible, il peut être nécessaire de souder sur votre propre port série pour le programmer ou simplement de coincer des fils dans les trous. Ce que cela vous donne, c'est quelques périphériques que vous pouvez apprendre à programmer.
Même si vous finissez par faire du travail intégré qui implique d'écrire des applications à l'aide d'appels SDK ou API sur Linux ou un RTOS (sans jamais toucher au matériel ni lire les fiches techniques), les connaissances ci-dessus vous placeront toujours en tête du reste.
la source
Cet article (traduit automatiquement du portugais vers l'anglais) a un bon aperçu du développement d'une carrière en tant que développeur de logiciels embarqués. Remarque: l'original est ici .
Il commence par décrire les domaines de connaissances que vous devez développer:
Il donne ensuite les conseils suivants pour maîtriser ces domaines (et les développe avec plus de texte, ce ne sont que les titres):
la source
Réfléchissez bien avant de devenir ingénieur logiciel embarqué. J'ai eu des phases dans ma carrière. J'ai développé des logiciels les 5 premières années, puis je suis passé aux ventes / marketing, je l'ai fait pendant 15 ans, j'ai géré une entreprise de 100 M $ et maintenant je suis de retour au logiciel.
Quand je reviens au logiciel après 15 ans, je me souviens pourquoi je suis parti en premier lieu. C'est difficile. Il a besoin de concentration, de plusieurs centaines de lignes de code se touchant et vous devez tous le garder en mémoire. L'embarqué est particulièrement difficile.
Vous devez également vous comprendre. Si vous êtes généralement un gars intelligent, méticuleux et patient, vous feriez un grand ingénieur. Si vous en manquez, vous serez au mieux moyen. Pensez-y. Si vous êtes ultra intelligent et pas patient, cela ne vaut pas grand-chose car peu importe votre intelligence, une bonne ingénierie demande de la patience et une attention aux détails.
Vous devez également être à l'aise de regarder les heures de code à la fois sans parler. J'observe que les personnes ayant de bonnes compétences sociales trouvent cela insupportable.
Si tout cela se vérifie, alors lisez tous ces grands livres, faites les exercices et vous ferez un grand ingénieur .. Bonne chance
la source
Tout le monde dit de grandes choses. Je vais donc vous donner des conseils généraux: lire lire lire lire lire lire lire lire lire!
Lisez chaque article sur http://embeddedgurus.com Si vous ne comprenez pas quelque chose, recherchez-le. Si, dans l'explication de ces choses, vous trouvez quelque chose que vous ne comprenez pas, lisez-en plus. Je suis sur le point de me diriger vers un poste de logiciel intégré et mon expérience est une poignée de projets professionnels au cours des dernières années et beaucoup de lecture. L'expérience vous permet d'essayer des choses, mais la lecture vous permet de savoir si les choses que vous avez essayées ont déjà été faites, peut-être mieux que vous. Il vous présente des concepts avec lesquels vous pouvez travailler en toutes circonstances.
Lisez!
la source
Devenez un expert en C Comprendre les temporisateurs et les communications série. Vous devriez vous salir les mains avec. Comprendre les protocoles RF, les adapter à vos besoins. Ne vous contentez pas d'essayer aveuglément des combinaisons de code lors du débogage. Le code fait exactement ce que vous lui demandez de faire. Lisez le manuel d'utilisation et la fiche technique, puis effectuez une modification si quelque chose ne fonctionne pas. Tout cela dit et fait, la seule vraie façon de devenir un expert est de pratiquer. Continuez à créer des applications. Bientôt, cela deviendra une seconde nature.
la source