Linux for 680x0 based VME boards
Cold news
1st September 2000: Added a diff between Linus' 2.2.10 and a
fully patched Debian woody 2.2.10 tree.
22nd August 2000: Updated MVME147 install guide, as Nick Holgate has
built a proper Debian install package.
21st August 2000: Updated io.c with lots of new features.
28th July 2000: Significant updates relating to Debian 2.2 install
on MVME147 boards.
For those of you who havn't noticed yet,
Debian now includes support for MVME16x,
MVME17x, and BVM boards. This means you shouldn't normally need to download
things from here any more - kernel images, vmelilo, tftplilo, etc are all
available from Debian CDs or FTP sites.
The very first thing you should do is find
debian/dists/potato/main/disks-m68k/current/mvme16x/install.txt
on your local Debian mirror, and read it carefully.
The following might be of interest to some people.
I now work for Linuxcare,
so, if you have funding for Linux related
developments (ports to other CPU boards, drivers for I/O cards, etc),
please get in touch with me.
If you don't have funding, get in touch anyway - I'm still doing this stuff
for fun as well, and would like to expand the list of supported VME hardware.
For those with time to waste, you can find some pictures of me
here ;-)
Welcome to the home page for the Linux port for various 680x0 based VME boards.
Currently there are ports for Motorola boards (MVME147, MVME162, MVME166, MVME167, MVME172, MVME177),
BVM boards (BVME4000 and BVME6000), and the Tadpole TP34V. The BVM board is similar to an
MVME162; typical configuration for one of these boards is as follows:
- 68040 CPU (68060 on BVME6000)
- SCSI (NCR 53c710)
- Ethernet (Intel 82596)
- Two or four serial ports (CD2401, or 85230 on the MVME162 or BVMx000)
- NOVRAM
- Battery-backed clock
- Parallel port (not on the MVME162)
- Several timers
- Up to 64 Meg of DRAM
If you would like Linux to run on some other VME board, and can supply a
board and technical documentation, please get in touch. I am also available
through Linuxcare (my employer) to
undertake various developments - mail me if you are interested.
If you want to know a little more about these boards, you could try looking
under 'products' on the
Motorola support pages.
The BVM web site is
http://www.bvmltd.co.uk. BVM supplied me
with the BVME6000 card so that I could do the port, and
Nick Holgate at BVM has done some excellent work
on the VMELILO and TFTPLILO packages, which supports both BVM and Motorola boards.
Nick was also the driving force behind adding VME support to the Debian distribution.
My main development system is
a BVME6000 board with 32MB of DRAM, and a 3 GB disk.
Many MVME162 boards are fitted with a 68LC040 CPU, which does not have an
on-chip FPU. Most of the kernels available here include FPU emulation.
I used to use a port of the *BSD emulator, but that has been replaced
with a newly devloped emulator in 2.3 and ater kernels. Debian 2.2 kernels
also include that emulator.
I first started this port on a 0.99 kernel, and now support kernels from
2.0.xx. For 2.0.xx I supply four different kernel
images,
one each for the MVME147, MVME162, MVME166/MVME167 and the BVME4000/BVME6000.
Note though, that you should really use the Debian kernels these days (except
for MVME147, which Debian does not support).
For 2.2.xx I supply just one kernel image which, if correctly configured,
will boot on any of the supported boards (seperate kernel for the
MVME147, at the moment).
If you install linux on a VME board today you should use a current Debian 2.x
Linux distribution. For the MVME147 you should use the install package
Nick Holgate created, as detailed in the appropriate README below.
The port was heavily based on the Linux port for the Atari and Amiga
machines, and probably would never have happened without such a good base
to start from - thanks guys.
Files specific to the Tadpole TP34V port are available
here.
Files for the other ports available are:
- General introdcution
- A README on configuring MVME16x boards
- A README on installing and configuring the Debian filesystem - this includes instructions on using the ramdisk
- A README for the 16xcfg utility
- A README specific to MVME147 board installation of Debian 2.2
- The kernels - the tgz packages contains a kernel image, the config
options used to create it, and the System.map linker output.
- Kernel patches.
- 2.2.10 kernel patches are all integrated in to the Debian
kernel-patch package; look on your local Debian mirror for
debian/dists/woody/main/binary-m68k/devel/kernel-patch-2.2.10-m68k*.deb.
As of 1st September 2000, a diff of linus' 2.2.10 tree against a Debian tree
with the woody patches applied can be found
here.
- Kernel patches used to produce the above
2.0.33pl1b kernels.
These patches should be applied to a linux-m68k 2.0.33pl1
source tree, which you can probably find
here.
- Kernel patches used to produce the
above 2.0.33pl1e kernel for the MVME147 board.
These patches should be applied to a linux-m68k 2.0.33pl1
source tree, which you can probably find
here.
- Source for the 16xcfg kernel configuration utility,
with supporting files (loader.bin and various example configs). This is needed
whichever kernel you intend to use. This is the new version 5 16xcfg.
If you have problems you could try the previous version (see old stuff below).
- Source of loader.bin; loader.bin itself is used
by 16xcfg when configuring a kernel, and is included in the 16xcfg package.
You probably don't need this file.
- Source of sboot; sboot is a small code
module for MVME147 boards which lets you use TFTP to load files via the
network interface. This code is a modified version of Net/OpenBSD code.
- srecs.c, a small C program to convert binaries to Motorola s-record format.
- io.c, a simple ultility that lets you access physical
memory space (including VME space) from a shell prompt. It allows you to
display memory contents, modify locations, and transfer large blocks of data between
physical memory and local files.
- vmeirq.tgz (for MVME boards) and
bvmeirq-21124.tgz (for BVME boards)
I have done some work on a loadable kernel module which gives you access to
VMEBUS interrupts from a user program. This was my first attempt, which uses
a scheme where user programs block on a read() call until an interrupt occurs.
This is currently only available for 2.1.xx kernels.
- vmesig.tgz (for 2.1.xx up to 2.1.115),
vmesig-21124.tgz (for 2.1.xx above 2.1.115),
and
vmesig-2029.tgz (for 2.0.xx)
This is an alternative kernel module giving user programs access to VMEbus
interrupts. On this one the user programs get interrupted via a signal when
a VMEbus interrupt occurs. This is probably the better driver, although
there is more protection against configuration errors in vmeirq.tgz.
This is currently only available for the Motorola boards.
- Debian 2.2 base file system
The base Debian file system should be found here (base2_2.tgz).
- Debian m68k binaries
can be found here.
Please note that many of these files
are compressed with gzip. If you just click the links under your
web browser, it may dump the (possibly uncompressed) files in your
browser window. Mosaic has a 'save to file' option, and for
Netscape you can use <shift>-<click> to get a 'save to file'
dialog box. You should also ensure that you do binary transfers
for these files. A few people have reported problems with apparently
corrupt gzip files. These 'problems' have always been found to be as
a result of an ascii transfer, converting LF to CR/LF.
Old stuff:
- Source for the previous version of the 16xcfg
kernel configuration utility,
with supporting files (loader.bin and various example configs). This
version was used up to and including my 2033pl1b and 2.1.124 kernels.
- Source of the previous version of loader.bin,
used by 16xcfg when configuring a kernel, and included in the 16xcfg package.
You probably don't need this file.
- A README specific to MVME147 board installation of older Debian releases
Other useful notes:
Nick Holgate has produced a version
of LILO for diskless systems called tftplilo.
This gives you all the facilities
of LILO, but using a configurtion file, kernels, ramdisk images, etc, on your
tftp server rather than on a local disk.
The European Synchrotron Radiation Facility
in Grenoble, France is using linux/m68k on MVME16x boards; look
here
for more details. They have a mail list for discussing the use of Linux in
embedded comtrollers
here,
and have made version 1.0.0 of the E.S.R.F.
OMS
VME-58/PC-68 device driver available on their FTP site,
here.
Other useful links:
- For those of you wanting to cross-compile, I found an x86-Linux to 68k-Linux
cross-compilers here:
- You can find manuals for the Motorola processors
here (although I cannot find the Programmers Reference Manual M68000PM/AD on-line), and manuals for
their VME boards
here (PDF),
here (HTML).
accesses since October 8th 1996
Please let me know if you make use of these ports.
Linux for 680x0 based VME boards
richard@sleepie.demon.co.uk