'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.