Quel langage apprendre pour la programmation de microcontrôleurs?
Je vais entrer dans la programmation du microcontrôleur, et ont entendu des points de vue divergents. Quel est le langage le plus utilisé dans l'industrie pour la programmation du microcontrôleur? Est-ce que vous utilisez dans votre propre travail? Si non, pourquoi pas?
P. S.: j'espère que la réponse n'est pas le langage d'assemblage.
source d'informationauteur harry
Vous devez vous connecter pour publier un commentaire.
Dans mon expérience, vous devez absolument connaître le C, et le langage d'assemblage aide aussi.
Sauf si vous travaillez avec de très bare-bones microcontrôleurs (comme le RS08 de la série), C est de loin la langue de leur choix. Apprendre à connaître C, comprendre fonctionnalités telles que la volatilité et de la const. Aussi comprendre l'architecture - ce qui est efficace, ce qui ne l'est pas, ce qui peut le CPU ne. Ces diffèrent fortement d'un "bureau" de l'environnement. Apprendre à aimer stdint.h.
Vous rencontrerez C++ (ou un sous-ensemble restreint) des projets de mise à l'échelle.
Cependant, vous devez comprendre le CPU et comment lire assemblage de base comme un outil de débogage. Vous ne pouvez pas devenir un excellent développeur embarqué sans ce niveau de compétences.
Ce 'contraste' points de vue avez-vous entendu parler? Dans une certaine mesure, cela dépendra de la microcontrôleur et de la demande. Cependant, C est disponible pour presque toutes les architectures (j'hésite à dire tousmais probablement tout ce que vous rencontrerez jamais), donc sur ce point à lui seul, l'apprentissage de C serait vous donner le plus de couverture.
Pour toutes les architectures, la disponibilité d'un assembleur et un compilateur C sont à peu près une donnée. Pour 32-bits et 16-bits architectures C++ sera également disponible. Parmi les exceptions notables que j'ai rencontrés sont de Microchip PIC24/dsPIC pièces pour que le C++ n'est pas pris en charge par Microchip propre GNU basé sur le compilateur (bien que la 3ème partie de compilateurs peuvent le faire).
Bien qu'il existe des compilateurs C++ pour les 8 bits de microcontrôleur du C++ n'est pas omniprésent sur de telles plates-formes, et souvent les compilateurs sont des sous-ensembles de la pleine langue. Pour les types (ou plus précisément la taille) de l'application qui 8-bit est habituellement utilisé, C++ peut être utile, mais pas dans la mesure où il est beaucoup plus d'applications, de sorte que C est en général suffisant.
Il y a beaucoup de les mythes au sujet de C++ dans les systèmes embarqués; tandis que la langue est plus grand que C, et a des constructions qui peuvent compromettre les performances ou la capacité de votre système, vous ne payez que pour ce que vous utilisez avec le C++. Mais bien sûr, si ce que vous utilisez est juste le sous-ensemble C, le C serait suffisant, en tout cas.
Le point sur le C (et C++), c'est que c'est un des systèmes de niveau de langue; il sera exécuté sur votre microprocesseur avec aucun soutien supplémentaire de sauver un très simple d'exécution démarrage de l'initialisation du processeur (et éventuellement externes SDRAM), l'initialisation statique de données, d'établir une pile, et dans le cas de C++ invoquer constructeurs statiques. C'est pourquoi avec la cible spécifique de l'assembleur, il est utilisé pour construire des systèmes d'exploitation et amandes - il n'a pas besoin de système d'exploitation ou le noyau lui-même à exécuter.
L'une des raisons pour lesquelles j'ai suggéré qu'il peut dépendre du microcontrôleur est que si par exemple c'est un ARM9 avec quelques Mo de externe SDRAM, et de dire au moins 4 mo de Flash (aussi généralement externe - mémoire prend beaucoup de mourir de l'espace), puis vous pouvez exécuter un 'poids lourd' système d'exploitation comme Linux, WinCE, ou Symbian, ou même une grande RTOS comme QNX ou VxWorks. Puis la langue de votre choix (une fois que vous avez le système d'exploitation de travail), serait influencée par l'OS, si pour des applications temps réel en C et C++ serait dominent toujours (ou souvent Ada dans le domaine militaire, avionique, et certaines applications de transport).
Pour la mi-applications de taille - à quelques centaines de kilo-octets de données et de code de l'espace - C# exécute sur l' .NET-Micro plate-forme est possible; Cependant, je me suis assis dans une présentation de ce dans les Systèmes Embarqués Show au royaume-UNI il y a quelques années, juste après qu'elle a été quand il a été lancé; quand j'ai posé la question "mais est-il en temps réel", et a dit, "non, vous devez WinCE pour ça", il y a un sursaut et un gémissement d'une grande partie du public, et certains se sont arrêtés de perdre leur temps à une gauche à la présentation et ensuite (moi y compris).
Donc, je suis toujours intéressé par le 'contraste' les opinions que vous avez entendu; car s'il est possible d'utiliser d'autres langues; la réponse à votre question:
alors la réponse définitive est C; pour les raisons que j'ai donné. Pour toute personne qui pourrait contester cette affirmation voici les statistiques (noter les différentes méthode d'enquête après 2004 expliqué dans le texte). Cependant, à ajouter à la collection de solutions de rechange, une fois, j'ai passé deux ans de programmation en Suite sur des systèmes embarqués, et je connais des gens qui l'utilisent toujours, mais c'est un peu une niche.
J'ai utilisé avec succès à la fois le C et le C++, mais dans presque n'importe quel microcontrôleur de projet, vous aurez besoin d'être familier avec la langue de l'assembly de la cible micro. Si seulement pour le débogage matériel de bas niveau des questions de l'assemblée sera indispensable, même si c'est un coup de familiarité.
Je pense que la chose la plus difficile pour moi lors du passage d'un environnement de bureau pour un micro était que presque tout ce qui doit être allouée de manière statique. Vous n'aurez pas souvent l'utilisation de malloc/nouveau dans un micro, à moins peut-être qu'il a des RAM.
Je constate que vous aussi marqués de votre question avec FPGA et Verilog, jetez un oeil à Altiumils ont un C Matériel compilateur qui fonctionne vraiment bien avec leur environnement intégré.
Concernant assembleur:
Microcontrôleurs ont été initialement programmée qu'en langage d'assemblage, mais différents de haut niveau des langages de programmation sont maintenant d'usage courant pour cible des microcontrôleurs. Ces langues sont soit conçus spécialement pour les besoins ou les versions à usage général de langages tels que le C langage de programmation. Les compilateurs pour les langages polyvalents disposent en général de certaines restrictions, ainsi que des améliorations afin de mieux soutenir les caractéristiques uniques de microcontrôleurs. Certains microcontrôleurs ont environnements d'aide au développement de certains types de demandes. Microcontrôleur fournisseurs font souvent des outils librement disponibles pour rendre plus facile à adopter leur matériel.
De nombreux microcontrôleurs sont tellement bizarres qu'ils ont effectivement besoin de leur propre non-standard des dialectes de C, comme SDCC pour le 8051, qui empêchent l'aide d'outils standards (tels que les bibliothèques de code ou les outils d'analyse statique), même pour le code sans rapport avec le hardware. Les interprètes sont souvent utilisés pour cacher ce faible niveau de bizarreries.
Interprète du firmware est également disponible pour certains microcontrôleurs. Par exemple, de BASE sur le début de microcontrôleurs Intel 8052[4]; de BASE-et-VIENT sur le Zilog Z8[5] ainsi que certains appareils modernes. Généralement, ces interprètes support interactif de programmation.
Simulateurs sont disponibles pour certains microcontrôleurs, comme dans de Microchip MPLAB environnement. Ceux-ci permettent à un développeur d'analyser ce que le comportement du microcontrôleur et de leur programme devrait être le cas si elles ont été à l'aide de la partie réelle. Un simulateur va montrer le processeur interne de l'état et des sorties, ainsi que de permettre l'entrée des signaux générés. Alors que, d'une part, la plupart des simulateurs seront limités d'être incapable de simuler beaucoup de matériel dans un système, ils peuvent exercer des conditions qui, autrement, peuvent être difficiles à reproduire à volonté dans la mise en œuvre physique, et peut-être la façon la plus rapide de débogage et d'analyser les problèmes.
Vous besoin de connaître la programmation en langage assembleur.Vous devez avoir de bonnes connaissances en C et C++.afin de travailler dur sur thse choses pour obtenir une meilleure expertise sur la micro-programmation de l'automate.
Et n'oubliez pas de VHDL.
Pour les microcontrôleurs assembleur vient avant C. Avant que les Bras commencé à pousser dans ce marché, les compilateurs ont été horribles et de la mémoire et de la ROM vraiment minuscule. Il n'y a pas suffisamment de ressources ou points communs avec le port de votre code afin de l'écriture en C pour la portabilité n'a pas de sens.
Certains microcontrôleur de l'assembleur est moins souhaitable, et le BRAS est de prendre sur ce marché. Pour moins d'argent, moins d'énergie et moins d'empreinte, vous pouvez avoir un processeur 32 bits avec plus de ressources. Il est tout à fait logique. Beaucoup si votre code ne sera toujours pas de port, mais vous pouvez probablement vous en tirer avec C.
Ligne de fond, l'assembleur et C. Si ils font de la publicité BASIC ou Java, ou quelque chose comme ça, la marque de l'entreprise sur votre liste noire et se déplacer. Été là, fait que, ont des cicatrices pour le prouver.
Première Assemblée. D'Après C.
Je pense que qui sait Assemblée et C sont mieux que qui ne connaît que C.