Installazione di un firmware diverso su Arduino


12

È possibile aggiornare il firmware su un Arduino in modo che possa fare più cose come cambiare sottotensione / sovratensione al fine di fornire più potenza di elaborazione. Per fare ciò, molto probabilmente dovresti ripetere il flashing del chip stesso, quindi come verrebbe realizzato?


2
La maggior parte delle nuove funzionalità è fornita dalle librerie e dalla programmazione. Di che tipo di "più cose" stai parlando?
TheDoctor,

Cosa ha detto TheDoctor, cosa intendi con più cose? Inoltre, a cosa ti riferisci con "firmware"? Il software / sistema operativo integrato?
hichris123,

Devo solo eliminare la domanda
JVarhol,

@JVarhol Se puoi renderlo più chiaro, nah, tienilo.
Spiegaci

So che puoi installare un nuovo firmware sul chip seriale USB in modo che possa emulare una tastiera
TheDoctor,

Risposte:


7

Per rispondere all'aspetto della tua domanda relativa al "firmware" sulla MCU ATmega328p utilizzata nella maggior parte delle schede Arduino:

Su ATmega non esiste alcun firmware a parte il bootloader. I programmi che scrivi sono in esecuzione direttamente sull'hardware.

Ci sono alcune impostazioni "fusibili" che sono state impostate con un programmatore ISP . Tuttavia, ce ne sono solo 24 (tre byte) e si riferiscono in gran parte alla configurazione di basso livello e non sono ciò che penso tu stia chiedendo:
inserisci qui la descrizione dell'immagine

C'è anche il Bootloader , che è un piccolo programma che si trova in un segmento separato della memoria del programma dell'MCU e gli consente di aggiornarsi all'avvio (è così che sono programmati tutti gli Arduinos). Tuttavia, viene eseguito solo per un breve periodo di tempo all'avvio e viene completamente rimosso dalla memoria dopo che l'MCU è passato al programma principale.

Infine, ci sono MCU ausiliari (ATmega16U2 / 8U2) sulla maggior parte delle schede arduino che vengono utilizzate come interfacce USB-seriali, che possono essere aggiornate per comportarsi in modo diverso (ad esempio emulare una tastiera / mouse), ma ancora una volta, questo non è in realtà un cambiamento al core processor, quindi se conta come "installazione di un firmware diverso" dipende da come si definisce l'arduino.

Davvero, consiglio vivamente di leggere il foglio dati ATmega328P . Questa è la documentazione per la MCU che fondamentalmente forma "Arduino". Dovrebbe affrontare quelle che sembrano essere idee sbagliate.


5

Nota la seguente tabella, per quanto riguarda il tuo sotto / sovratensione del dispositivo per diversi F_CPU, indica la relazione. Di conseguenza, la maggior parte di Arduino funziona a 5 V e una frequenza di clock di 16 MHz. Mentre ci sono alcune varianti da 3,3 V che funzionano a 8 MHz.

Freq vs Vcc

Tuttavia, la libreria principale fornita con l'IDE ha in genere # if specifici per velocità F_CPU sia a 8 che a 16 MHz, non usando una formula nella maggior parte dei luoghi.

Quindi è possibile fare ciò che chiedi. Tuttavia, troverai le limitazioni della libreria principale che interessano. Ribaltare il rapporto costi / benefici a quello dell'intento. E quindi probabilmente uno lascerebbe l'IDE Stock e le librerie core a un metodo più makefile.


Apparentemente può essere overcloccato a 20 mHz
TheDoctor

@TheDoctor - questo non è overclocking. L'ATmega328p è valutato a 20 Mhz. Gli Arduinos sono in realtà inferiori a 16 Mhz.
Connor Wolf,

@FakeName sì, intendevo dire che puoi modificare una scheda Arduino in modo che il risuonatore nessecary si sintonizzi a 20 mHz
TheDoctor,

Oh, un'altra nota a margine. In genere è possibile superare l'area operativa sicura senza problemi importanti . Ho un numero di schede che funzionano a 16 Mhz con rotaie da 3,3 V senza problemi. Possono avere problemi di stabilità a temperature estreme, ma sembra funzionare per lo più bene a temperatura ambiente.
Connor Wolf,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.