Avec les systèmes embarqués basés sur des microcontrôleurs 8 et 16 bits, il se résume à développer plus facilement des logiciels pouvant s'adapter aux ressources limitées de ces limitations de stockage très modestes (peut-être quelques 100 octets). de RAM pour les microcontrôleurs 8 bits bas de gamme). , avec 2-8 Ko de ROM ou EPROM / Flash pour le stockage de code).
Dans ces cas, les petits langages comme C ou l'assembly ont tendance à être les langages de développement les plus couramment utilisés. À titre de comparaison relative très approximative, un assembleur complet et un compilateur C99 peuvent tenir sur une seule disquette, tandis que vous avez besoin de plusieurs MiB pour un système de développement C ++ moderne (avec STL, etc.).
Lorsque vous regardez des micros haut de gamme (16 bits haut de gamme, et principalement 32 bits, avec 64 bits assez rares) et DSP dans des environnements intégrés, les restrictions s'affaiblissent et le développement de logiciels peut constituer l'essentiel du développement Il est donc logique d'utiliser les outils de développement les plus productifs, y compris des langages plus avancés avec des fonctionnalités telles que les langages de programmation orientée objet (POO) tels que C ++, et des langages plus récents (Java, Perl, Ruby, Python).
Il est possible dans l'assemblage et C de prédire la quantité de mémoire utilisée, de sorte qu'une conception à espace limité soit possible, mais des fonctionnalités avancées telles que les modèles, la gestion des exceptions et la liaison au moment de l'exécution rendent impossible de connaître exactement l'empreinte mémoire nécessaire pour un programme C ++ standard à l'avance. Je ne connais pas assez MISRA C ++ , qui est un sous-ensemble de C ++, pour le commenter.
Les langages basés sur des machines virtuelles exécutant du code octet (Java, Perl, Python) sont moins matures dans l'expérience du développeur intégré, et comme ces langages sont conçus pour isoler le programmeur du matériel particulier, il est également plus difficile d'être conscient de les limites et restrictions de ce système matériel embarqué. C'est moins un problème avec les processeurs 32 bits rapides (par exemple ARMv7) avec MiB sinon GiB de RAM.
Toutes les implémentations BASIC que je connais sont assez simplistes dans les fonctionnalités du langage, restant largement fidèles à l'héritage de Dartmouth BASIC des années 1960. Cela signifie que le langage n'a pas de bibliothèques d'exécution complexes ou de gestion des exceptions, et un interprète ou un compilateur est assez simple à écrire et est également de petite taille. La plupart des microcontrôleurs disposent d'au moins un compilateur BASIC.
J'espère que les grandes lignes expliquent les raisons pour lesquelles vous trouverez le C et l'assemblage principalement utilisés sur des systèmes embarqués plus petits ou plus anciens, et avec les limitations des nouveaux systèmes embarqués de moyenne à haute gamme ne diffèrent que légèrement d'un ordinateur de bureau traditionnel.