Embedded Xinu Operating System
An ongoing research project and educational operating system.
|
Embedded Xinu, Copyright (C) 2008, 2009, 2010, 2019. All rights reserved.
Version: 3.0
Xinu ("Xinu is not unix", a recursive acronym) is a UNIX-like operating system originally developed by Douglas Comer for instructional purposes at Purdue University in the 1980s.
Embedded Xinu is a reimplementation of the original Xinu operating system on the MIPS processor which is able to run on inexpensive wireless routers and is suitable for courses and research in the areas of Operating Systems, Hardware Systems, Embedded Systems, Networking, and Compilers.
Once you have downloaded and extracted the xinu tarball, you will see a basic directory structure:
AUTHORS device/ lib/ mem/ loader/ README system/ compile/ include/ LICENSE mailbox/ network/ shell/ test/
AUTHORS
a brief history of contributors to the Xinu operating system in it's varying iterations.compile/
contains the Makefile and other necessities for building the Xinu system once you have a cross-compiler.device/
contains directories with source for all device drivers in Xinu.include/
contains all the header files used by Xinu.lib/
contains library folders (e.g., libxc/
) with a Makefile and source for the libraryLICENSE
the license under which this project falls.loader/
contains assembly files and is where the bootloader will begin execution of O/S code.mailbox/
contains source for the mailbox message queuing system.mem/
contains source for page-based memory protection.network/
contains code for the TCP/IP networking stack.README
this document.RELEASE
release notes for the current version.shell/
contains the source for all Xinu shell related functions.system/
contains the source for all Xinu system functions such as the nulluser process (initialize.c
) as well as code to set up a C environment (startup.S
).test/
contains a number of testcases (which can be run using the shell command testsuite
).To run Embedded Xinu you need a supported router or virtual machine. Currently, Embedded Xinu supports Linksys WRT54GL, Linksys WRT160NL, and the Qemu-mipsel virtual machine. For an updated list of supported platforms, visit:
http://xinu.mscs.mu.edu/List_of_supported_platforms
In order to communicate with the router, you need to perform a hardware modification that will expose the serial port that exists on the PCB. For more information on this process, see:
http://xinu.mscs.mu.edu/Modify_the_Linksys_hardware
To build Embedded Xinu you will need a cross-compiler from your host computer's architecture to MIPSEL (little endian MIPS for the 54GL router) or MIPS (big endian for the 160NL router). Instructions on how to do this can be found here:
http://xinu.mscs.mu.edu/Build_Xinu#Cross-Compiler
Any serial communication software will do. The Xinu Console Tools include a program called tty-connect which can serve the purpose for a UNIX environment. More information about the Xinu Console Tools can be found at:
http://xinu.mscs.mu.edu/Console_Tools#Xinu_Console_Tools
A TFTP server will provide the router with the ability to download and run the compiled Embedded Xinu image.
Update the MIPS_ROOT
and MIPS_PREFIX
variables in compile/mipsVars to correctly point to the cross-compiler on your machine.
Then, from the compile directory, simply run make, which should leave you with a xinu.boot file. This is the binary image you need to transfer to your router for it to run Embedded Xinu. The default build is for the WRT54GL router; change the compile/Makefile PLATFORM
variable for other builds. See the compile/platforms directory for supported configurations.
After creating the xinu.boot
image you can connect the router's serial port to your computer and open up a connection using the following settings:
With the serial connection open, power on the router and immediately start sending breaks (Control-C) to the device, if your luck holds you will be greeted with a CFE prompt.
CFE>
If the router seems to start booting up, you can powercycle and try again.
By default, the router will have a static IP address of 192.168.1.1. If you need to set a different address for your network, run one of the following commands:
ifconfig eth0 -auto if you are using a DHCP server ifconfig eth0 -addr=*.*.*.* for a static IP address
On a computer that is network accessible from the router, start your TFTP server and place the xinu.boot image in the root directory that the server makes available.
Then, on the router type the command:
CFE> boot -elf [TFTP server IP]:xinu.boot
If all has gone correctly the router you will be greeted with the Xinu Shell (xsh$
), which means you are now running Embedded Xinu!
Platforms | Status | Comments |
---|---|---|
Linksys WRT54G v8 | Supported | Tested and running at the Embedded Xinu Lab. |
Linksys WRT54GL | Supported | This is our primary development platform, on which Xinu has been tested thoroughly. |
Linksys WRT54G v4 | Probably Supported | The v4 is apparently the version on which WRT54GL is based, and so although the Embedded Xinu Lab has not explicitly tested it, it probably works. |
Linksys WRT350N | Under Development | Currently the synchronous UART Driver works. |
Linksys WRT160NL | Supported | Newer model of router. Full O/S teaching core functioning, including wired network interface. |
mipsel-qemu | Supported | Full O/S teaching core functioning, network support in progress. |
Raspberry Pi | Under Development | Core operating system including wired networking is functional. Some new features are still being worked on, and the full documentation (e.g. for a laboratory setup) hasn't been completed yet. |
Raspberry Pi 3 | Under development | Work has been started remaking the low level systems to operate on the aarch64 architecture. |
Home of the most up to date documentation about new and upcoming projects.
http://embedded-xinu.readthedocs.io/en/latest/
The home of the Embedded Xinu project
More information about the Embedded Xinu Lab at Marquette University