Operating System in PCI option ROM

Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
Post Reply
Pinczakko

Operating System in PCI option ROM

Post by Pinczakko »

I'm currently developing an OS in a PCI option ROM card using a 64K flash memory. I used the BEV as my method to boot the OS. My code currently working, but I still wonder how it is executed ? my code loads (probably relocates) itself into known RAM address at boot (after the BEV invoked by system BIOS) and get executed there (still in real mode). The thing that is still obscured is : How the code pointed to by the BEV (BEV 'partially' explained in PnP BIOS 1.0A spec) gets executed ? does system bios copies all of the code that reside in the option ROM to RAM prior to executing it ? As a hint: I discards all my option ROM codes during post, by setting the rom size to zero (offset 02h) prior to returning to system bios, and as far as I know the Expansion ROM Base Address register is disabled after POST by the system BIOS. Then how these confusing BEV booting method really works under the hood ? ???
User avatar
Pype.Clicker
Member
Member
Posts: 5964
Joined: Wed Oct 18, 2006 2:31 am
Location: In a galaxy, far, far away
Contact:

Re:Operating System in PCI option ROM

Post by Pype.Clicker »

all i can tell you is that the Bios rom itself is copied in RAM before the real operations start (because rom is sooo slooow to access :-/ )

what does "BEV" stands for, anyway ?
Pinczakko

Re:Operating System in PCI option ROM

Post by Pinczakko »

BEV stands for Bootstrap Entry Vector. It is a pointer to the OS code that will be invoked during int 19h to boot the OS from the PCI option ROM, another method is by using BCV (Boot Connection Vector), but I didn't use it since it's not recommended by PnP BIOS spec, besides it's a bit more complex to use :)
Post Reply