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} |