L'aggiornamento del BIOS in un laptop viene effettuato modificando un microcodice?


Risposte:


0

Come viene effettivamente aggiornato il BIOS? È tramite microprogrammazione / microcodifica? Di no, allora cosa succede?

In passato, prima che il BIOS fosse archiviato su flash EEPROM / NOR / NAND, era necessario sostituire fisicamente la ROM BIOS con un chip più recente. Oppure, se il chip fosse una EEPROM, potresti rimuoverlo, programmarlo in un programmatore EEPROM e rimetterlo. Quasi sempre, la ROM è stata incassata per questo scopo.

BIOS aggiornabili vivono nella memoria flash a montaggio superficiale o possibilmente EEPROM su sistemi più vecchi. La connessione (che è SPI come dice @Krunal Desai) al resto del sistema avviene tramite il chipset. Tutti i dispositivi firmware BIOS hanno una connessione alla CPU per consentire al BIOS di leggere ed eseguire il codice dalla memoria e anche un'altra interfaccia per consentire la programmazione.

Per aggiornare il BIOS, un programma deve parlare con l'interfaccia di programmazione del chip flash e sovrascriverne le pagine con nuovi dati. Potrebbe essere necessario fare qualcosa per "sbloccarlo" per primo. Queste sono operazioni di I / O nella stessa categoria generale della conversazione con un disco o un controller di visualizzazione, non in realtà un'operazione di "microprogrammazione" o "microcodice".

Se ti sei mai imbattuto nel termine "microcodice" in relazione ai BIOS, questa è una cosa completamente diversa.

Molte CPU hanno un microcodice, che sono essenzialmente piccoli programmi che operano internamente alla CPU. La ragione di ciò è che alcune complesse istruzioni della CPU sono più facili / economiche da progettare e gestire tramite microcodice piuttosto che direttamente nell'hardware. Uno sviluppatore di software non può in genere modificare il microcodice di una CPU.

Intel e AMD consentono l'aggiornamento del microcodice della CPU in caso di errori o errori nella produzione della CPU. Ciò è accaduto di recente con un chip Intel che ha introdotto la "Transactional Memory" o le istruzioni TSX che non funzionavano correttamente. In generale, il modo in cui funziona è che mentre il BIOS sta inizializzando il sistema, applicherà l'ultimo aggiornamento del microcodice alla CPU. Se esce un diverso aggiornamento del microcodice, il fornitore dell'hardware può emettere un altro aggiornamento del BIOS con l'ultimo microcodice. I sistemi operativi possono anche installare l'ultimo microcodice da soli.

Non si tratta ancora di "microprogrammazione" in quanto in questo caso si applica semplicemente un "aggiornamento della CPU" e non si utilizzano "microistruzioni" individuali nei propri programmi.

Gli aggiornamenti del microcodice vengono persi quando si interrompe l'alimentazione e devono essere applicati ogni volta all'avvio.


1

Su una moderna piattaforma Intel, il BIOS è archiviato in un chip di memoria Flash NOR SPI (Serial Peripheral Interface) collegato al PCH. Il metodo esatto di aggiornamento varia da fornitore BIOS a fornitore, ma ero solito mantenere un BIOS AMI basato su UEFI per la mia azienda. Lo strumento di aggiornamento del firmware (AmiFlash) può essere eseguito da Windows, shell UEFI o un ambiente DOS auto-boot e sovrascrive semplicemente il contenuto di quel flash SPI.

In passato, le piattaforme Intel avevano un dispositivo di archiviazione basato su FWH (Firmware Hub), che si trovava sul bus LPC (Low Pin Count).

Gli aggiornamenti del microcodice vengono spesso forniti come parte di un aggiornamento del BIOS e vengono applicati come BLOB binari su ciascun ciclo di alimentazione: la CPU effettiva non viene modificata in alcun modo, forma o forma.

Immagino che AMD sia abbastanza simile: probabilmente sono passati anche alla memoria SPI convenzionale.

Se si esegue un ciclo di accensione o un altro interrupt nel mezzo di un aggiornamento, la piattaforma verrà bloccata. Alcune schede madri hanno due flash SPI che consentono di utilizzare un approccio di tipo bank-switching A / B.


-1

Gli aggiornamenti del firmware sono essenzialmente il lampeggiamento di un pezzo di memoria su un chip di memoria flash o dispositivo EEPROM sulla scheda madre. Il codice BIOS è molto critico, in quanto è il codice di avvio per avviare il computer per il sistema operativo specifico (Windows, Linux, ecc.). Inoltre il BIOS gestisce molte altre funzioni, assegnazioni di I / O critiche, selezione dell'unità di avvio, ecc.

Il sistema operativo ha un'applicazione che gestisce l'effettivo aggiornamento del codice BIOS, è possibile scaricare il nuovo codice (in formato esadecimale) da una pagina Web, o eventualmente tramite una chiavetta USB, e il produttore della scheda madre fornirà un programma che parla con il suo hardware e "spinge" il nuovo BIOS sulla scheda madre.

Molte routine di aggiornamento del BIOS della scheda madre di fascia alta hanno un metodo di aggiornamento fail-safe, nel caso in cui il dispositivo perda l'alimentazione durante l'aggiornamento. Il nuovo codice viene scritto in un'area vuota, quindi viene scaricata una somma di controllo. Il nuovo codice passa attraverso il calcolo della somma di controllo per verificare che sia corretto. Se è corretto, una bandiera nel bios indica la nuova area di memoria. Quindi il computer viene riavviato e viene utilizzato il nuovo codice. Se qualcosa va storto, il flag punterà ancora al vecchio codice e l'utente verrà informato di riapplicare l'aggiornamento.

Ho scritto e mantenuto il codice di aggiornamento per le "scatole nere" incorporate utilizzate nel trasporto commerciale, nei dispositivi medici e nei dispositivi multimediali; lettori mp3, set top box, ecc.


Sebbene sarebbe certamente bello se gli aggiornamenti del BIOS funzionassero in questo modo, la maggior parte delle schede madri non lo fanno. Un aggiornamento del BIOS non riuscito è in genere fatale.
duskwuff,

Ho modificato per riflettere ciò che credo sia ora corretto, è comune per le schede madri di fascia alta.
philbrooksjazz,
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.