Hi Paul,

Paul Edwards wrote:
> >> > Sure. Implement a driver for that redirection which behaves as an
> >> > int14h handler and place the address of its entry point at address
> >> > 0000:0080. (14h*4)
> >>
> >> > The method works with any BIOS.
> >>
> >> I would like it to work with any OS that uses INT 14H
> >> (regardless of how many of those exist), rather than
> >> any BIOS.
> 
> > It works both with any BIOS (int 14h provider) and any OS (that uses
> > int 14h), so is a very general approach.
> 
> Ok, the main thing is I don't want my OS to have to load
> this, I want it loaded before the OS is loaded.

I understood that, and an option ROM satisfies this.


> >> For now I am happy if it only works with SeaBIOS, and
> >> I will simply buy a PC that allows me to flash SeaBIOS
> >> onto it.
> 
> > PC Engines apu hardware comes with coreboot and SeaBIOS, but may or
> > may not fit your application.
> 
> This seems to be a kit.

The bare board only needs power to run, everything is onboard. Some
resellers may offer the board mounted in a case.


> Does this imply most computers don’t allow their firmware to be
> flashed with SeaBIOS?

You can flash it, but the computer will no longer start.

SeaBIOS doesn't perform hardware initialization of e.g. RAM and PCI busses.

SeaBIOS was created to be a coreboot payload when a system with coreboot
needed a BIOS to start the OS.


> If that is the case, is there someone else I should be negotiating with?

Good question - it probably depends on the bigger picture of your project.

What do you want to accomplish in the end? Is this a one-off thing or high
volume, how deterministic must it be in which environment etc.?


 
> > Think of an option ROM as a modular expansion to any BIOS.
> 
> This sounds promising. So perhaps manufacturers allow
> option ROMs to be flashed, but just not the entire
> BIOS to be replaced?

Option ROMs traditionally exist primarily on option cards. SeaBIOS is
cleverer and can also run option ROMs in the boot flash.

A proprietary BIOS or UEFI will not likely run an option ROM from the
boot flash.


> > Here's an open source option ROM: https://github.com/alson/sgabios
> 
> > It's x86 real mode assembly; the typical BIOS environment.
> 
> I took a look thanks. But actually I am hoping all of this will
> be in C. I was expecting INT 14H to be minimal x86 real
> mode that switched to UEFI C code,

Oh, UEFI..

You may know, but interrupt services such as int 14h are a BIOS interface,
as provided by traditional BIOS implementations. UEFI implementations do
not provide interrupt services, but a CSM can.


> the same as CSM does (right?).

I don't think UEFI mandates /how/ a CSM implements the interrupt services,
I'd expect that a CSM can do what it wants without calling into UEFI, but
depending on what it needs to do it may /want/ to call into UEFI.


> I read that SeaBIOS supports CSM.

SeaBIOS can act as CSM, at a minimum in VMs, I don't know what the
situation is with UEFI implementations on hardware.


> > A virtual graphics adapter is fairly complicated so I guess that your
> > end result will be much simpler than SGABIOS is.
> 
> Ok, for the specific case of converting INT 14H into Bluetooth -
> I assume that much Bluetooth hardware is proprietary.

Bluetooth is one of the most, if not the most, proprietary contemporary
technologies. I think it may be the original case of a quasi-open
standardization process coupled with fierce intent to keep any
implementations as closed as possible.


> But I know that libbluetooth exists.

What does libbluetooth refer to, exactly?

If you mean the shared library (.so file) on Linux systems then that
isn't relevant for your idea.


> Basically is it possible to flash libbluetooth onto an option ROM,
> add 100 lines of x86 assembler to switch to long mode from INT 14H,
> call libbluetooth, and call it a day?

No way.


> Or approximately how many lines of x86 assembler and C
> code are required in addition to what SeaBIOS + libbluetooth
> already provide? Or is there some technical problem
> prohibiting this solution?

The latter. libbluetooth.so is a mere fraction of the software involved
in using BT on a Linux system. The majority exists in the Linux kernel
and uses lots of kernel infrastructure, so can not run standalone.


You very likely don't want to get into developing a BT stack, especially
not one running in a BIOS environment.

I strongly recommend to keep all BT parts of this project in separate
hardware outside of the x86 system and to choose/design that hardware
such that it's comfortable to use in your int 14h handler.

Since the apu board has two serial ports (one internal on a header)
its BIOS may already provide int 14h services for those ports, then you
could just connect a transparent BT UART and be done, no software needed
at all for that.


//Peter
_______________________________________________
SeaBIOS mailing list -- seabios@seabios.org
To unsubscribe send an email to seabios-le...@seabios.org

Reply via email to