Comment communiquer Firmwares aux appareils électroniques pour effectuer ses opérations?

StackOverflow https://stackoverflow.com/questions/1761334

  •  21-09-2019
  •  | 
  •  

Question

Presque tous les appareils électroniques est livré avec les firmwares. Je sais qu'il est stocké dans la ROM (mémoire morte) de sorte qu'il devient non volatile (aucune source d'énergie nécessaire pour maintenir le contenu de s'effacer comme RAM)

Ce que je veux savoir est « Comment communiquer Firmwares aux appareils électroniques pour effectuer ses opérations? » Disons il y a un petit rouleau .. Sur simple pression d'un bouton, comment il fait de se déplacer? Quelqu'un peut-il s'il vous plaît expliquer ce qui est derrière réside, pour y arriver .. Je pense qu'il peut exiger un peu brève explication pour dérouler ..

Aussi ce qui est la langue la plus populaire utilisé pour le codage Firmwares?

Était-ce utile?

La solution

matériel moderne comme vous décrivez a un programme stocké dans la mémoire ROM et un micro-ordinateur tout usage (CPU) l'exécution de ce programme.

La CPU lit les informations de la ROM en mettant en place des adresses sur son bus d'adresse, puis demander à la ROM pour lui dire la valeur stockée à cet endroit. Il y a quelque chose comme une impulsion de lecture étant élevée (sur une ligne distincte) de dire la ROM pour rendre la valeur accessible sur les lignes du bus de données. Ce, en un mot, est la lecture.

Pour obtenir le matériel pour faire quelque chose, la CPU exécute essentiellement une sorte d'opération d'écriture. Il met une valeur, qui est juste un tas de bits si vous voulez regarder cette façon, sur le bus d'adresse pour sélectionner un certain dispositif et peut-être fonction de ce dispositif, il soulève une autre ligne de signal disant: « écrire! » Le dispositif qui reconnaît son adresse sur le bus d'adresses répond à ce signal en acceptant les données à partir du bus de données et en effectuant ensuite quelle que soit sa fonction. Typiquement, l'un des bits de bus de données est relié à l'intérieur du dispositif de sortie à un étage de sortie de puissance, à savoir un transistor plus fort que ceux qui sont utilisés seulement pour le calcul, et que le transistor se connecter un certain dispositif électrique à courant suffisant pour le faire bouger / préchauffage / whatever.

appareils minuscules, à bas prix sont codés en langage assembleur pour réduire les coûts pour ROM; en quantités industrielles, même de petites quantités de mémoire peuvent affecter le prix. Le langage assembleur est spécifique à la CPU; certaines puces dites « 8051 », « 6502 » et « Atmel (quelque chose ou autre) » sont très populaires. dispositifs plus grands avec des exigences plus complexes peuvent avoir leur firmware écrit en C ou un dialecte type C, ce qui rend la programmation d'un peu plus facile que l'assembleur. Ceux de Bigges courent même le code C de. Compilé, bien sûr.

Autres conseils

Dans la plupart des systèmes il y a des adresses de mémoire spéciales qui sont utilisés pour les E / S. La lecture et l'écriture sur ces adresses exécute une fonction au lieu de simplement déplacer les données autour. Dans les systèmes x86, il y a également des instructions d'E / S spéciales IN et OUT pour cela.

Le cas le plus simple est appelée parallèle générale I / O (GPIO), où l'on peut lire ou écrire des données directement à partir de / à des broches électriques externes de l'appareil. Il y a plusieurs adresses de mémoire, des registres appelés, où vous pouvez lire les données à partir du port (tension proche de 0 = 0, la tension d'alimentation proche = 1), où vous pouvez écrire des données sur le port, et où vous pouvez définir si une broche particulière est entrée (le bit correspondant est typiquement 0) ou de sortie (le bit est égal à 1). Chaque microcontrôleur a GPIO.

Dans votre exemple, le bouton peut être connecté à une broche réglée sur l'entrée, que le logiciel pouvait sentir. Il serait généralement ce faire, chaque 10ms et ne réagissent que si elle a une valeur stable pour plusieurs lectures, on appelle cela debouncing. Ensuite, il serait écrire un 1 dans une certaine sortie, qui via un transistor d'amplification pourrait entraîner un moteur. Si elle détecte que vous relâchez le bouton, il pourrait arrêter le moteur à nouveau en écrivant un 0. Et ainsi de suite, ce programme irait jusqu'à ce que vous mettez l'appareil hors tension.

Il y a beaucoup d'autres périphériques d'E / S pour d'autres fins avec généralement des centaines de registres pour les contrôler. Si vous voulez voir plus vous pouvez regarder dans la fiche de données de certains micro-contrôleur. Par exemple, voici la fiche de données de ATtiny4 / 5/9/10 , un contrôleur très petit de la famille Atmel AVR.

Aujourd'hui, la plupart du firmware est écrit en C, à l'exception des appareils les plus petits et un peu de code spécial pour la gestion des réinitialisations et les interruptions, ce qui est écrit en langage assembleur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top