Mips64 Architecture
© 2002-2003 University of New South Wales
page maintained by Carl van Schaik (cvansch@cse.unsw.edu.au)
Supported Kernels
The L4Ka::Pistachio kernel offers support for the Mips64 architecture.
See l4ka.org for more
information about L4Ka::Pistachio.
- The Mips64 port currently runs on four platforms:
- U4600 - The University of New South Wales' 64-bit experimentation hardware
- IDT R4700 - R4000 based, 64-bit big-endian
- OpenFuel Embedded Realtime Parallel Computing Node (erpcn01)
- IDT 79RC64574 - R5000 based, 64-bit little-endian
- Broadcom Sibyte SB1 (SMP support)
- BCM1250 dual SB-1 MIPS64 core, 64-bit big-endian
- Agenda VR3 PDA
- NEC VR4181 - R4000 based, 64-bit little-endian. Yes 64-bit!
Porting the Mips64 architecture to new platforms is fairly simple, the port to the Agenda VR3 was done in a day and a half :-)
The Mips64 kernel also works on the Sulima simulator.
Getting Started
This is a simple guide on how to get L4Ka::Pistachio compiled for Mips64
1. Get a recent copy of L4Ka::Pistachio
Either get a released version or download the latest public release from CVS.
See here for details
2. Setup a development environment
You will need a Mips64
GCC compiler. You can build a cross-compiler if you are using an
x86/other development machine. You will need at least a mips64-elf
version of binutils and gcc with C++ support.
Put the L4Ka::Pistachio sources in a development directory.eg: /home/dev/l4/pistachio
The useful directories are shown below:
| kernel/ | | L4 Kernel directory |
| kernel/src/ | | Kernel source code |
| kernel/src/api/v4/ | | Kernel generic API |
| kernel/src/glue/v4-xxx/ | | Architecuture API support |
| kernel/src/arch/xxx/ | | Architecuture specific code |
| kernel/include/ | | Kernel include headers |
| kernel/kdb/ | | Kernel debugger |
| user/ | | L4 User Libraries and Applications |
| user/include/ | | User code kernel interface headers |
| user/serv/ | | Example servers |
| user/apps/ | | Example applications |
| user/contib/elf-loader | | Bootloader for mips64/arm/alpha/sparc64 |
3. Compile the kernel
- change to the kernel source directory.
- # cd /home/dev/l4/pistachio/kernel
- generate a kernel build directory. (Remember to use the FULL path)
it is important to create a separate build directory. You can create
one or more for each architecture/platform
- # cd /home/dev/l4/pistachio/kernel
# make BUILDDIR=/home/dev/l4/build-mips64/kernel
- change to the compiler directory and run "make menuconfig"
- # make BUILDDIR=/home/dev/l4/build-mips64/kernel
- # cd /home/dev/l4/build-mips64/kernel
- # make menuconfig
- goto Hardware->Basic_Architecture and choose MIPS-64
- goto Hardware->Processor_Type and choose the CPU
you want to use
- next, choose the platform and set any Miscellaneous
you require
- goto the Kernel menu and you probably want to
Enable Debugging mode
- in the Debugger menu, enable the debugger
and enable all Trace Settings
- it is well advised to enable Kernel Debugger breakin
- Press 'x' to save your options
- If your compiler is not one of: "mips64-elf-gcc" or "mips64-linux-gcc", then you will
need to export "TOOLPREFIX" so the build process can find your compiler.
- eg: export TOOLPREFIX=mips64-l4-elf-
And remember to keep your compiler in the path
- If all goes well, you can simply run 'make'
4. Compile the user code
5. Boot
Many MIPS based platforms have a boot loader of some form. PMON is a common one, the example below
is for the U4600 which has PMON with network support.
- Copy the mips64-loader in the [contrib/elf-loader] directory of your user build tree to /tftpboot
- Make sure you have a tftp server running
- Set the PMON environment variables, ip_addr etc to the correct values
- type 'boot net'
The kernel should boot and run a basic test application
Alternatvely if you are using Sulima you can boot your
kernel with:
# /home/sulima/u4600 mips64-loader
A contribution to the L4 community from the
UNSW/NICTA team.
|