Question:
À quoi sert un chargeur de démarrage de microcontrôleur?
midnightBlue
2016-04-15 19:45:28 UTC
view on stackexchange narkive permalink

D'après ce que je comprends, pour un microcontrôleur commun (par exemple AVR, PIC), il existe généralement deux méthodes de programmation de sa mémoire flash.

  1. Utilisation d'un programmeur: In-Circuit Serial Programmation (ou une variante?)
  2. Une certaine forme de chargeur de démarrage, avec lequel un périphérique externe communique, permettant finalement au microcontrôleur de flasher sa propre mémoire.

Il doit certainement y avoir une très bonne raison d'utiliser un bootloader, sinon son utilisation répandue actuelle serait très étrange. Je n'ai tout simplement pas semblé l'avoir complètement compris.

Est-ce qu'un programmeur coûte cher? Mais alors, il existe des Arduinos (microcontrôleur ATmega) qui peuvent fonctionner comme des programmeurs. Le coût d'un IC supplémentaire est-il suffisant pour justifier l'utilisation d'un chargeur de démarrage? Si je ne me trompe pas, les derniers Arduinos se débarrassent complètement de la puce FTDI, la remplaçant par un processeur ATmega qui assure l'interfaçage USB vers série. Il serait sûrement possible d'intégrer la fonction du programmeur sur ce CI par exemple?

Ou prenons par exemple le microcontrôleur PIC. Il y a quelque chose que j'ai vu appelé le programmeur JDM. Si quelque chose comme ça, avec pratiquement aucun composant actif, peut programmer un PIC alors,

  1. Pourquoi utiliser un chargeur de démarrage?
  2. Quel est le but de ce plus PICkit complexe (mis à part la robustesse)? Capacité de débogage?
https://www.arduino.cc/en/Hacking/Bootloader?from=Main.Bootloader La réponse est plutôt "commodité"
pour initialiser le matériel ou charger du code d'une source externe vers le stockage interne
Pour ajouter à quelques-unes des réponses ici, concernant "cher": pour certains MCU (AVR, STM8 / 32, ...) les programmeurs sont bon marché.Vous pouvez obtenir un programmeur AVR pour 15 $ ou moins.Cependant, pour d'autres familles de MCU (Kinetis, par exemple), les programmeurs peuvent coûter plus de 100 $, et les programmeurs / débogueurs capables de programmer de nombreuses familles ARM peuvent coûter plus de 500 $.Mais comme d'autres l'ont dit, il s'agit principalement de commodité, de mise à jour à distance et d'élimination du matériel externe.
Six réponses:
Dave Tweed
2016-04-15 20:27:49 UTC
view on stackexchange narkive permalink

Le but principal d'un bootloader est de permettre la mise à jour du firmware via des interfaces autres que l'interface matérielle par défaut. Par exemple, cela permet des mises à jour via des canaux de communication que l'application utilise autrement à ses propres fins, ce qui signifie que vous pouvez effectuer des mises à jour à distance dans le système sans nécessiter d'intervention physique sur le site distant.

Une fois que vous avez cela capacité, vous n'avez besoin d'aucun matériel supplémentaire, ce qui en fait la méthode avec le coût récurrent le plus bas, et c'est pourquoi les systèmes amateurs comme Arduino l'utilisent. Il fournit également une petite quantité de verrouillage marketing, car vous devez maintenant acheter vos puces AVR avec le chargeur de démarrage déjà programmé.

m4l490n
2016-04-15 21:40:29 UTC
view on stackexchange narkive permalink

Dans certains scénarios, un chargeur de démarrage n'ajoute pas beaucoup de valeur. Vous avez raison si vous avez quelques cartes, vous pouvez certainement attacher le programmeur et flasher à nouveau le code. Si vous êtes un amateur avec quelques cartes ou si vous avez même une petite production, vous pouvez le faire de cette façon.

Les chargeurs de démarrage ont plus de sens dans les scénarios où connecter physiquement un programmeur serait moins pratique. Les produits finis qui sont déjà déployés par exemple font partie de ces scénarios

Généralement, lorsque vous avez un produit électronique, vous ne laissez pas un port «débogage» ou «programmation» exposé. Vous n'avez qu'un Ethernet, ou série, ou RS485, ou CAN ou sans fil sur votre produit.

Et si vous en avez plusieurs dizaines, voire des centaines, déjà vendus / déployés et que vous avez une mise à jour du firmware ?

Au lieu d'aller un par un en ouvrant les boîtiers, en attachant le programmeur, en programmant, en fermant la valise du produit et ainsi de suite, vous pouvez simplement utiliser l'une des interfaces existantes de votre produit actuel pour le programmer.

C'est encore mieux lorsque vous avez des appareils "connectés" avec par exemple Ethernet ou tout autre type de sans fil. Si vous mettez un module sans fil dans quel que soit votre produit, vous pouvez utiliser ces communications sans fil avec un chargeur de démarrage pour mettre à jour le code, de cette façon, vous pouvez mettre à jour plusieurs appareils en même temps et sans les toucher.

Et il devient une fonctionnalité de rêve si vos appareils sont connectés à Internet. De cette façon, vous pouvez mettre à jour le micrologiciel de tout en un seul clic, au fur et à mesure que votre téléphone reçoit ses mises à jour.

Pour un amateur, l'utilisation d'un chargeur de démarrage n'a peut-être pas beaucoup de sens, mais d'un point de vue commercial où vous vendez des appareils, cela a beaucoup de sens car cela fait gagner du temps, ajoute beaucoup de commodité au processus et si vos utilisateurs ont contact avec votre appareil, vous n'avez pas à leur vendre des programmeurs uniquement pour les mises à jour du firmware (ou à leur faire acheter les programmeurs autrement). Et si vos appareils sont fonctionnellement identiques mais avec des microcontrôleurs différents? vous devrez déterminer qui a quoi pour envoyer ou vendre le bon programmeur, cela devient un cauchemar !!

Au lieu de cela, il suffit de mettre un port USB dessus et tout est caché à l'utilisateur, tout le monde sait comment connecter une clé USB au PC, y copier un fichier et le joindre à un autre appareil, mais aucun utilisateur normal ne sait ce qu'est un débogueur P&E, un PICKit ou un Segger J-Link.

Désolé si c'est un peu déroutant, l'anglais n'est pas ma langue et peut-être que la rédaction est un gâchis, mais j'espère que vous avez l'idée.

Bravo !!

Bonne réponse, peut-être un peu verbeuse.Votre anglais est bon (du moins de mon point de vue non natif).
L'anglais est étrange dans le sens où, étant la langue par défaut du commerce mondial, il y a probablement plus de locuteurs non natifs que de natifs.L'anglais «correct» devient donc beaucoup plus difficile à définir.En tant que locuteur natif de Kansas City, États-Unis, je n'ai eu aucun problème à vous comprendre.
dnozay
2016-04-15 20:36:06 UTC
view on stackexchange narkive permalink

Le but principal d'un bootloader est:

  • de récupérer le programme du stockage / du réseau et de le charger.

Il peut y avoir une quantité très limitée de stockage rapide à proximité de l'unité de traitement, et le programme que vous souhaitez exécuter peut être différent d'une carte à l'autre ou vous voudrez peut-être changer le programme sur votre carte. Le chargeur de démarrage est un programme au dénominateur commun qui sait comment charger votre logiciel personnalisé à partir de l'endroit où il est stocké et le transmettre à l'unité de traitement.

Les chargeurs de démarrage avancés peuvent faire:

  • autotests
  • démarrage du réseau
  • chargement du firmware supplémentaire
  • ...
L'OP pose des questions spécifiquement sur les chargeurs de démarrage trouvés dans les microcontrôleurs flash.Bien qu'elle soit pertinente pour les chargeurs de démarrage dans un sens plus général, cette réponse est un peu hors sujet.
Jan Dorniak
2016-04-16 22:29:15 UTC
view on stackexchange narkive permalink

En dehors de toutes les autres bonnes réponses, il y a une raison de plus, au moins pour les produits commerciaux: après la programmation de production, la plupart des puces ont une option pour les protéger de la lecture des données.

En fonction du MCU cette option de protection de lecture peut en fait désactiver la connexion du programmeur matériel (comme SWD ou JTAG). Si vous n'avez pas fait le bootloader, vous ne pouvez pas reprogrammer l'appareil.

Et puis vous vous retrouvez avec 10k unités avec un logiciel buggy sur le marché, cela entraîne une grande perte sur quelque chose qui dure essentiellement quelques mois codage.

magu_
2016-04-16 03:03:29 UTC
view on stackexchange narkive permalink

Juste pour donner aussi le point de vue d'un amateur:

Cela rend la vie beaucoup plus facile en ne nécessitant pas de matériel supplémentaire ou beaucoup de connaissances de bas niveau. Un exemple extrême que j'ai utilisé est le photon de particule (sans affiliation) qui peut être flashé sur le nuage. Les seules choses nécessaires pour flasher cette puce sont:

  • Alimentation
  • WLAN
  • Connexion Internet
  • Un autre ordinateur pour écrire le logiciel

Cela rend le processus assez peu coûteux et est en fait assez simple d'un point de vue non professionnel.

old_timer
2016-04-16 06:48:35 UTC
view on stackexchange narkive permalink

Ce n'est pas le coût du programmeur. Les ventes ne proviennent pas d'amateurs; c'est un facteur mais pas le facteur, les gens qui achètent en volume peuvent certainement se permettre des programmeurs. Vous avez plusieurs choix:

  1. Faites préprogrammer les pièces soit par le fournisseur de pièces, soit par un intermédiaire ou votre maison de fabrication, puis placées sur le plateau

  2. Une sorte de programmation en circuit après avoir été placé sur la carte

Dans la deuxième catégorie, vous avez les solutions de logique dure (le SPI ou SPI-ish thing sur les puces AVR) et les solutions logicielles (un bootloader, un programme s'exécutant dans la partie utilisant la partie). Certains ont les deux.

La solution difficile que vous devez trouver correctement, si vous vous trompez sur la conception, vous devez l'attraper assez tôt ou votre produit est un tas de pièces inutiles que vous devez jeter. Vous pouvez changer les solutions logicielles même jusqu'à post-silicium; vous pouvez même faire le point, le parcourir et le reprogrammer. Il y a donc ce luxe si un bogue dans votre produit est plus facile à corriger et / ou à créer. La solution douce peut également permettre une plus grande variété d'options pour l'utilisateur. SPI ET I²C ET USB ET série ET toute solution matérielle le cas échéant. Une solution logicielle dans certains cas, l'utilisateur peut remplacer le chargeur de démarrage par le sien pour ses propres raisons.

Tous les microcontrôleurs ne peuvent pas avoir de logiciel capable de programmer leur propre flash, mais pour ceux qui le font, l'utilisateur peut créer leur propre chargeur de démarrage indépendant du fournisseur de puces fourni un s'il y en a un fourni par le fournisseur de puces.

Avec le ARM Cortex-M et le SWD, je vois les choses changent; certaines puces sont uniquement SWD et aucune autre de l'option d'usine. Je viens de recevoir un Atmel SAM D21; ils n'ont plus le chargeur de démarrage SAM-BA et ils fournissent la source pour que vous puissiez ajouter le vôtre au début du flash utilisateur, et quelques registres pour le protéger en quelque sorte, mais il est facile de l'effacer. Tellement pour ça; vous pouvez tout aussi bien créer le vôtre ou utiliser SWD.

Regardez le monde Arduino / AVR, les amateurs. Ils ont leur propre chargeur de démarrage et c'est l'interface principale car il est gratuit. Vous pouvez obtenir un programmeur FAI pour quelques (ou quelques dizaines) dollars. Mais remarquez comment un certain nombre d'autres cartes AVR utilisent des protocoles USB au lieu des chargeurs de démarrage populaires jusqu'à présent. Certains de ces protocoles USB sont utilisés par plusieurs fournisseurs.

En fin de compte, si vos clients le souhaitent et / ou votre service marketing peut l'utiliser pour distinguer notre produit du leur, et ce n'est pas le cas. t réduire le coût du produit ou le profit. Pourquoi pas? Gagnant-gagnant.

Il n'y a pas de réponse unique ni correcte à cette question; tout est basé sur l'opinion. Vous pouvez contacter chacun des fournisseurs de puces et leur demander, mais les personnes qui répondent vont donner leur avis, elles ne savent probablement même pas ou n'ont jamais parlé aux personnes qui ont ajouté cette fonctionnalité ou la maintiennent. Il n'y a pas de réponse à cette question.



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...