Linux, for a long time, did not need no steenkin' BIOS (you can find that
quote if you look back far enough).
*But those days are gone.* This is the reason why INTEL has no chance to win IoT race with ARM (just in few special use cases). With all these compatibilities, and test modes, INTEL is forcing customers to the HW CLOSED model, forcing as well Firmware CLOSED model (with 10x more silicon/HW extensions to comply, and end users/customers are paying for that). Since there are gazillion of boot registers which need to be set-up properly for modes to work as intended.
Having concept of Device Tree Usage (HW OPEN model, forcing FW/BSP OPEN model), I can, having one very smart HW designer (with random IO controller order with ARM SoCs: i.MX6/7/8, tegra, etc.), build the whole ARM based SoC HW and whole system SW including FW, application tools rich root-tree, and Device Drivers in few weeks using YOCTO. Board Plug & Play, ready for Application, written in Qt5, Java, C++ with all tools, U name it!
https://events.linuxfoundation.org/sites/events/files/slides/petazzoni- device-tree-dummies.pdf
So, Device Tree Usage + YOCTO = 2 experienced men work from scratch with the COMPLETE embedded solution for 2 to 3 weeks. Mini com express for around 20 to 100 EUR a piece? Please, could you try to do this with INTEL ATOM or CORE in this time for this price? ;-)
Zoran Stojsavljevic
On Thu, Sep 7, 2017 at 2:23 AM, ron minnich rminnich@gmail.com wrote:
The original statement about BIOS -- that it was a second OS from the first day on -- is not correct.
I am pretty sure the term BIOS (Basic Input Output Subsystem) comes from the early days, from CP/M. That's when I started hearing it anyway.
The BIOS was the bottom half of CP/M. It provided an abstract device interface that the top half -- the part that came on a floppy -- could use. So the BIOS was not a second OS. It was 1/2 the OS you ran. Vendors created hardware and BIOS for the (usually 1024 byte) ROM and that ensured that CP/M could run on their box. The part of CP/M on the floppy, and the part in EEPROM, combined to provide a kernel. Kernel, of course, being a very loose term given the lack of processor modes.
This was a very different model from, e.g., the minicomputers of the day, wherein the ROM was used to boot a kernel and then it got out of the way.
So BIOS nature as a runtime entity was established very early on.
Linux, for a long time, did not need no steenkin' BIOS (you can find that quote if you look back far enough). But those days are gone.
ron
On Wed, Sep 6, 2017 at 5:09 PM Julius Werner jwerner@chromium.org wrote:
The awkward thing about BIOS is that it was a second OS from the first day on – while the reasonable philosophy behind firmware should be: Start the board, load the OS and go back into your flash until reboot.
My history lessons may be failing me here, but IIRC the main reason for that was memory: DOS wasn't a full OS in the modern sense, it was pretty much just a shell and a collection of utility programs. All the actual device driving was done by the BIOS. So if you compare it with a modern GNU/Linux machine, the BIOS was equivalent to Linux and DOS to the GNU parts.
The original IBM PC had so little memory that they couldn't really afford to waste any of it on stuff like device drivers. So they put the drivers in flash where they could be executed in-place, which became the BIOS. Most of DOS itself (essentially the command.com shell) was just unloaded whenever you launched a program and re-loaded from disk afterwards, and while the program was running it mostly interacted with the BIOS directly.
So you're right that from our current point of view that having callbacks into firmware makes little sense, but back then they were working with what they had and it was pretty much the only way to get as much out of the machine as they needed. The BIOS was really the first OS on the platform, and all those later ones that implement their own drivers (Windows, Linux) are breaking with the intended paradigm.
-- coreboot mailing list: coreboot@coreboot.org https://mail.coreboot.org/mailman/listinfo/coreboot
-- coreboot mailing list: coreboot@coreboot.org https://mail.coreboot.org/mailman/listinfo/coreboot