Subversion Repositories HelenOS-doc

Rev

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

Rev 32 Rev 33
Line 103... Line 103...
103
\begin{description}
103
\begin{description}
104
\item [Chora] is a part of the Horde framework and can be used to comfortably
104
\item [Chora] is a part of the Horde framework and can be used to comfortably
105
browse Subversion repository from the web. We altered it a little bit to also
105
browse Subversion repository from the web. We altered it a little bit to also
106
show number of commits per developer on our homepage.
106
show number of commits per developer on our homepage.
107
 
107
 
108
\item [WHUPS] is another component of the Horde framework. It provides
108
\item [Whups] is another component of the Horde framework. It provides
109
feature request and bug tracking features. However, in the light of being rather
109
feature request and bug tracking features. However, in the light of being rather
110
closed group of people, we used this tool only seldomly. On the other hand,
110
closed group of people, we used this tool only seldomly. On the other hand,
111
any possible beta tester of our operating system has had a chance to
111
any possible beta tester of our operating system has had a chance to
112
submit bug reports.
112
submit bug reports.
113
 
113
 
Line 161... Line 161...
161
\section{Virtual environments}
161
\section{Virtual environments}
162
After the build tools, simulators, emulators and virtualizers were the second focal point
162
After the build tools, simulators, emulators and virtualizers were the second focal point
163
in our project. These invaluable programs really sped the code-compile-test cycle.
163
in our project. These invaluable programs really sped the code-compile-test cycle.
164
In some cases, they were, and still are, the only option to actually run HelenOS on certain
164
In some cases, they were, and still are, the only option to actually run HelenOS on certain
165
processor architectures, because real hardware was not available to us. Using virtual environment
165
processor architectures, because real hardware was not available to us. Using virtual environment
166
for developing our system provided us with deterministic environment on wich it is much easier to do
166
for developing our system provided us with deterministic environment on which it is much easier to do
167
troubleshooting. Moreover, part of the simulators featured integrated debugging facilities.
167
troubleshooting. Moreover, part of the simulators featured integrated debugging facilities.
168
Without them, a lot of bugs would remain unresolved or even go unnoticed.
168
Without them, a lot of bugs would remain unresolved or even go unnoticed.
169
 
169
 
170
From one point of view, we have tested our system on eight different virtual environments:
170
From one point of view, we have tested our system on eight different virtual environments:
171
 
171
 
Line 192... Line 192...
192
portable, compared to much faster virtualizers and emulators using dynamic translation
192
portable, compared to much faster virtualizers and emulators using dynamic translation
193
of instructions. Lately, there have been some plans to develop or port dynamic translation
193
of instructions. Lately, there have been some plans to develop or port dynamic translation
194
to Bochs brewing in its developer community.
194
to Bochs brewing in its developer community.
195
 
195
 
196
The biggest virtue of Bochs is that it has traditionally supported SMP. For some time, Bochs
196
The biggest virtue of Bochs is that it has traditionally supported SMP. For some time, Bochs
197
has been our only environment on wich we could develop and test SMP code. Unfortunatelly,
197
has been our only environment on which we could develop and test SMP code. Unfortunatelly,
198
the quality of SMP support in Bochs was different from version to version. Because of SMP
198
the quality of SMP support in Bochs was different from version to version. Because of SMP
199
breakage in Bochs, we had to avoid some versions thereof. So far, Bochs versions 2.2.1 and 2.2.6
199
breakage in Bochs, we had to avoid some versions thereof. So far, Bochs versions 2.2.1 and 2.2.6
200
have been best in this regard.
200
have been best in this regard.
201
 
201
 
202
Our project has not only used Bochs. We also helped to identify some SMP related problems
202
Our project has not only used Bochs. We also helped to identify some SMP related problems
Line 228... Line 228...
228
Curiously, this simulator contained the biggest number of defects and inaccuracies
228
Curiously, this simulator contained the biggest number of defects and inaccuracies
229
that we have ever discovered in a simulator.  Fortunately, all of them have been
229
that we have ever discovered in a simulator.  Fortunately, all of them have been
230
eventually fixed.
230
eventually fixed.
231
 
231
 
232
\subsection{PearPC}
232
\subsection{PearPC}
233
PearPC is the only emulator on wich we have run ppc32 port of HelenOS. It has
233
PearPC is the only emulator on which we have run ppc32 port of HelenOS. It has
234
no debugging features, but fortunatelly its sources are available under
234
no debugging features, but fortunatelly its sources are available under
235
an open source license. This enabled {\OP} and {\MD} to alter its sources
235
an open source license. This enabled {\OP} and {\MD} to alter its sources
236
in a way that this modified version allowed some basic debugging.
236
in a way that this modified version allowed some basic debugging.
237
 
237
 
238
\subsection{QEMU}
238
\subsection{QEMU}
Line 244... Line 244...
244
This emulator seemed to realistically emulate the {\tt hlt} instruction,
244
This emulator seemed to realistically emulate the {\tt hlt} instruction,
245
which was nice for those of us who use notebooks as their development
245
which was nice for those of us who use notebooks as their development
246
machine.
246
machine.
247
 
247
 
248
\subsection{Simics}
248
\subsection{Simics}
249
Simics simulator can be compared to a Swiss-army knife for operating system debugging.
249
Virtutech's Simics simulator can be compared to a Swiss-army knife for operating system debugging.
250
This proprietary piece of software was available to us under an academic license for free.
250
This proprietary piece of software was available to us under an academic license for free.
251
 
251
 
252
Simics can be set to simulate many different configurations of many different machines.
252
Simics can be set to simulate many different configurations of many different machines.
253
It has the most advanced debugging features we have ever seen. To highlight some, its
253
It has the most advanced debugging features we have ever seen. To highlight some, its
254
memory access tracing ability has been really helpfull to us. During device driver
254
memory access tracing ability has been really helpfull to us. During device driver
Line 262... Line 262...
262
during application processors start. Another bugs found were related to amd64 and mips32.
262
during application processors start. Another bugs found were related to amd64 and mips32.
263
As for amd64, Simics did not report general protection fault when {\tt EFER.NXE} was 0 and a non-executable
263
As for amd64, Simics did not report general protection fault when {\tt EFER.NXE} was 0 and a non-executable
264
page was found (\#4214). As for mips32, Simics misemulated {\tt MSUB} and {\tt MSUBU} instructions.
264
page was found (\#4214). As for mips32, Simics misemulated {\tt MSUB} and {\tt MSUBU} instructions.
265
 
265
 
266
\subsection{Ski}
266
\subsection{Ski}
-
 
267
The ia64 port of HelenOS has been developed and debugged on the HP's IA-64 Ski simulator.
-
 
268
Ski is just an Itanium processor simulator and as such does not simulate a real machine. In fact, there
-
 
269
is no firmware and no configuration tables (e.g. memory map) present in Ski! On the other hand, the missing parts can be supplied externally\footnote{This
-
 
270
is actually how Linux runs in this simulator.}. The simulator provides means of interaction with
-
 
271
host system devices via Simulator SystemCalls (SSC). The simulator itself has graphical interface
-
 
272
with pretty powerful, but not as good as those of Simics, debugging facilities.
-
 
273
 
-
 
274
Ski is a proprietary program with no source code available. Its binaries are available
-
 
275
for free under a non-free license. It comes packaged with insufficient documentation
-
 
276
which makes the development pretty problematic. For instance, there is no public documentation
-
 
277
of all the SSC's. All one can do is to look into Linux/ia64-Ski port, which was written by the
-
 
278
same people as Ski, and use it as a refernce. We had to look into Linux once more when our kernel
-
 
279
started to fail in some memory-intensive stress tests. In fact, the problem was that the tests
-
 
280
hit the IA-32 legacy videoram area. We fixed the problem, in the light of absence of any memory map, by blacklisting
-
 
281
this piece of memory to our frame allocator.
-
 
282
 
-
 
283
The way HelenOS is booted on Ski is by simply loading its ELF image
-
 
284
and jumping to it. The ELF header contains two fields describing where and how to load the program image into memory:
-
 
285
VMA and LMA. VMA\footnote{Virtual Memory Address} is an address where the program's segment gets mapped in virtual memory.
-
 
286
LMA\footnote{Load Memory Address} is the physical address where the segment is loaded in memory. {\JV} discovered
-
 
287
that Ski confuses VMA and LMA. This, what we believe to be a bug in Ski, has not shown in Linux since Linux always has
-
 
288
LMA equal to VMA. People from the Ski mailing list had tried to help us but our repeated problem report didn't
-
 
289
make it far enough for the HP to fix or at least clarify the issue. Finally, we adopted a workaround implemented by {\JJ}
-
 
290
that simply swaps LMA and the program entry point in the kernel ELF image.
-
 
291
 
267
\subsection{VMware}
292
\subsection{VMware}
-
 
293
VMware is the only virtualizer we have used in HelenOS development. It virtualizes the ia32 host machine.
-
 
294
Since VMware version 5.5, we made use of its possibility to run the guest system (i.e. HelenOS) on multiple processors.
-
 
295
VMware has no support for debugging but is very useful for compatibility and regression testing because
-
 
296
it's closest to the real hardware. VMware, being a virtualizer, is also the fastest of all the virtual environments
-
 
297
we have utilized.
-
 
298
 
268
 
299
 
269
\section{Authoring tools}
300
\section{Authoring tools}