Changes between Version 24 and Version 25 of boot_loader


Ignore:
Timestamp:
Mar 31, 2015, 7:46:12 PM (10 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • boot_loader

    v24 v25  
    44
    55The boot procedure is done in three phases:
    6  * The generic ''reset'' code (hard-coded in the external ROM) is executed by processor P(0,0,0), and load the GIET_VM boot-loader code, stored in the ''boot.elf'' file, from the external disk to the physical memory.
    7  * The GIET_VM boot-loader is executed in parallel by all processors P(x,y,0): one processor per cluster. The bootloader loads the ''map.bin'' file, build the page tables, initializes the schedulers as specified in the mapping, initializes the peripherals, and load the kernel code, as well as the user application(s) code into memory.
     6 * The generic ''reset'' code (hard-coded in the external ROM) is executed by processor P(0,0,0), and load the GIET_VM boot-loader code.
     7 * The GIET_VM boot-loader is executed in parallel by all processors P(x,y,0): one processor per cluster. It loads the ''map.bin'' file, build the page tables, initializes the schedulers as specified in the mapping, and load the kernel code, the user application(s) code into memory.
    88 * Finally, the GIET_VM ''kernel_init()'' function is executed by all processors P(x,y,p), and completes the kernel initialization.
    99
     
    1111
    1212After hard reset, all processors execute the same ''reset'' code (also called ''preloader'' code) stored in the external ROM. The work done depends on the processor global index:
    13  * Processor P(0,0,0) load the GIET_VM boot-loader code from the external disk (or another bootable peripheral), to the physical memory bank in cluster(0,0): segments seg_boot_code and seg_boot_data.
     13 * Processor P(0,0,0) loads the GIET_VM boot-loader code from the external block device, to the physical memory bank in cluster(0,0). It load the two segments seg_boot_code and seg_boot_data from the ''boot.elf'' file that must be stored a (lba = 2) on the block device.
    1414 * All other processors initialize their private interrupt controller, to be able to receive an inter-processor interrupt (WTI), and enter ''wait_state'' in low-power mode.
    1515This ''reset'' code is generic, and can be used to boot any operating system. 
     
    5050 
    5151=== step 5 ===
    52 Finally, processor P(0,0,0) makes peripherals initialisation (function '''boot_peripherals_init()'''),  coprocessors initialisation, and load into memory the kernel code (''kernel.elf'' file), and the user code for all applications specified in the mapping (function '''boot_elf_load()''').
     52For each ''kernel.elf'' or ''application.elf'' file, processor P(0,0,0) load the binary file into the dedicated ''boot_elf_buffer' code, and all processors P(x,y,0) make the copies in the distributed physical memory banks, as specified in the mapping (function '''boot_elf_load()''').
    5353
    5454=== step 6 ===
     
    7777Each processor P(x,y,p) set registers SP, SR, PTPR, EPC, with the values corresponding to the first allocated task, and jump to user code.
    7878
    79