[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: LCC and blobs

Brian Thomas Sniffen <bts@alum.mit.edu> wrote:
> Måns Rullgård <mru@inprovide.com> writes:
>> You can pull the chip from the socket, copy the contents to disk,
>> and
> I probably can't.  No good with that sort of thing.  Software on disk
> is software.  Also, I could pull  the Pentium off my motherboard, scan
> its contents to disk, and open that in any editor I like -- right?

No. The firmware we're talking about is code that is executed by
something that approximates a processor. The firmware will be stored as
a set of bits in flash, and can be accurately represented as a flat
file. For the most part, this isn't true of the hardware that actually
executes these instructions. Chip design can be represented in a variety
of ways, but it's not a direct correspondance. There's no way to attach
a pentium to a system and then read off a representation of the internal

>> open it with any editor you like.  The chip can also be rewritten.
>> Where is the fundamental difference from a device where the firmware
>> is written with the chip in its socket?
> Before I believe your definition or put too much thought into
> considering it, please explain why it isn't a complete destruction of
> the line between software and hardware.

I'm beginning to wonder whether you're fundamentally confused about the
concepts we're actually discussing. To a reasonable approximation,
firmware is executable code that is not run under the direct control of
the host operating system. In much hardware, this is stored in a small
quantity of flash. On power on or initialisation, this code will be read
out of the flash and executed by something that will range from a very
specialised chip all the way up to general purpose CPUs (several pieces
of hardware available nowadays have ARM cores on them). In a smaller
number of cases, the flash is removed (this saves some money) and the
firmware is copied into volatile storage on the device by either the
host OS or the system firmware.

It may be helpful to think of your hard drive as a computer. At that
point, the firmware is clearly software for the hard drive - it's a
string of bytes that is executed. The rest of the hard drive is
hardware. If something is software in one situation, I believe that it's
reasonable to treat it as software in other situations.

This leaves a distinction between the code executed by processors and
the processor itself. Whether or not something that can be described in
verilog is software or not is an interesting question, but not one whose
answer is influenced by determining that most firmware is software.
Verilog describes the function of a piece of hardware, in the same way
that plans for a house describe the way it should fit together - but in
that form, they do not provide the functionality that the physical
representation provides. On the other hand, the nature of firmware
doesn't change between the point where it's stored and the point where
it's used.

Matthew Garrett | mjg59-chiark.mail.debian.legal@srcf.ucam.org

Reply to: