-
Notifications
You must be signed in to change notification settings - Fork 32
/
README
233 lines (159 loc) · 7.26 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
This project is to port Xinu to the ARM Versatile baseboard. The ARM Versatile
baseboard has the following devices:
- ARM926E, ARM1136 or Cortex-A8 CPU
- PL190 Vectored Interrupt Controller
- Four PL011 UARTs
- SMC 91c111 Ethernet adapter
- PL110 LCD controller
- PL050 KMI with PS/2 keyboard and mouse.
- PCI host bridge.
- PCI OHCI USB controller.
- LSI53C895A PCI SCSI Host Bus Adapter with hard disk and CD-ROM devices.
- PL181 MultiMedia Card Interface with SD card.
This image can be run with the following command:
qemu-system-arm -M versatilepb -m 128M -nographic -cpu arm926 -kernel xinu.bin -s
-----------------------
README: information about the directory tree and how to build an image.
Embedded Xinu, Copyright (C) 2008, 2009, 2010, 2012. All rights reserved.
$Id: README 2157 2010-01-19 00:40:07Z brylow $
----
Embedded Xinu
Version: 2.10
1. What is Embedded Xinu?
2. Directory Structure
3. Prerequisites
4. Installation Instructions
4.1 Build Embedded Xinu
4.2 Make serial and network connections
4.3 Enter Common Firmware Environment prompt
4.4 Set IP address
4.5 Load image over TFTP
4. Links
-------------------------
1. What is Embedded Xinu?
-------------------------
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 Arm processors and is suitable on running on inexpensive development
Arm platforms, such as the Raspberry-pi. It is suitable for courses and
research in the areas of Operating Systems, Hardware Systems, Embedded
Systems, Networking, and Compilers.
----------------------
2. Directory Structure
----------------------
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 library
LICENSE 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`).
----------------------------
3. Prerequisites
----------------------------
3.1 Supported platform with hardware modification
--------------------------------------------------
To run Embedded Xinu you need a supported device or virtual machine.
Currently, Embedded Xinu supports Linksys WRT54GL, Linksys WRT160NL,
and the Qemu-mipsel virtual machine for the MIPS target, and is
currently being build to run on arm-1176 processors for running on a
Raspberry-pi, and Qemu-arm-1176 virtual machine For an updated list
of supported platforms, visit:
http://xinu.mscs.mu.edu/List_of_supported_platforms
If you are targetting the MIPS platform, and wish to run on a Linksys
target, you 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
3.2 Cross-compiler
------------------
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
Update for Arm
3.3 Serial communication software
---------------------------------
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
3.4 TFTP server software
------------------------
A TFTP server will provide the router with the ability to download and run
the compiled Embedded Xinu image.
----------------------------
4. Installation Instructions
----------------------------
4.1 Build Embedded Xinu
-----------------------
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.
4.2 Make serial and network connections
---------------------------------------
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:
- 8 data bits, no parity bit, and 1 stop bit (8N1)
- 115200 bps
4.3 Enter Common Firmware Environment prompt
--------------------------------------------
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.
4.4 Set IP address
------------------
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
4.5 Load image over TFTP
------------------------
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!
--------
4. Links
--------
The Embedded Xinu Wiki
----------------------
The home of the Embedded Xinu project
http://xinu.mscs.mu.edu/
Dr. Brylow's Embedded Xinu Lab Infrastructure Page
--------------------------------------------------
More information about the Embedded Xinu Lab at Marquette University
http://www.mscs.mu.edu/~brylow/xinu/