Domanda:
Qual è lo scopo di un bootloader del microcontrollore?
midnightBlue
2016-04-15 19:45:28 UTC
view on stackexchange narkive permalink

Dalla mia comprensione, per un microcontrollore comune (ad esempio AVR, PIC), ci sono generalmente due metodi per programmare la sua memoria flash.

  1. Utilizzando un programmatore: Seriale in-circuit Programmazione (o qualche variante?)
  2. Una qualche forma di bootloader, con cui comunica un dispositivo esterno, consentendo in ultima analisi al microcontrollore di eseguire il flashing della propria memoria.

Sicuramente ci deve essere un'ottima ragione per usare un bootloader, altrimenti il ​​suo uso diffuso sarebbe molto strano. Semplicemente non mi è sembrato di averlo capito ancora completamente.

È che un programmatore è costoso? Ma poi ci sono Arduino (microcontrollore ATmega) che possono funzionare come programmatori. Il costo di un IC in più è sufficiente per garantire l'uso di un bootloader? Se non sbaglio, gli ultimi Arduino eliminano del tutto il chip FTDI, sostituendolo con un processore ATmega che esegue l'interfaccia USB a seriale. Sicuramente sarebbe possibile integrare la funzione del programmatore su questo IC, ad esempio?

Oppure prendiamo ad esempio il microcontrollore PIC. C'è qualcosa che ho visto chiamato programmatore JDM. Se qualcosa di simile, virtualmente senza componenti attivi, può programmare un PIC,

  1. Perché usare un bootloader?
  2. Qual è lo scopo di relativamente molto di più complesso PICkit (a parte la robustezza)? Funzionalità di debug?
https://www.arduino.cc/en/Hacking/Bootloader?from=Main.Bootloader La risposta è praticamente "comodità"
per inizializzare l'hardware o caricare il codice da una fonte esterna alla memoria interna
Per aggiungere alcune delle risposte qui, riguardo al "costoso": per alcuni MCU (AVR, STM8 / 32, ...) i programmatori sono economici.Puoi ottenere un programmatore AVR per $ 15 o meno.Tuttavia, per altre famiglie MCU (Kinetis, ad esempio), i programmatori possono essere fino a $ 100 e programmatori / debugger che possono programmare molte famiglie ARM possono essere $ 500 +.Ma come altri hanno già detto, si tratta principalmente di comodità, aggiornamento remoto ed eliminazione dell'hardware esterno.
Sei risposte:
Dave Tweed
2016-04-15 20:27:49 UTC
view on stackexchange narkive permalink

Lo scopo principale di un bootloader è consentire l'aggiornamento del firmware tramite interfacce diverse dall'interfaccia hardware predefinita. Ad esempio, ciò consente gli aggiornamenti tramite canali di comunicazione che l'applicazione utilizza altrimenti per i propri scopi, il che significa che è possibile eseguire aggiornamenti interni al sistema remoti senza richiedere l'intervento fisico sul sito remoto.

Una volta che hai questo capacità, non è necessario alcun hardware aggiuntivo, il che lo rende il metodo con il costo ricorrente più basso, ed è per questo che i sistemi hobbistici come Arduino lo usano. Fornisce anche una piccola quantità di blocco del marketing, perché ora devi acquistare i tuoi chip AVR con il bootloader già programmato al loro interno.

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

Ci sono alcuni scenari in cui un boot loader non aggiunge molto valore. Hai ragione se hai un paio di schede puoi sicuramente allegare il programmatore e far lampeggiare nuovamente il codice. Se sei un hobbista con un paio di schede o hai anche una piccola produzione puoi farlo in questo modo.

I bootloader hanno più senso in scenari in cui connettere fisicamente un programmatore sarebbe meno pratico. I prodotti finiti che sono già distribuiti, ad esempio, sono uno di quegli scenari

In genere quando si dispone di un prodotto elettronico non si lascia esposta una porta di "debug" o "programmazione". Hai solo una connessione Ethernet, o seriale, o RS485, o CAN o wireless sul tuo prodotto.

E anche se hai diverse decine o forse centinaia già vendute / distribuite e hai un aggiornamento del firmware ?

Invece di aprire uno per uno gli involucri, collegare il programmatore, programmare, chiudere la custodia del prodotto e così via, puoi semplicemente utilizzare una delle interfacce esistenti del tuo prodotto corrente per programmarlo.

È ancora meglio quando si hanno dispositivi "connessi", ad esempio con Ethernet o qualsiasi tipo di wireless. Se inserisci un modulo wireless in qualunque sia il tuo prodotto, puoi utilizzare le comunicazioni wireless con un bootloader per aggiornare il codice, in questo modo puoi aggiornare più dispositivi contemporaneamente e senza toccarli.

diventa una funzionalità da sogno se i tuoi dispositivi sono connessi a Internet. In questo modo puoi aggiornare il firmware di tutto con un solo clic, man mano che il tuo telefono riceve i suoi aggiornamenti.

Per un hobbista forse non ha molto senso usare un bootloader, ma dal punto di vista aziendale in cui si vendono effettivamente dispositivi ha molto senso poiché fa risparmiare tempo, aggiunge molta praticità al processo e se i tuoi utenti lo hanno contatto con il tuo dispositivo non devi venderli ai programmatori solo per gli aggiornamenti del firmware (o fargli acquistare i programmatori altrimenti). E se i tuoi dispositivi fossero gli stessi funzionalmente ma con microcontrollori diversi? dovresti determinare chi ha cosa per inviare o vendere il programmatore corretto, diventa un incubo !!

Invece di questo ci metti una porta USB e tutto viene nascosto all'utente, tutti sanno come collegare una USB al PC, copiarvi un file e collegarlo a un altro dispositivo, ma nessun utente normale sa cosa diavolo sia un debugger P&E, un PICKit o un Segger J-Link.

Scusa se questo crea un po 'di confusione, l'inglese non è la mia lingua e forse la redazione è un disastro, ma spero che tu abbia l'idea.

Saluti !!

Buona risposta, forse un po 'prolissa.Il tuo inglese va bene (almeno dal mio punto di vista non madrelingua).
L'inglese è strano nel senso che, essendo la lingua predefinita per il commercio globale, ci sono probabilmente più madrelingua che madrelingua.Quindi l'inglese "corretto" diventa molto più difficile da definire.In quanto madrelingua di Kansas City, Stati Uniti, non ho avuto problemi a capirti.
dnozay
2016-04-15 20:36:06 UTC
view on stackexchange narkive permalink

Lo scopo principale di un bootloader è:

  • recuperare il programma dalla memoria / dalla rete e caricarlo.

Ci può essere una quantità molto limitata di archiviazione veloce vicino all'unità di elaborazione e il programma che si desidera eseguire può essere diverso da scheda a scheda oppure si potrebbe voler modificare il programma sulla scheda. Il bootloader è un programma con denominatore comune che sa come caricare il software personalizzato da dove è memorizzato e alimentarlo all'unità di elaborazione.

I bootloader avanzati possono fare:

  • autotest
  • avvio dalla rete
  • carica firmware aggiuntivo
  • ...
L'OP chiede specificamente dei bootloader presenti nei microcontrollori basati su flash.Sebbene rilevante per i bootloader in un senso più generale, questa risposta sta vagando un po 'fuori tema.
Jan Dorniak
2016-04-16 22:29:15 UTC
view on stackexchange narkive permalink

Oltre a tutte le altre ottime risposte, c'è un motivo in più, almeno per i prodotti commerciali: dopo la programmazione di produzione la maggior parte dei chip ha un'opzione impostata per proteggerli dalla lettura dei dati.

A seconda dell'MCU questa opzione di protezione della lettura può effettivamente disabilitare la connessione del programmatore hardware (come SWD o JTAG). Se non hai il bootloader, non puoi riprogrammare il dispositivo.

E poi ti ritroverai con 10.000 unità con software difettoso sul mercato, che incorre in una grande perdita per qualcosa che è essenzialmente di pochi mesi codifica.

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

Solo per dare anche il punto di vista di un hobbista:

Rende la vita molto più facile non richiedere alcun hardware aggiuntivo o molta conoscenza di basso livello. Un esempio estremo che ho usato è stato il fotone particellare (nessuna affiliazione) che può essere proiettato sulla nuvola. Le uniche cose necessarie per eseguire il flashing di questo chip sono:

  • Alimentazione
  • WLAN
  • Connessione Internet
  • Un altro computer per scrivere il software

Rende il processo piuttosto economico ed è in realtà abbastanza semplice da una prospettiva non professionale.

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

Non è il costo del programmatore. Le vendite non provengono da hobbisti; è un fattore ma non il fattore, le persone che acquistano in volume possono certamente permettersi i programmatori. Hai alcune scelte:

  1. Prepara le parti dal fornitore delle parti o da un intermediario o dalla tua casa di produzione, quindi posizionale sulla lavagna

  2. Una sorta di programmazione in circuito dopo essere stati posizionati sulla scheda

Nella seconda categoria ci sono le soluzioni logiche (le SPI o cosa simile a SPI sui chip AVR) e le soluzioni software (un bootloader, un programma in esecuzione nella parte che utilizza la parte). Alcuni hanno entrambe le cose.

La soluzione difficile che devi ottenere giusta, se fai uno scherzo al design, devi prenderlo abbastanza presto o il tuo prodotto è un mucchio di parti inutili che devi cestinare. È possibile modificare le soluzioni software anche per quanto riguarda il post silicio; puoi persino fare un bilancio, esaminarlo e riprogrammarlo. Quindi c'è quel lusso se un bug nel tuo prodotto è più facile da correggere e / o creare. La soluzione morbida può anche consentire una più ampia varietà di opzioni per l'utente. SPI E I²C E USB E seriale E qualsiasi soluzione hardware, se presente. Una soluzione soft in alcuni casi l'utente può sostituire il bootloader con il proprio per le proprie ragioni.

Non tutti i microcontrollori possono avere software in grado di programmare il proprio flash, ma per qualsiasi cosa l'utente può fare il proprio proprio bootloader indipendente dal venditore di chip fornito uno se ce n'è uno fornito da un venditore di chip.

Con ARM Cortex-M e SWD vedo le cose cambiano; alcuni chip sono solo SWD e nessun altro dall'opzione di fabbrica. Ho appena ricevuto un Atmel SAM D21; non hanno più il bootloader SAM-BA e forniscono i sorgenti in modo che tu possa aggiungere il tuo all'inizio del flash dell'utente e alcuni registri per proteggerlo, ma è banale da cancellare. Tanto per quello; potresti anche crearne uno tuo o usare SWD.

Guarda il mondo Arduino / AVR, gli hobbisti. Hanno il loro bootloader e questa è l'interfaccia principale poiché viene fornito gratuitamente. Puoi ottenere un programmatore ISP per poche (o poche dozzine) di dollari. Ma notate come ci siano un certo numero di altre schede AVR che utilizzano protocolli basati su USB invece dei bootloader popolari fino a quel momento. Alcuni di questi protocolli USB vengono utilizzati da diversi fornitori.

Alla fine della giornata, se i tuoi clienti lo desiderano e / o il tuo reparto marketing possono utilizzarlo per distinguere il nostro prodotto dal loro, e non lo fa " t tagliare il costo del prodotto o il profitto. Perchè no? Win-win.

Non esiste una risposta giusta né una a questa domanda; è tutto basato sull'opinione. Puoi contattare ciascuno dei fornitori di chip e chiedere loro, ma le persone che rispondono daranno la loro opinione, probabilmente non lo sanno nemmeno o hanno mai parlato con le persone che hanno aggiunto quella funzione o la mantengono. Non c'è risposta a questa domanda.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...