Subversion Repositories HelenOS-doc

Rev

Rev 124 | Rev 150 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 124 Rev 149
Line 40... Line 40...
40
 \item The kernel initializes and runs a previously hardwired
40
 \item The kernel initializes and runs a previously hardwired
41
       number of initial user space tasks.
41
       number of initial user space tasks.
42
\end{enumerate}
42
\end{enumerate}
43
 
43
 
44
The following sections describe the particual features of the
44
The following sections describe the particual features of the
45
boot loading process on the supported platforms.
45
boot loading process on the supported platforms. Sample
-
 
46
configuration files for all simulators are in the directory
-
 
47
{\em kernel/contrib/conf}.
46
 
48
 
47
\section{IA-32 and AMD64}
49
\section{IA-32 and AMD64}
48
 
50
 
49
On both platforms HelenOS depends on a boot loader which
51
On both platforms HelenOS depends on a boot loader which
50
supports the Multiboot Specification (i.e. GRUB). The kernel
52
supports the Multiboot Specification (i.e. GRUB). The kernel
51
image (usually called \texttt{image.bin}) is loaded by the
53
image (usually called \texttt{image.bin}) is loaded by the
52
boot loader just above the 1st megabyte of the physical
54
boot loader just above the 1st megabyte of the physical
53
memory (the exact location is 1081344 bytes).
-
 
54
55
memory (the exact location is 1081344 bytes). Modules loaded by
-
 
56
GRUB are automatically detected by the kernel and after initialization
-
 
57
they are started as userspace tasks. The GRUB loading is the
-
 
58
easiest in terms of using userspace tasks.
-
 
59
 
-
 
60
An example GRUB configuration file {\em menu.lst}:
-
 
61
\begin{verbatim}
-
 
62
title=HelenOS
-
 
63
root (cd)
-
 
64
kernel /boot/kernel.bin
-
 
65
module /boot/ns
-
 
66
module /boot/init
-
 
67
module /boot/pci
-
 
68
module /boot/fb
-
 
69
module /boot/kbd
-
 
70
module /boot/console
-
 
71
module /boot/tetris
-
 
72
module /boot/ipcc
-
 
73
module /boot/klog
-
 
74
\end{verbatim}
-
 
75
 
-
 
76
\section{32-bit MIPS}
-
 
77
The MIPS port is fully supported in the {\em msim} and {\em gxemul} simulators.
-
 
78
These simulators allow specifying a memory contents of the simulated
-
 
79
computer. Unfortunately, the autodetection of loaded modules does
-
 
80
not work. In order to change number of loaded modules, the file
-
 
81
kernel/arch/mips32/src/mips32.c must be modified.
-
 
82
 
-
 
83
Sample msim configuration file:
-
 
84
\begin{verbatim}
-
 
85
 add dcpu mips1
-
 
86
 
-
 
87
add rwm mainmem         0x0                     8M              load    "/dev/zero"
-
 
88
add rom startmem        0x1fc00000      1024k   load    "image.boot"
-
 
89
add rwm ns              0x01000000      1M      load    "../uspace/ns/ns"
-
 
90
add rwm kbd             0x01100000      1M      load    "../uspace/fb/fb"
-
 
91
add rwm fb              0x01200000      1M      load    "../uspace/kbd/kbd"
-
 
92
add rwm console         0x01300000      1M      load    "../uspace/console/console"
-
 
93
add rwm init            0x01400000      1M      load    "../uspace/init/init"
-
 
94
add rwm tetris          0x01500000      1M      load    "../uspace/tetris/tetris"
-
 
95
\end{verbatim}
-
 
96
 
-
 
97
Sample gxemul command line arguments
-
 
98
\begin{verbatim}
-
 
99
gxemul -E testmips -X 0x81800000:../uspace/ns/ns 0x81900000:../uspace/kbd/kbd 0x81a00000:../uspace/fb/fb 0x81b00000:../uspace/init/init 0x81c00000:../uspace/console/console 0x81d00000:../uspace/tetris/tetris kernel.bin
-
 
100
\end{verbatim}
-
 
101
 
-
 
102
The kernel can boot on the SGI Indy (and probably other SGI computers
-
 
103
with 32-bit ARC firmware). It uses ARC for output and input. When
-
 
104
the kernel is compiled to be loaded on the SGI Indy, an ECOFF image
-
 
105
is created which can be later loaded directly with ARC boot loader
-
 
106
e.g. using BOOTP protocol.
-
 
107
 
-
 
108
\section{IA64}
-
 
109
The IA64 port is supported on the ski simulator. The situation is very similar
-
 
110
to the MIPS loader - the loaded modules must be loaded on correct addresses in
-
 
111
the ski configuration file and specified in the file
-
 
112
kernel/arch/ia64/src/ia64.c.
-
 
113
 
-
 
114
Sample IA64 configuration file:
-
 
115
\begin{verbatim}
-
 
116
load kernel.bin
-
 
117
romload ../uspace/ns/ns 0x400000
-
 
118
romload ../uspace/init/init 0x800000
-
 
119
romload ../uspace/console/console 0xc00000
-
 
120
romload ../uspace/fb/fb 0x1000000
-
 
121
romload ../uspace/kbd/kbd 0x1400000
-
 
122
romload ../uspace/tetris/tetris 0x1800000
-
 
123
romload ../uspace/klog/klog 0x1c00000
-
 
124
romload ../uspace/ipcc/ipcc 0x2000000
-
 
125
\end{verbatim}
-
 
126
 
-
 
127
\section{Power PC}
-
 
128
The PowerPC boot image contains complete kernel with user tasks.
-
 
129
The loader build system automatically creates such image using information
-
 
130
residing in boot/arch/ppc32/loader/Makefile.inc. The variable COMPONENTS
-
 
131
specifies, which tasks will be loaded into the image.
-
 
132