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à? :-k

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à? :-k
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.