I've been on this mailing list for about a year, and very little movement has occurred during that time.
Since there is still interest in this project, I would like to start collecting patches against OpenBIOS 0.0.2-pre1, hopefully leading up to a new [unofficial] release.
I am currently working on getting the Intel 430TX (Triton I) low-end Pentium chipset working with OpenBIOS. My goal is to be able to boot either an MS-DOS or Linux OS, just like a regular BIOS.
After that, I will probably tackle the Intel 430FX chipset, or a newer Via-based chipset like the VT82C686A.
So if you have patched to OpenBIOS, please "diff" them against the current release on the Web site, 0.0.2-pre1, and post them to the mailing list. (or e-mail directly me to if the patches are large)
I will integrate all these patches and roll a new tarball, probably sometime around Valentine's Day (Feb 14th).
Input, comments, and/or patches are greatly appreciated! I think OpenBIOS is a great project, especially for all the older PCs out there with no BIOS updates since 1995 or so....
Jeff
On Wed, Jan 19, 2000 at 02:47:38AM -0500, Jeff Garzik wrote:
I've been on this mailing list for about a year, and very little movement has occurred during that time.
Since there is still interest in this project, I would like to start collecting patches against OpenBIOS 0.0.2-pre1, hopefully leading up to a new [unofficial] release.
I am currently working on getting the Intel 430TX (Triton I) low-end Pentium chipset working with OpenBIOS. My goal is to be able to boot either an MS-DOS or Linux OS, just like a regular BIOS.
After that, I will probably tackle the Intel 430FX chipset, or a newer Via-based chipset like the VT82C686A.
So if you have patched to OpenBIOS, please "diff" them against the current release on the Web site, 0.0.2-pre1, and post them to the mailing list. (or e-mail directly me to if the patches are large)
I will integrate all these patches and roll a new tarball, probably sometime around Valentine's Day (Feb 14th).
Input, comments, and/or patches are greatly appreciated! I think OpenBIOS is a great project, especially for all the older PCs out there with no BIOS updates since 1995 or so....
Hi Jeff !
I absolutely agree. Unfortunately I have no experience with programming Bioses whatsoever, but I'm very interested to learn more about this. I do have all kinds of Pentium-based Mainboards. Could you give me some hints on where to start looking into this topic ? Is there any kind of HOWTO or any introductory material freely available?
Thanks in advance !
Jens.
- To unsubscribe: send mail to majordomo@freiburg.linux.de with 'unsubscribe openbios' in the body of the message
Jens Dreger wrote:
I absolutely agree. Unfortunately I have no experience with programming Bioses whatsoever, but I'm very interested to learn more about this. I do have all kinds of Pentium-based Mainboards. Could you give me some hints on where to start looking into this topic ? Is there any kind of HOWTO or any introductory material freely available?
Jens,
If you have a bunch of main boards you are off to an excellent start. You need to find out what motherboard chipset is used on each mainboard you have. Sometimes all you have to do is look for the largest chipset on the motherboard that is not the CPU. Sometimes you will have to take the motherboard model, go to the OEM's website, and look up the motherboard chipset from there.
Once you have the motherboard chipset, you need to obtain the motherboard datasheet. This lists the registers on the mainboard which you will need to set in order to have OpenBIOS boot that motherboard.
After you know the chipset and have its datasheet, you can begin coding.
Your best reference is the existing source code in openbios/drivers/chipset. Newcomers often want a document instead of the source code, but don't worry... the source code is easy to read. You just have to take your time, and have an assembly language reference on hand. Following the logic -- motherboard initialization is actually really easy!
Since there are no real docs about this stuff, here is a short introduction. Please pass this along, or ask questions. Ask plenty of questions! We may not be able to respond in the same day, or even same week :), but you will get a response generally.
Talking to your motherboard --------------------------- Your motherboard's core logic chipset, also called a "northbridge", controls everything in the computer. It controls the CPU timings, RAM timings, cache timing and setup. Basically everything you see in your BIOS setup screen, and more.
Most modern PCI motherboards are controlled by setting up the PCI configuration registers. This makes things easy, because your motherboard code looks like this:
* module to read/write PCI configuration registers * chipset init module, which can be as simple as writing a list of constant values to the motherboard's PCI configuration registers * memory init module. You gotta figure out how obtain the amount of RAM and cache RAM installed on the motherboard.
Typically writing to the PCI configuration registers means sending a 8/16/32-bit value to a PIO port. (A PIO port is accessed like your printer data port, or serial data port...)
To make things even easier, you can write a small program to read your motherboard's current PCI configuration. For testing and initial setup, you can simply plug these values straight into the chipset init code (the "register value table").
Memory sizing ------------- This is probably the most difficult part of adding motherboard chipset support to OpenBIOS. The standard method of finding out the amount of memory installed is to write a value to a memory location, such as 0x1A1A2D2D, and then reading that value back. If the value read back is the same, and not 0 or 0xFFFFFFF or another bogus value, that memory is valid and addressable.
You might have to go to protected mode to size memory beyond 64MB in this manner.
Most chipsets provide a better way to size RAM. The Intel i430FX chipset, for example, provides a set of registers which allow you to determine the total memory installed in each DRAM bank. This makes memory sizing really easy.
Configuring the motherboard --------------------------- Motherboard chipsets, after power-on, are reset to a default state which is generally sane. It is your task to take the chipset from the power-on default state to the fully-initialized state. To do this you must configure DRAM setup, cache setup, and peripheral setup. Power management or other advanced features might need to be set up as well.
As mentioned above, the easiest way is to read your motherboard's existing configuration, and store that in an assembly language data table. This data represents a list of registers and register values which are written to the motherboard when it boots your BIOS. Be aware that you may need to play around with the ordering of the register settings, or simply omit some register settings, in order to get things working.
In general, you want to start out with the most conservative (ie. SLOWEST) settings for your cache, DRAM, etc. Be warned that your system will be very slow with all caching turned off. After you get things working, slowly begin to turn on and tune the motherboard configuration the way you want.
Configuring the peripherals --------------------------- In addition to the motherboard init code in openbios/drivers/chipset, there is the peripheral init code in openbios/drivers/superio.
Most modern motherboards contains built-in facilities for parallel ports, serial ports, and similar features. You need to initalize the super I/O chip. Look at the source code for the existing motherboard super I/O chipsets for guidance. The source code is always your best documentation. (don't forget to ask questions, though!)
It can be intimidating to add support for your motherboard to OpenBIOS, but it is really a straightforward task. The key is your motherboard's datasheet or specification. If you don't have that, you will be lost...
Post all questions to the OpenBIOS list please!
Mr. Garzik-
Your explanation on how to get started is what I have been looking for (even though I did not initially inquire). I would like to ask the list if someone could add to this mail some pointers on how to actually test the code changes that one makes (ie. flashing etc). I would like to help, but need a little more help in getting started.
Regards, James On Mon, 24 Jan 2000, Jeff Garzik wrote:
Date: Mon, 24 Jan 2000 10:43:11 -0500 From: Jeff Garzik jgarzik@mandrakesoft.com Reply-To: openbios@elvis.informatik.uni-freiburg.de To: Jens Dreger jens.dreger@physik.fu-berlin.de Cc: openbios@elvis.informatik.uni-freiburg.de Subject: Re: [OpenBIOS] ANNOUNCE: Collecting OpenBIOS patches
Jens Dreger wrote:
I absolutely agree. Unfortunately I have no experience with programming Bioses whatsoever, but I'm very interested to learn more about this. I do have all kinds of Pentium-based Mainboards. Could you give me some hints on where to start looking into this topic ? Is there any kind of HOWTO or any introductory material freely available?
Jens,
If you have a bunch of main boards you are off to an excellent start. You need to find out what motherboard chipset is used on each mainboard you have. Sometimes all you have to do is look for the largest chipset on the motherboard that is not the CPU. Sometimes you will have to take the motherboard model, go to the OEM's website, and look up the motherboard chipset from there.
Once you have the motherboard chipset, you need to obtain the motherboard datasheet. This lists the registers on the mainboard which you will need to set in order to have OpenBIOS boot that motherboard.
After you know the chipset and have its datasheet, you can begin coding.
Your best reference is the existing source code in openbios/drivers/chipset. Newcomers often want a document instead of the source code, but don't worry... the source code is easy to read. You just have to take your time, and have an assembly language reference on hand. Following the logic -- motherboard initialization is actually really easy!
Since there are no real docs about this stuff, here is a short introduction. Please pass this along, or ask questions. Ask plenty of questions! We may not be able to respond in the same day, or even same week :), but you will get a response generally.
Talking to your motherboard
Your motherboard's core logic chipset, also called a "northbridge", controls everything in the computer. It controls the CPU timings, RAM timings, cache timing and setup. Basically everything you see in your BIOS setup screen, and more.
Most modern PCI motherboards are controlled by setting up the PCI configuration registers. This makes things easy, because your motherboard code looks like this:
- module to read/write PCI configuration registers
- chipset init module, which can be as simple as writing a list of
constant values to the motherboard's PCI configuration registers
- memory init module. You gotta figure out how obtain the amount of RAM
and cache RAM installed on the motherboard.
Typically writing to the PCI configuration registers means sending a 8/16/32-bit value to a PIO port. (A PIO port is accessed like your printer data port, or serial data port...)
To make things even easier, you can write a small program to read your motherboard's current PCI configuration. For testing and initial setup, you can simply plug these values straight into the chipset init code (the "register value table").
Memory sizing
This is probably the most difficult part of adding motherboard chipset support to OpenBIOS. The standard method of finding out the amount of memory installed is to write a value to a memory location, such as 0x1A1A2D2D, and then reading that value back. If the value read back is the same, and not 0 or 0xFFFFFFF or another bogus value, that memory is valid and addressable.
You might have to go to protected mode to size memory beyond 64MB in this manner.
Most chipsets provide a better way to size RAM. The Intel i430FX chipset, for example, provides a set of registers which allow you to determine the total memory installed in each DRAM bank. This makes memory sizing really easy.
Configuring the motherboard
Motherboard chipsets, after power-on, are reset to a default state which is generally sane. It is your task to take the chipset from the power-on default state to the fully-initialized state. To do this you must configure DRAM setup, cache setup, and peripheral setup. Power management or other advanced features might need to be set up as well.
As mentioned above, the easiest way is to read your motherboard's existing configuration, and store that in an assembly language data table. This data represents a list of registers and register values which are written to the motherboard when it boots your BIOS. Be aware that you may need to play around with the ordering of the register settings, or simply omit some register settings, in order to get things working.
In general, you want to start out with the most conservative (ie. SLOWEST) settings for your cache, DRAM, etc. Be warned that your system will be very slow with all caching turned off. After you get things working, slowly begin to turn on and tune the motherboard configuration the way you want.
Configuring the peripherals
In addition to the motherboard init code in openbios/drivers/chipset, there is the peripheral init code in openbios/drivers/superio.
Most modern motherboards contains built-in facilities for parallel ports, serial ports, and similar features. You need to initalize the super I/O chip. Look at the source code for the existing motherboard super I/O chipsets for guidance. The source code is always your best documentation. (don't forget to ask questions, though!)
It can be intimidating to add support for your motherboard to OpenBIOS, but it is really a straightforward task. The key is your motherboard's datasheet or specification. If you don't have that, you will be lost...
Post all questions to the OpenBIOS list please!
-- Jeff Garzik | Andre the Giant has a posse. Building 1024 | MandrakeSoft, Inc. |
To unsubscribe: send mail to majordomo@freiburg.linux.de with 'unsubscribe openbios' in the body of the message
- To unsubscribe: send mail to majordomo@freiburg.linux.de with 'unsubscribe openbios' in the body of the message
The PCI 2.2 spec describes the format of expansion ROMs found on expansion boards.
Does anybody have a dump program which will read an expansion ROM off the board, or at least dump the header of the expansion ROM?
I'm interested in finding out what's on the expansion ROM of my RTL-8139 ethernet card...
-----Ursprüngliche Nachricht----- Von: owner-openbios@elvis.informatik.uni-freiburg.de [mailto:owner-openbios@elvis.informatik.uni-freiburg.de]Im Auftrag von Jeff Garzik Gesendet: Mittwoch, 26. Januar 2000 20:51 An: openbios@elvis.informatik.uni-freiburg.de Cc: linux-pci@atrey.karlin.mff.cuni.cz Betreff: [OpenBIOS] ROM image parser available?
The PCI 2.2 spec describes the format of expansion ROMs found on expansion boards. Does anybody have a dump program which will read an expansion ROM off the board, or at least dump the header of the expansion ROM?
I'm interested in finding out what's on the expansion ROM of my RTL-8139 ethernet card...
This isn't a expansion ROM, this is an EEPROM for storing the configuration data and some extra things like MAC-Address. If you have a socket for a bootrom, then this is mapped to the expansion rom...
I've once written a program to change the mac-adress of 3c509-series cards from 3com :-)
-- Jeff Garzik | Andre the Giant has a posse. Building 1024 | MandrakeSoft, Inc. |
To unsubscribe: send mail to majordomo@freiburg.linux.de with 'unsubscribe openbios' in the body of the message
- To unsubscribe: send mail to majordomo@freiburg.linux.de with 'unsubscribe openbios' in the body of the message
On Thu, 27 Jan 2000, [iso-8859-1] Stephan M�ller wrote:
I'm interested in finding out what's on the expansion ROM of my RTL-8139 ethernet card...
This isn't a expansion ROM, this is an EEPROM for storing the configuration data and some extra things like MAC-Address. If you have a socket for a bootrom, then this is mapped to the expansion rom...
I know the difference between an expansion ROM and EEPROM -- and I am looking for something which deals with expansion ROMs. (thanks Tigran)
Regards,
Jeff
- To unsubscribe: send mail to majordomo@freiburg.linux.de with 'unsubscribe openbios' in the body of the message
On Wed, 26 Jan 2000, Jeff Garzik wrote:
The PCI 2.2 spec describes the format of expansion ROMs found on expansion boards. Does anybody have a dump program which will read an expansion ROM off the board, or at least dump the header of the expansion ROM? I'm interested in finding out what's on the expansion ROM of my RTL-8139 ethernet card...
I was working on a GTK based PCI exploring program, with various features for ROMS (Save to disk, extended analysis of known ROMs etc..) I'll finish it off sometime soon, but I'm a little busy with the next release of Powertweak right now..
regards,