gnu-linux-libre
[Top][All Lists]
Advanced

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

Re: [GNU-linux-libre] MAME


From: Denis 'GNUtoo' Carikli
Subject: Re: [GNU-linux-libre] MAME
Date: Sat, 2 Apr 2016 23:46:49 +0200

On Fri, 1 Apr 2016 23:55:22 +0200
Jean Louis <address@hidden> wrote:

> Firmware or blobs are removed from mainstream Linux kernel exactly for
> that reason that there is no source code or/and there is no free
> software license.
> 
> When I say "free" I mean by 4 software freedoms. Binary or blob or
> firmware is not free without the corresponding source code. That is
> what I meant with it: there are no "free firmware" or "free ROMs", as
> if someone says in that manner, I would assume he gives me final
> product or binary, which cannot be free software without the source
> code.

Here you are talking about the fimrwares running on the peripherals the
Linux kernel communicates with.
That includes WiFi cards, Ethernet cards, GPUs and so on.

Some WiFi chips have a microcontroller inside.
This is a CPU with many peripherals on the same chip.
This is very similar to the chip that smartphones and tablet uses, but
here they don't have external RAM chips[1].

Long time ago, such WiFi chips had their firmware stored on a
dedicated flash.

However the cost of such flash could be avoided by making the host
OS(GNU/Linux for instance) load the fimrware into the microcontroller.

Since many drivers communicate with the device fimrware to operate,
not loading the firmware would result in the impossibility to use that
device.

If we take the ath9k_htc corresponding fimrware, it's written in C.
However its only purpose is to make that WiFi chip work.

Now the Linux kernel doesn't make any difference between loading binary
code for a peripheral, other configuration data, or even register dump.
The code that manages it is the same in all cases, and only deal with
sending data to a given peripheral.

As for ROMs it designs read only memory.
A chip could be designed:
- To run code from an internal or external read only memory.
- To run code from an internal or external flash memory.
- To run code that is loaded by a host processor (Like the one you
  run GNU/Linux on).
- Not to run code at all. Some WiFi chip (like the ath5k and ath9k
  compatible ones) don't run any code. Instead the host OS (GNU/Linux
  for instance) talks directly to the hardware.

Note that many terms are abused, that makes it difficult to give proper
definitions.
This is also partly because the hardware changes too fast, and humans
have a tendency to still use the same terms when it no longer applies.

For instance if computers used to have ROMs to store the BIOS, and
at some point switches to flash, you will see many people still
referring to ROMs, even if they are long gone for that purpose.

References:
-----------
[1]The line between both is not that clear, since you may be able to
   use a SOC for practical purposes without external ram, or add
   external RAM to microcontrollers. The quantity of RAM is also often
   used to distinguish between both.

Denis.

Attachment: pgpTtiCrOA8rf.pgp
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]