Come firmware comunicano i dispositivi elettronici per svolgere le sue operazioni?

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

  •  21-09-2019
  •  | 
  •  

Domanda

Quasi tutti i dispositivi elettronici è dotato di firmware. So che è memorizzato nella ROM (Read Only Memory) in modo che diventi non volatile (nessuna fonte di energia necessaria per contenere i contenuti di ottenere cancellati come la RAM)

Quello che voglio sapere è: "Come firmware comunicare ai dispositivi elettronici per svolgere le sue operazioni?" Lasciate dire che c'è un piccolo rullo .. Su pressione di un pulsante, come si fa a muoversi? Qualcuno può spiegare ciò che risiede dietro, per farlo accadere .. Penso che potrebbe richiedere un po 'breve spiegazione per rilassarsi esso ..

Anche ciò che è la lingua più popolare usato per la codifica firmware?

È stato utile?

Soluzione

hardware moderno come si sta descrivendo ha un programma memorizzato nella ROM e un microcomputer per tutti gli usi (CPU) l'esecuzione di quel programma.

La CPU legge le informazioni dalla ROM attraverso la creazione di indirizzi sul suo bus indirizzi e poi chiedere la ROM di dire che il valore memorizzato in quella posizione. C'è qualcosa di simile a un impulso di lettura essere cresciuto (su una riga separata) per raccontare la ROM per rendere il valore accessibili sulle linee del bus dati. Questo, in poche parole, è la lettura.

Per ottenere l'hardware per fare qualcosa, la CPU esegue in pratica una sorta di operazione di scrittura. Si mette un valore, che è solo un mucchio di bit se si vuole guardare in quel modo, sul bus indirizzi per selezionare un determinato dispositivo e, forse, la funzione su quel dispositivo, quindi solleva un'altra linea di segnale che dice "scrivere!" Il dispositivo che riconosce il suo indirizzo sul bus indirizzi risponde a tale segnale accettando i dati dal bus di dati e quindi eseguire qualunque sia la sua funzione è. Tipicamente, uno dei bit del bus dati saranno collegati all'interno del dispositivo di uscita di uno stadio di uscita di potenza, vale a dire un transistore forti di quelli usati solo per il calcolo, e che il transistore collegherà qualche dispositivo elettrico di corrente sufficiente a far spostare / glow / qualcosa.

Piccoli, i dispositivi a buon mercato sono codificati in linguaggio assembly per ridurre i costi per ROM; in quantità industriale, anche piccole quantità di memoria possono influenzare prezzo. Il linguaggio assembly è specifico per la CPU; alcuni chip chiamato "8051", "6502" e "Atmel (qualcosa o altro)" sono molto popolari. dispositivi più grandi con requisiti più complessi possono avere il loro firmware scritto in C o un dialetto simile al C, il che rende la programmazione un po 'più facile di assembler. Quelli bigges anche eseguire codice C ++. Compilato, naturalmente.

Altri suggerimenti

Nella maggior parte dei sistemi ci sono indirizzi di memoria speciali che vengono utilizzati per l'I / O. Lettura e scrittura su tali indirizzi esegue una qualche funzione invece di spostare i dati in giro. Nei sistemi x86 ci sono anche le istruzioni speciali di I / O IN e OUT per questo.

Il caso più semplice è chiamato parallelo generale I / O (GPIO), dove è possibile leggere o scrivere dati direttamente da / a pin elettrici esterni sul dispositivo. Ci sono diversi indirizzi di memoria, detti registri, dove si può leggere dati dalla porta (tensione near 0 = 0, vicino tensione di alimentazione = 1), dove si può scrivere dati alla porta, e dove è possibile definire se un particolare perno è ingresso (il bit corrispondente è 0) o uscita (il bit è 1). Ogni microcontrollore ha GPIO.

Quindi nel tuo esempio, il pulsante potrebbe essere collegato a un pin impostato su input, che il software potrebbe percepire. Sarebbe in genere fare questo ogni 10ms e reagire solo se ha un valore stabile per diversi legge, questo è chiamato debouncing. Allora sarebbe scrivere un 1 a qualche uscita, che attraverso qualche transistor per amplificazione potrebbe azionare un motore. Se si sente che si rilascia l'interruttore potrebbe spegnere il motore ancora scrivendo uno 0. E così via, questo programma verrebbe eseguito fino a quando si accende il dispositivo.

Ci sono un sacco di altri dispositivi di I / O per altri scopi con tipicamente centinaia di registri per controllarli. Se volete vedere di più si poteva guardare nella scheda di dati di qualche microcontrollore. Ad esempio, ecco la scheda di ATtiny4 / 5/9/10 , un piccolo regolatore della famiglia Atmel AVR.

Oggi la maggior parte del firmware è scritto in C, fatta eccezione per i dispositivi più piccoli e per un po 'di codice speciale per la gestione di reset e di interrupt, che è scritto in linguaggio assembly.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top