Changes between Version 39 and Version 40 of boot_procedure
- Timestamp:
- Jun 29, 2018, 4:47:46 PM (7 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
boot_procedure
v39 v40 73 73 In this second phase the work is entirely done by core[0][0]. 74 74 75 * The core[0][0] initializes the stack pointer. The boot stack size is a configuration parameter. Il initialise son pointeur de pile pour pouvoir exécuter du code C. La taille de cette pile temporaire est aussi un paramètre de configuration. Par défaut, le pointeur de pile du core CP0 de chaque cluster ('''lid''' = 0) est initialisé à l'adresse '''0x600000'''.76 * Le CP0 cu cluster (0,0) initialise 2 périphériques: '''TTY''' (canal 0) pour afficher les informations de débogage et '''IOC''' pour accéder aux fichiers sur disque.77 * Il charge ensuite, toujours en mémoire locale du cluster de boot, le fichier binaire '''arch_info.bin'''ainsi que l'image binaire du noyau d'ALMOS-MK, respectivement à l'adresse '''0x200000''' et '''0x400000''', juste au dessus du segment mémoire correspondant à l'image du boot-loader.75 * The core[0][0] initializes the stack pointer. The boot stack size is a configuration parameter. 76 * The core[0][0] initializes 2 peripherals: The '''TTY'''terminal (channel 0) to display log info, and the '''IOC''' to access the disk. 77 * loads in cluster 0 the '''arch_info.bin''' file and the ainsi que l'image binaire du noyau d'ALMOS-MK, respectivement à l'adresse '''0x200000''' et '''0x400000''', juste au dessus du segment mémoire correspondant à l'image du boot-loader. 78 78 * Il utilise les informations contenues dans la structure '''arch_info.bin''' pour initialiser les différents champs de la structure '''boot_info_t''' du cluster de boot. 79 * Il réveille les coeurs '''CP0''' de tous les autresclusters.80 * Il se met en attente jusqu'à ce que tous les autres '''CP0''' arrivent à ce point de rendez-vous en utilisant une barrière de synchronisation.81 82 Voici le contenu de la mémoire du cluster de boot et des autres clusters après cette deuxième étape.79 * The core [0][0] send IPIs to all cores [i][0] in other clusters. 80 81 All CP0 cores synchronize through a synchronisation barrier before entering the next phase. 82 This shows the memory content after this second phase. 83 83 [[Image(Phys_Mem2.svg)]] 84 84 85 === B3. Phase partiellement parallèle ===85 === B3. partially parallel phase === 86 86 87 87 Dans chaque cluster, le coeur '''CP0''', réveillé par le CP0 du cluster de boot, sort du preloader et exécute le code du boot-loader qui se trouve toujours stocké dans la mémoire physique du cluster(0,0), pour effectuer les tâches suivantes: … … 124 124 == D) __Generic kernel initialization procedure__ == 125 125 126 The kernel_init( boot_info_t * info ) function is the kernel entry point when the boot_loader transfer control to kernel.126 The kernel_init( boot_info_t * info ) function is the kernel entry point when the boot_loader transfer control to the kernel. 127 127 The ''info'' argument is a pointer on the fixed size boot_info_t structure, that is stored in the data kernel segment. 128 128