wiki:TBR/BSP/Pc386

Pc386

Infobox BSP

BSP_name Pc386
Manufacturer Intel (processor) and various board manufacturers
image
caption
Board_URL
Architecture IA-32 (x86)
CPU_model x86 Unspecified
Monitor uBoot, uMon
Simulator Yes, VirtualBox?, QEMU, Bochs.
Aliases pc386
RAM RAM Unspecified
NVMEM Non-volatile Memory Unspecified
Serial Serial Ports Unspecified
NICs Network Interface Cards Unspecified
Other

The PC386 BSP is designed to support a wide variety of PC clones and supports "variants" for the most popular CPU models. The availablility of these variant builds makes it possible to build a BSP which is optimized for a particular CPU model. Currently, the following variants are available:

  • pc386 - i386DX class CPU with i387 FPU
  • pc386dx - i386DX class CPU without an FPU
  • pc486 - i486 class CPU with integrated FPU
  • pc586 - Pentium class CPU
  • pc586_sse - Pentium class CPU with SSE extensions
  • pc686 - Pentium II class CPU
  • pcp4 - Pentium IV class CPU
  • pck6 - AMD K6 CPU

More variants can be added to take advantage of GCC optimizations for newer CPUs or to take advantage of features in newer CPUs.

Instructions are available for using this BSP with the PC simulators VirtualBox?, QEMU? and Bochs. A QEMU RTEMS Tutorial is available.

Booting an RTEMS Application

For PC like hardware (pc386 BSP), the most succesfull way seems to be to use GRUB to boot RTEMS binaries. The instructions are available for booting directly from floppy/harddrive and also for PXE network boot using GRUB. See c/src/lib/libbsp/i386/pc386/HOWTO for more information.

Alternatively, you can boot from Dos using Luca Abeni's eXtender, available from http://freedos-32.sourceforge.net/downloads.php This enables you to run DOS diagnostics and utilities (such as chkdsk) before startup. To use eXtender, add the "x" command followed by your RTEMS image name to your autoexec.bat file. For example:

C:\>x smart.exe

Embedded PC Platforms

There are a wide variety of embedded PC platforms. Specific instructions are available for the following:

DIMMPC

DIMMPC is a single chip Embedded PC that is compiled with the pc386DX BSP as it has no math coprocessor. The DIMMPC comes with DR Caldera DOS pre-installed, so it is best to boot RTEMS using eXtender. DIMMPC has onboard cs8900 ethernet port. The drivers being used have been written by Cybertec Pty Ltd, and funded by Commonwealth Government through the Australia Council, its arts funding and advisory body.

Current Version tested is rtems-4.6.0pre5 and is extremely stable.

Bobcat

The Versalogic Bobcat is a PC-104 system with an Elan SC520 CPU which is comparable to a 133 Mhz 486/586. The NIC is an EtherExpress? Pro. Eric Norum? tested this PC-104 system with a serial console, while OAR's configuration had a graphics card.

Eric Norum? provided the following information in a series of email exchanges. Eric sent Joel Sherrill? the FBU.EXE and ROM image he used since OAR had a BobCat?. Both worked.

In order to get the Bobcat to boot via BOOTP/TFTP, you must perform the following steps. They may look pretty short, but Eric can assure you that there's a couple days work behind them.

  • Copy FBU.EXE and ROM image to MS-DOS bootable floppy. ROM image must be in a file name who's name begins with E' and extension is .BIN'.
  • Set Bobcat CMOS Advanced Configuration option to:
        E000h 64k page function      : BIOS ext
  • Boot from floppy and run:
        FBU E82559ER.BIN        (or whatever the ROM image file is named).

Serial Port as Console

If you are willing to set a define and recompile, any serial port can be forced to be the console rather than the video. By default, the video adapter will be used as the console. But if you configure with USE_COM1_AS_CONSOLE=1, then COM1 will default to the console. This feature was added to the BSP in Februrary 2006.

In addition, Eric Norum made a change that lets the BSP automatically fall back to using COM2: as a serial-line console (9600-8N1) if no video adapter is present. This allows the pc386 BSP to be used on conventional PCs with video adapters as well as with embedded PCs (PC-104) which have no video adapters. To make this change, add the '#define' line shown below (example based on rtems-ss-20030128/c/src/lib/libbsp/i386/pc386/console/console.c):

 rtems_termios_initialize ();

#define RTEMS_RUNTIME_CONSOLE_SELECT
#ifdef RTEMS_RUNTIME_CONSOLE_SELECT
 /*
  * If no video card, fall back to serial port console

Test Reports

{{Test Report |Version = CVS head |Date = 25 March 2011 |User = User:Richard Campbell? |Report = Successfully ran ticker and file I/O test on the WinSystems? board in the RTEMS Lab. }}

4.6 Branch

4.6.99.2: i810 board (PIII/EtherExpress 100 on board): Phillip Sorensen? tested with ticker and hello. Initial successful testing with EPICS.

4.6 branch (October 3 2005 -- 4.6.4 plus): qemu: Seems to work reasonably well. Using qemu on GNU/Linux Fedora Core 4, hello, ticker, netdemo, and httpd test ran. I ran some non-networking tests using the Qemu MS-Windows port. I backported [User:KarelGardas| Karel Gardas's]] timer driver from the CVS head and get what appear to be reasonable numbers from the tmtests if the units are in microseconds. This is with using a GRUB boot floppy. Reported by Joel Sherrill?.

CVS Head

CVS HEAD (September 1 2005): IBM T22 (PIII/Intel EtherExpress? 100): Karel Gardas? tested tm01.exe and netdemo.exe

CVS HEAD (September 1 2005): noname K6-2 (K6-2/3C905-TX-C): Karel Gardas? tested tm01.exe and netdemo.exe

CVS HEAD (September 1 2005: homebuild K8 (Winchester/Asus? A8V): Karel Gardas? tested tm01.exe

CVS HEAD (September 22 2005): qemu: When using gcc 3.3.5 RPMs, hello, ticker and some tmtests successfully ran. Reported by Joel Sherrill?.

CVS HEAD (September 22 2005): qemu: When using any gcc 4.0.x (4.0.1 RPMs or 4.0.2pre2), hello ran but ticker fails. Email thread is at http://www.rtems.com/ml/rtems-users/2005/september/msg00143.html. Reported by Joel Sherrill?.

CVS HEAD (July 18 2008): qemu: Still works fine. Network demos tested today. Even though, there are very infrequent updates on the status of this BSP, it is regularly tested. It is one of the BSPs used for automated testing of GCC and RTEMS.

Last modified on 11/08/18 at 22:05:35 Last modified on 11/08/18 22:05:35