La principale différence entre les programmeurs matériels et logiciels réside dans la focalisation.
Les deux ont besoin de construire des programmes vraiment rapides, afin de rendre l'utilisation plus facile et plus réactive. Cependant, ils le font de manière complètement distincte. Examinons quelques-uns des principaux points qui rendent ces deux types de programmation différents :
1. Base de connaissances
Un développeur de logiciels embarqués doit connaître le matériel sur lequel il travaille. Le plus souvent, l'ingénieur en logiciel embarqué écrirait un certain code pour contrôler ou utiliser le matériel de la meilleure façon possible. Il devrait interagir plus étroitement avec le matériel même s'il ne parle pas directement les 1 et les 0.
Un développeur de logiciels travaille sur des applications qui sont totalement protégées du matériel sur lequel elles s'exécutent et le développeur de logiciels n'a pas à savoir beaucoup ou en fait rien du matériel sur lequel son programme s'exécuterait.
2. complexité du code
Dans le logiciel embarqué, la complexité n'est pas dans les lignes de code, la plupart du temps. Configurer un gestionnaire d'interruption pour répondre à votre appui sur un bouton et équilibrer la priorité entre un appui sur un bouton et une entrée de capteur de température aurait pu prendre une journée entière à travailler. À la fin de la journée, le développeur de logiciels embarqués aurait écrit 50 lignes de code.
Un développeur de logiciels écrit généralement plus de lignes de code. La raison en est qu'un développeur de logiciels construit un produit juste avec ses lignes de code, à partir de rien.
3. Algorithme et traitement des données vs contrôle du système
Un programme logiciel tourne généralement autour de 2 aspects : les algorithmes et les structures de données. Prenez n'importe quel programme, il calculera quelque chose : il pourrait stocker des données, déplacer des données, traiter des données ou simplement présenter ou supprimer des données. Tout logiciel, qu'il s'agisse d'un logiciel bancaire, d'assurance, de vente au détail, de logistique ou d'un simple logiciel pour PC comme Word, PowerPoint, etc. fonctionne selon les principes susmentionnés.
Un logiciel embarqué est davantage axé sur le contrôle et la gestion du système. Il est développé pour exploiter le plein potentiel du matériel et le gérer au profit de l'utilisateur. Bien qu'il y aurait des données et un algorithme dans un logiciel embarqué, il ne serait là que pour contrôler et gérer le matériel d'une meilleure manière.
4. PC vs PCB
Bien que les développeurs embarqués travaillent sur PC, ils n'écrivent pas des logiciels pour PC. Ils utilisent le PC pour construire leur logiciel qui s'exécute finalement sur une autre plateforme (une carte de circuit imprimé avec un micro contrôleur). Les ingénieurs en logiciels embarqués développent des logiciels pour ces machines et déplacent le binaire exécutable du PC vers la machine en utilisant des outils de débogage ou des options de connectivité spécifiques.
Les développeurs de logiciels développent des logiciels qui fonctionnent sur des PC ou des équivalents de PC (par exemple, des serveurs, des smartwear, etc.). Que le logiciel fonctionne dans une banque, un chantier naval, un aéroport ou une épicerie, il fonctionne sur un ordinateur. Peut-être que de nos jours, ils fonctionnent aussi sur des téléphones portables et des tablettes. Du point de vue de l'embarqué, les tablettes et les mobiles d'aujourd'hui ne diffèrent pas beaucoup des PC car ils sont tous plus " généralistes ".
5. Oscilloscopes vs points d'arrêt
Le débogage des logiciels embarqués est différent du débogage des logiciels d'application, tout comme le développement. Vous pouvez voir les développeurs de logiciels embarqués utiliser des oscilloscopes, des analyseurs logiques et des multimètres pendant le débogage d'un hang plutôt que d'utiliser des points d'arrêt.
Les développeurs de logiciels utilisent plus souvent les points d'arrêt de débogage et les options de débogage que leur IDE fournit pour déboguer le code, profiler le code, etc.
.