Pagina 1 di 1
Domanda sui firmware
Inviato: mar 16 set 2008, 18:26
da mordecai
Salve a tutti avrei un dubbio riguardante i firmware.
I firmware sono quei software scritti in linguaggi macchina,che consentono all'hardware di funzionare col sistema operativo.Spero di aver dato una buona definizione e soprattutto corretta.
La domanda che mi pongo è la seguente:perchè si realizzano i firmware in linguaggio macchina?Non sarebbe più facile programmarli in un linguaggi ad alto livello?
Forse perchè l'interazione con l'hw deve essere istantanea e quindi solo il linguaggio di basso livello permette questa velocità?

Re: Domanda sui firmware
Inviato: mar 16 set 2008, 18:32
da JohnnyMnemonic
Dalla definizione che da Wikipedia:
Il termine deriva dall'unione di "firm" (stabile) e "ware" (componente), indica che il programma non è immediatamente modificabile dall'utente finale e che si tratta del punto di incontro fra componenti logiche e fisiche, ossia fra hardware e software.
Essendo il firmware uno "strato" di collegamento tra hw e sw deve essere scritto in un linguaggio (sw) il più possibile vicino al linguaggio macchina (hw)
Re: Domanda sui firmware
Inviato: mar 16 set 2008, 21:16
da Mario Vanoni
JohnnyMnemonic ha scritto:Dalla definizione che da Wikipedia:
Il termine deriva dall'unione di "firm" (stabile) e "ware" (componente), indica che il programma non è immediatamente modificabile dall'utente finale e che si tratta del punto di incontro fra componenti logiche e fisiche, ossia fra hardware e software.
Essendo il firmware uno "strato" di collegamento tra hw e sw deve essere scritto in un linguaggio (sw) il più possibile vicino al linguaggio macchina (hw)
Nel 1985/6 firmware era _interpretato_:
firm == azienda
ware == software
quindi software proprietaria del costruttore della HW,
tempi AT&T 3B2/310 e 3B2/400, storia oramai ...
Senza la firmware non si installava il sistema operativo,
allora AT&T UNIX SVR3[.012].
La firmware era su un floppy 5 1/4" singolo!
Primo floppy per poter bootare la macchina.
Re: Domanda sui firmware
Inviato: mer 17 set 2008, 11:19
da 414N
mordecai ha scritto:
I firmware sono quei software scritti in linguaggi macchina,che consentono all'hardware di funzionare col sistema operativo.Spero di aver dato una buona definizione e soprattutto corretta.
Wikipedia (EN) ha scritto:
In computing, firmware is a computer program that is embedded in a hardware device, for example a microcontroller. It can also be provided on flash memory or as a binary image file that can be uploaded onto existing hardware by a user.
As its name suggests, firmware is somewhere between hardware and software. Like software, it is a computer program which is executed by a microprocessor or a microcontroller. But it is also tightly linked to a piece of hardware, and has little meaning outside of it.
Non è detto che il firmware venga scritto in linguaggio macchina: io ho programmato il software di alcuni microcontrollori PIC (quindi il loro firmware) e, a parte il loro linguaggio Assembly, avevo a disposizione anche un compilatore C apposito. Ovviamente -- indipendemente dal linguaggio usato -- si andava a produrre un programma nel linguaggio macchina del microcontrollore.
mordecai ha scritto:
La domanda che mi pongo è la seguente:perchè si realizzano i firmware in linguaggio macchina?Non sarebbe più facile programmarli in un linguaggi ad alto livello?
Forse perchè l'interazione con l'hw deve essere istantanea e quindi solo il linguaggio di basso livello permette questa velocità?

Dato che si parla di dispositivi con una quantità limitata sia di memoria sia di risorse computazionali (architettura RISC il più delle volte), è probabile che il compilatore C (o di un qualsiasi altro linguaggio di più alto livello dell'Assembly) tenda ad inserire istruzioni ridondanti e/o inutili, più il firmware che si va a programmare aumenta di complessità. Questo è inevitabile quando si aumenta l'astrazione dall'architettura fisica.