0
\$\begingroup\$

I have two perfectly good CPUs-one a Pentium m, the other a Pentium III-and they're just sitting in antistatic bags and bubble wrap doing nothing. I want to use them for SOMETHING, I know their pin-outs and stuff, but I don't know how to get them to do things. I want to make my own motherboard and make them behave like a microcontroller with them communicating with GPIO chips of some sort, but without the obvious loss in performance (since MCUs are slower than CPUs). Can anyone help me get a grasp of what I need to do? I also need the assembly language for both CPUs.

\$\endgroup\$

closed as too broad by Scott Seidman, Keelan, PeterJ, Leon Heller, Alfred Centauri Aug 30 '14 at 0:37

Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

  • \$\begingroup\$ These devices are not programmable. They execute code stored in external memory. \$\endgroup\$ – venny Aug 29 '14 at 23:32
  • \$\begingroup\$ You need to buy a motherboard, RAM, and storage. \$\endgroup\$ – Ignacio Vazquez-Abrams Aug 29 '14 at 23:34
  • \$\begingroup\$ Also debugging would be nowhere as easy as with ARMs. \$\endgroup\$ – venny Aug 29 '14 at 23:36
  • 1
    \$\begingroup\$ On regular computers, a DRAM controller was a part of motherboard chipset. Perhaps you could attach an SRAM directly. \$\endgroup\$ – venny Aug 29 '14 at 23:39
  • 1
    \$\begingroup\$ And use an MCU to initialize the SRAM. \$\endgroup\$ – venny Aug 29 '14 at 23:51
9
\$\begingroup\$

Basically:

  1. Get the datasheet, look at the pin mapping.
  2. Design a board with DIMM slots.
  3. Instead of a BIOs, use the northbridge/southbridge's SPI flash port and program an SPI flash unit.

This is far too broad of a question, and takes into account nothing of practical mobo design, such as how to route a fine-pitch BGA (if it isn't the CPU, it's the socket) over 6-8 layers with multiple different voltage levels, how to generate those voltage levels efficiently (for the love of God, not linear regulators) or how to make the connections actually work (traces for DRAM at high speed must be meandered and impedance-matched).

If you want to program a Pentium, buy an old scrap mobo off of eBay or some source and tell its BIOS to boot from the USB controller. Burn your stick with your code and you should be able to work with it. As far as the Pentium is concerned, it doesn't matter if you have a custom mobo or if you're using the BIOS to set its first program address. You don't need to know how it accesses memory because modern Pentiums contain SDRAM controllers which generate the timing and the bootwork for you.

If you're hellbent on making your own mobo, there are a few things you need to look into before hand. The first is BGA routing. For this, you can Google "FPGA board design" because FPGAs have many of the same power and routing considerations as modern CPUs. The second is PCIe routing, because I'm assuming you'll be wanting that - search "differential pair routing". Third thing is DRAM routing, because that is a lot of signals in not much space, much larger than PCIe.

If you need to know something about how the low-level hardware and software interacts with the BIOS to boot program code, go to OSDev and look at their Bare Bones tutorial. This is for a basic OS kernel but it will suffice to boot whatever you want should you have the patience to work through it all. Using these principles you can turn your quad-core i7 into an Arduino on 'roids.

To do GPIO you'd simply configure a routine to bus data into the USB controller that happens to be connected to a microcontroller configured to receive it. Or, you can design an FPGA PCIe card with 500 different I/O pins operating at 400MHz. One is more difficult than the other.

I had the patience to go through all of this because this is the kind of stuff I do for fun as well, but you need to take the time to really consider the idea rather than just coming on here and asking a question such as "how to I do this?"

Best of luck.

\$\endgroup\$
  • \$\begingroup\$ Thank you! This is very helpful! The only problem is I can't afford an i7. \$\endgroup\$ – Jaca Aug 30 '14 at 0:05
  • \$\begingroup\$ @Jaca I was just throwing that out there as an example. But ideally, the OSDev tuts will show you how to bootstrap your code at the low level. Sure, to do anything real meaningful you'll need to write libraries to interact with the peripheral hardware. But the same is true for any microcontroller. \$\endgroup\$ – ecfedele Aug 30 '14 at 0:07
  • \$\begingroup\$ Re " ... for the love of God, not linear regulators ...)" -> God does not differentiate. He loves even linear regulators. \$\endgroup\$ – Russell McMahon Aug 30 '14 at 10:21
  • \$\begingroup\$ @RussellMcMahon This is true, but God knows linear regulators should not be trying to find work in the CPU power supply department. \$\endgroup\$ – ecfedele Aug 30 '14 at 20:03

Not the answer you're looking for? Browse other questions tagged or ask your own question.