Changes between Version 63 and Version 64 of boot_procedure


Ignore:
Timestamp:
Nov 7, 2019, 8:24:49 PM (3 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • boot_procedure

    v63 v64  
    6060We describe below the four phases of the TSAR boot-loader:
    6161
    62 === B1. Pre-loader phase ===
     62=== B1. Pre-loader ===
    6363
    6464 * In the TSAR_LETI architecture, the pre-loader code is stored in the first 16 kbytes of the physical address space in cluster 0.
    6565 * In the TSAR_IOB architecture, the preloader is stored in an external ROM, that is accessed throug the IO_bridge located in cluster 0.
    6666
    67 At reset, the MMU is de-activated (for both data and instructions), and the extension address registers supporting direct access to remote memory banks (for data only)  contain the 0 value.
     67At reset, the MMU is de-activated (for both data and instructions), and the extension address register supporting direct access to remote memory banks (for data only)  contain the 0 value.
    6868Therefore, all cores can only access the physical address space of cluster 0.
    6969
     
    7272   * All other cores do only one task before going to sleep (i.e. low-power state): each core activates its private WTI channel in the local ICU (Interrupt Controller Unit) to be later activated by an IPI (Inter Processor Interrupt). 
    7373
    74 === B2. Boot-loader sequencial phase ===
     74=== B2. Boot-loader entry ===
     75
     76The first instructions of the boot-loader are defined in the ''boot_entry.S'' file. This assembly code is executed by all cores entering the boot-loader, but not at the same time.
     77
     78Each core running this assembly code makes the 3 following actions:
     79   * It initializes the core stack pointer depending on the '''lid''' value extracted from the '''gid''', using the BOOT_STACK_BASE and BOOT_STACK_SIZE parameters defined in the  ''boot_config.h'' file,                                                                   
     80   * It changes the value of the DATA address extension CP2 register, using the '''cxy''' value extracted from the '''gid''', to force each core to access its stack in local physical memory.                                                                       
     81   * It jumps to the boot_loader() C function defined in the ''boot.c'' file, passing the two (cxy , lid) arguments.
     82
     83=== B3. Boot-loader sequencial phase ===
    7584
    7685In this phase, only core [0][0] is running, while all other cores are blocked in the preloader, waiting to be activated by an IPI.
     
    92101   * The core[0][0] send IPIs to activate all cores [cxy][0] in all other clusters.
    93102   
    94 === B3. Boot-loader partially parallel phase ===
     103=== B4. Boot-loader partially parallel phase ===
    95104
    96105In this phase all core[cxy][0], other than the core[0][0] are running.
     
    107116    * In each cluster cxy, the core[cxy][0] activates the other cores that are  blocked in the pre-loader.
    108117
    109 === B4. Boot-loader fully parallel phase ===
     118=== B5. Boot-loader fully parallel phase ===
    110119
    111120In this phase all core[cxy][lid] are running.