Version 2 (modified by 10 years ago) (diff) | ,
---|
GIET_VM / Boot-Loader
The GIET-VM boot-loader is defined in the boot.c file.
The boot_init() function makes the initialisation in two steps:
Sequencial step
The first step executed by proc[0][0][0], while other processors are in wait state.
void boot_pmem_init()
This function makes the physical memory allocators initialisation. The GIET VM uses two types of pages:
- BPP : Big Physical Page (2 Mbytes).
- SPP : Small Physical Page (4 Kbytes).
There is one SPP and one BPP allocator per cluster containing a physical memory bank. All the physical memory allocation is done by the boot-loader
void boot_ptabs_init()
This function makes the page table initialisation. There is one page table per user application (vspace) defined in the mapping. All these
- Proc[0][0][0] MMU activation
- Private vobjs initialisation : boot_vobjs_init()
- Schedulers initialisation : boot_schedulers init()
- Peripherals initialisation : boot_peripherals_init()
- Kernel & application code loading : boot_elf_load()
- Start all other processors
Parallel step
The second step is executed in parallel by all processors:
- CP0_SCHED register initialisation
- MMU Activation
- Status Register Initialisation (to use the GIET_VM exception handler).
- Jump to kernel_init()