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

Re: Debian trademark [was: Debian GNU/w32, may ready to be started?]

On Sun, Dec 09, 2001 at 12:07:45AM +1100, Hamish Moffatt wrote:
> This is a fairly unimportant discussion, but it's interesting
> from an academic point of view.
> On Sat, Dec 08, 2001 at 12:53:54AM -0600, Adam Majer wrote:
> > You have a point _but_ I tend to agree with John - firmware doesn't need
> > to be software. It is there only to provide the standard interface to
> > hardware - this used to be done without firmware at all, it was
> > hardcoded. There are CPUs available that will reconfigure themselves
> > thus are not hardcoded. Would you call them software as well?
> I think anything executed by a microprocessor is software. PC BIOSs,
> video card BIOSs, SCSI card BIOSs, etc all fit that definition I
> think.

Bad examples, however.  All of these BIOSes are x86 code to be executed
by the main CPU, just like the operating system and its applications.

>        Microcode inside modern CPUs is a bit blurry though.

Why?  It's software, too, by your definition.  It's a machine code
stream and definitely executed by a microprocessor.

IMHO a good definition for firmware would be "software, which runs
independently from CPU machine code on hardware, to make it work as

Athlon or Pentium microcode is required to actually make it execute x86
machine code as specified, some SCSI device implement the SCSI protocol
in software, EZUSB devices need the software for their embedded
controller (8051, maybe other types) downloaded over USB before they act
as the USB device they were bought as.

The desktop/server PC is a general purpose machine, so it's your
responsibility to supply the software to make it do the thing you want.
Other hardware is special purpose, and firmware is what makes it fulfil
that purpose.

That doesn't mean I don't mind that these are mostly proprietary
software.  However it's even less likely that we will see e.g. CPU
microcode disclosed, since these show a lot of very internal details of
the hardware (like how instructions are translated to operations, how
they are handled, etc.).  They are more likely to be uptight about that.

> There are programmable logic devices such as FPGAs (field 
> programmable gate arrays) to which you download a design
> built with a tool chain (as software is built with a tool
> chain, the compiler and linker etc). However you're downloading
> a circuit description into the device -- gates and wire
> connections. Those designs aren't software (or firmware).
> (I do designs for FPGAs for a living.)

So it's a static table (or description).  Such tables are also used in
common software, most notable scanners and parsers, where the actual
code only a state machine as described by the tables to process its
input.  The executed code is very generic, most of the processing is
integrated in the tables.

If you want to define software as "sequentially executed instructions
for hardware" then a FPGA configuration isn't.  If software can be
"instructions interpreted by hardware" then it would be.

Andreas Bombe <bombe@informatik.tu-muenchen.de>    DSA key 0x04880A44

Reply to: