Software or Firmware

If it's on a disk/SSD or similar medium and (easily) changeable or delete-able, then it's software.
If it's in flash/EPROM/PAL/PLA/FPGA or similar and not easily changeable, then it's firmware.
If it's not changeable at all, it's hardware.

Of course, stuff that ends up in hardware/firmware often starts out as software at some point in the development process, but this shouldn't be allowed to cloud the issue.

The Customised Firmware for the Humax is thus correctly named, IMHO. :)
 
Last edited:
Given the original use of the word, you should be fighting for its preservation, as existing to implement the instruction set of a microprocessor, or other bit of hardware, BH.
 
If it's on a disk/SSD or similar medium and (easily) changeable or delete-able, then it's software.
If it's in flash/EPROM/PAL/PLA/FPGA or similar and not easily changeable, then it's firmware.
If it's not changeable at all, it's hardware.
Interesting. If I write some software and burn it to a CD - making it unchangeable - it doesn't become firmware or hardware. (It may become a drink coaster, but that's another story).
Of course, stuff that ends up in hardware/firmware often starts out as software at some point in the development process, but this shouldn't be allowed to cloud the issue.
But it does. At what point does software become firmware? When you put it in a rigid form of memory? Is it wrong to then refer to the firmware as software?
The Customised Firmware for the Humax is thus correctly named, IMHO.
As far as I'm concerned, the people that created what is known as the Customised Firmware can call it what they want. They've earned the right to name it as firmware if they want. However, if Humax want to call their updates "software updates", I'm perfectly happy to let them.
 
At what point does software become firmware? When you put it in a rigid form of memory? Is it wrong to then refer to the firmware as software?
It's practically impossible to draw up demarcations unless it is by the means used to store it and make it available for operation (ie the implication it has to the end user).

Let's suppose we are discussing some compiled code which, if it were stored on disk and loaded into RAM to execute, would be definitely "software", but because it has been stored in non-volatile memory by the manufacturer as an integral and essential part of the system, I regard it as "firmware". Some programmer has written a program in a high level language which has then been compiled by another program known as a compiler into the binary execution code that suits a specific processor environment. The resulting program does something useful, and there is no doubt it is software, but it becomes firmware when it is installed in a way that is not amenable to change by the end user.

What's the alternative? Only to say there is no such thing as firmware and all forms of stored functional definition regardless of creator, method of creation, or means of storing it is software. That would meet just as much opposition.

Suppose I draw a circuit diagram for some functional element or other, and build the circuit in logic gates - that's hardware. But what if I use that circuit diagram to work out which fuses to blow in a Programmable Logic Array (a chip that contains logic gates which can be connected in various ways to implement a wide variety of logic circuits, replacing a circuit board with one chip)? The process of blowing the fuses programs the chip to do what the designer intended, and is accomplished by loading a binary definition file into a programmer - or (with patience) manually by setting highs and lows on the relevant pins and applying a voltage pulse to blow the addressed fuse. No software has been used in the inspiration, drafting, calculation, or programming of the PLA, and the programming in the PLA is not executed (it routes logic signals through a switch array that is defined once and then never changes). Is the PLA content "software"? Of course not.

However, I can now use hardware description languages (eg VHDL) to define the functionality of the PLA in (effectively) equations, and a software compiler can produce the binary definition file targeted at any specific kind of PLA resulting in precisely the same fuse pattern that I worked out manually. Is that "software"? Can't be, it's indistinguishable from a PLA programmed by the manual method, but it's not hardware either because its functionality is not inherent in the hardware until the firmware is programmed in.

The same argument can be applied all the way up the chain, until the only point of distinction is whether the firmware/software in question is whether it is available for the user to modify or is in some way protected. The argument that if it is stored in non-volatile memory it must be firmware doesn't hold, because all our phones/tablets store everything in NV memory, but we can change it.
 
Interesting. If I write some software and burn it to a CD - making it unchangeable - it doesn't become firmware or hardware. (It may become a drink coaster, but that's another story
The distinction being

1) You will not be executing it from the CD;

2) Even if you are the CD is spinning and removable.
 
If I write some software and burn it to a CD - making it unchangeable - it doesn't become firmware or hardware.
Indeed it doesn't. You can change the disk (or is it disc :roflmao:), so it's software (from the PoV of the machine the disk is inserted into).
 
No it's not. It's software. Since when have floppies been hard or even firm?:frantic:
Since they encased them in a hard plastic case. The OS used to be loaded from a floppy, and was non-alterable by the user. It was, to all intents and purposes, firmware. I have limited experience, only based on the Atari ST and BBC micro.

I am more and more convinced that this software/hardfirmware distinction is no longer relevant and should be dropped.
 
Last edited by a moderator:
What? I think you mean software/firmware, and no it shouldn't - just use it properly so it has meaning.
 
OK, I meant firmware, but hey, why not argue the other option? When a VM can emulate hardware, when the functionality of hardware can be changed by flashing different softfirmware, the distinction is getting blurred.

Only joking.
 
There's one term I haven't noticed in my, somewhat casual, reading of this thread - to wit middleware.
This used to be very much a current term for the ill-defined stuff in the middle at one stage.
 
"very much a common term" when? Pre-Internet, engineering departments in different companies were very much like islands and tended to coin their own terms for things, used and understood locally, but different from engineers elsewhere. What you perceived as commonplace wasn't necessarily so.

Often the terms were informed by the technical documentation of preferred chip suppliers - if you were into AMD programmable logic you probably talked about PALs, whereas from somewhere else you may have talked PLAs.
 
My favourite assembler instruction was SNZ which stands for Store Negative Zero. I know what it means but does anyone else? :D
 
You've got me. What processor has that?

My first thought was 8000h (16-bit) in twos-compliment, but that's -32,768 not -0.
 
It is the Unisys 1100/2200 series mainframe which use ones-complement representation of numbers. SNZ is an easy way to set all the bits in a memory location.

Start getting worried when we hit 2028 as the timestamp format used by the OS1100 file system rolls over back to year zero being held as a six bit offset from 1964. The US military depend a lot on these mainframes.
 
Back
Top