Contents 3.1 Overview 3.2 Configuration parameters 3.3 Architecture specific actions
3.1 Overview [up]
Bootloader is the first part of WrmOS witch is executed on target CPU. The following actions must be done by bootloader:
- first system initialization;
- load kernel.elf, sigma0.elf and roottask.elf from RAMFS to memory;
- add information about sigma0.elf and roottask.elf to KIP memory descriptors;
- go to kernel.
3.2 Configuration parameters [up]
Bootloader has the next configuration parameters:
Name | Location | Description |
---|---|---|
usr_ldr_dbg | cfg/prj/<project-name>.prj | Bootloader debug flag. My be 0 or 1. It allows to use debug configuration with asserts, additional debug outputs and other (for 1) or use release configuration (for 0). |
ldr_uart_paddr | cfg/plt/<platform-name>.prj | Bootloader UART physical address. |
ldr_uart_bitrate | Bootloader UART bitrate. |
3.3 Architecture specific actions [up]
First system initialization is differ for each CPU architecture.
SPARC
- Initialize trap table.
- Setup stack.
- Go to main() function.
ARM
- Setup stack.
- Go to main() function.
x86
- Execute boot0:
- initialize segment registers
- setup stack
- load boot1 from disk to RAM
- switch to protected mode
- go to boot1
- Execute boot1:
- load whole image from disk to RAM
- go to main() function
x86_64
- Execute boot0:
- initialize segment registers
- setup stack
- load boot1 from disk to RAM
- switch to protected mode
- go to boot1
- Execute boot1:
- set up 1:1 mapping
- switch to long mode
- load whole image from disk to RAM
- go to main() function