University Project
Today I’ve started my University project on Telecommunication, it is more of the Computer Science field, but I’ll handle it under Telecommunication, there is no problem. I’ll be posting most of articles and code I produce in a reduced/sketch form, or at least I’ll try to do so. The whole project will be written in English, which is not my mother language, so if anyone finds it hard to understand, please give me some advice on how to make it clearer
To start with I’ve made a small outline of the parts of the project, and here it is:
Introduction: I’ll try to explain the scope of the projects, it’s goals, motivation and so on.
General Design : This will be divided into two logical sections, in the first one I’ll give some ideas about what is a kernel, classifications and available commercial kernels. The second part will talk about the target architecture (X86), why I’ve chosen it and future portability issues.
Working Environment #1 : Before every chapter, if necessary I’ll explain how to set up the computer to be able to follow the practical part of the project covered in the following chapter. All the programs I’ll be using will be open source and widely used, so I won’t have to cover them in depth, as much more accurate information is available on the net. This first environment will cover Nasm compiler, Bochs Emulator and Grub.
Source Tree : I’ll be also commenting where the sources can be found and how I structures the.
Boot Process : From POST until grub or our boot loader is run. This is the point to explain real, unreal, protected, VM86 modes. After we have the base to start building our own boot loader. When we are done with the boot loader, I have a look inside the Multiboot standard and will implement a small kernel (ASM) which works with Grub and being multiboot.
Working Environment #2: Now some more tools need to be installed, Gcc and it’s options, Ld and how to build a Cross Compiler, I have already tried it with Linux and MacOsX, now I need to do some research under Windows ( does anyone have a PC ? ).
First Kernel : Will implement two small kernels, which boot and print something on screen. A flat binary, which will boot with our bootloader and a an ELF binary which will boot with Grub. In this part I’ll cover ELF standard here, and finally I argue why not to continue with our bootloader and switch to Grub.
Memory: Segmentation, pagination, … This section also uses our bootloader to help clarify some concepts. This page also cover the initial memory design which will be two level pages. The first memory map will be drawn. And finally it will be implemented in the ELF Grub Kernel.
Interrupts and exceptions: Explain what are they, how they work and how we implement the basics on TizOs.
Driver Layout: The TizOs Driver Api is explained and implemented with some details on the basic peripherals and maybe some PCI ( if I have enough time).
MultiTask : Yet to determine of much I will explain, but I already have implemented some simple multitasking OS.
This first outline is just a little reference and If possible I won’t stop at multitasking, and will try to add more things.
This same document, a little more explained is available in Catalan.


