Electronic – Resources for IBM PC compatible motherboard / Intel 80486 development

computer-architecturecomputerslinuxmicroprocessor

I'm trying to find some resources on designing motherboards, but there doesn't seem to be much out there. I'm also looking for information about interfacing with an Intel 80486. I mostly understand the datasheet of the Intel 80486, and I'm already familiar with x86 asm and the x86 architecture, but there isn't much out there (that I could find) in terms of a high level initialisation / execution overview. I'm also not sure whether a full-blown BIOS is a requirement, or whether I could cheat my way out of using one (i.e. replace it with an AVR microcontroller or similar).

My end goal is to build something that runs DSL. What I'm aiming for isn't a full extensible board with PCI/ISA slots and USB support, but rather a complete bare-bones board that will run the OS. I'd be going for the absolute minimum requirements – CPU, RAM, basic GPU, IDE controller, PS/2 interface.

I'm aware that this is a hugely ambitious project, and will probably end up taking me several years, but it's something I've got a lot of interest in.

Any good resources for this level of stuff? Surely the guys who design modern motherboards must learn it from somewhere!

Update:
I'm not trying to come across as conflictory here, but I just want to take a second to pre-empt the nay-sayers. I fully understand how complex and insane this project is. I get that I can't just breadboard this stuff up – it takes a lot of time and money to do it at all, let alone do it right. I know there are a multitude of issues that make this kind of circuitry difficult to deal with – high frequency, high current, low noise requirements, tight tollerance requirements, high pin/trace density, lack of datasheets, proprietary requirements, etc. I'm still dedicated/insane enough to give it a go. I'm not asking you to explain how to do it, I'm just asking for some links to websites or books that deal with this kind of thing. I'd be extremely grateful for any useful information I can get.

Best Answer

You basically have two options here:

  • A current-generation 486-based CPU
    • Upside:
      • Everything will likely be integrated into the main CPU - No southbridge, IO controllers, etc...
      • you can actually buy the ICs off the shelf.
    • Downside:
      • Devices may be BGA
      • few exposed busses
      • may want to run at a few hundred Mhz.
    • By "Currently Produced", I mean something like a AMD Geode, or similar device from VIA, etc... There is a pretty big market for small, low power, low speed x86 CPUs in embedded applications.
  • A old-stock or old-design 386/486 CPU
    • Upside:
      • Probably more educational
    • Downsides:
      • Requires a LOT of devices (e.g. Southbridge, a UART, etc...), all of which are additional ICs.
      • Note: the external devices will vary depending on which 386/486 you decide on. The early ones had few integrated peripherals. Later on, many of the peripherals got integrated into the CPU itself.

There are some midpoint-devices, like the 386EX, which is a 386 intended for embedded applications. It's old enough that it's available in TQFP-144 (released in 1994), yet it includes most of the necessary peripherals on-die.
Datasheet


Some resources, off the top of my head:

CoreBoot:

A FOSS BIOS alternative.

Interesting forum thread about building a IBM XT compatible computer.


Other stuff:

Dieter's Homepage
Some nutjob who build a discrete Transistor CPU!
He also has a bunch of other homemade CPU projects


Really, If I were you, I would go with an ARM device. You can get big ARM CPUs that have MMUs, and will run linux fine.

Alternatively, an 8088 or 8086 may be significantly more approachable. There is lots of information about people homebrewing 8088 computers out there.