Brian Thomas Sniffen <[EMAIL PROTECTED]> wrote: > Måns Rullgård <[EMAIL PROTECTED]> 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 structure. >> 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 | [EMAIL PROTECTED]