web-dev-qa-db-fra.com

quelle est l'utilisation de SPL (chargeur de programme secondaire)

Je suis confus en clarifiant mes concepts concernant ces trois questions

  1. pourquoi avons-nous besoin d'un chargeur de programme secondaire? 

  2. dans quelle mémoire est-il chargé et déplacé?

  3. quelle est la différence entre la mémoire interne du système et RAM?

pour autant que je sache via la lecture de liens is .. SPL est requis lorsque la mémoire interne du système ne peut pas contenir complètement uboot; nous devons donc initialiser la mémoire à l'aide d'un morceau de code minimal appelé SPL . Est-ce que SPL se déplace ou est-ce seulement uboot qui se rapporte?

15
theadnangondal

Laissez-moi l'expliquer en prenant OMAP plateforme à titre d'exemple (juste pour fournir un contexte réel plutôt que simplement de la théorie ou des connaissances communes). Regardez quelques faits pour commencer:

  • Sur les plates-formes OMAP, le premier programme exécuté après la mise sous tension est le code ROM (semblable au BIOS sur PC).
  • Le code ROM cherche le chargeur de démarrage (qui doit être un fichier nommé "MLO" et situé sur la première partition active de MMC, qui doit être au format FAT12/16/32, mais ce n'est pas plus détaillé)
  • Le code ROM copie le contenu de ce fichier "MLO" dans static RAM (car la RAM standard n’a pas encore été initialisée). La photo suivante montre la structure de la mémoire SRAM pour OMAP4460 SoC :

SRAM memory layout on OMAP4460

  • La mémoire SRAM étant limitée (pour des raisons physiques), nous ne disposons que de 48 Ko pour le chargeur de démarrage. Habituellement, le binaire du chargeur d’amorçage normal (par exemple, U-Boot) est plus gros que cela. Nous devons donc créer un chargeur de démarrage supplémentaire, qui initialisera la RAM normale et copiera le chargeur de démarrage normal de MMC dans la RAM, puis passera à l'exécution de ce chargeur de démarrage normal. Ce chargeur de démarrage supplémentaire est généralement appelé premier chargeur de démarrage (dans le cas d'un scénario de chargeur de démarrage à deux étapes).

Donc, ce premier chargeur de démarrage est U-Boot SPL; et chargeur de démarrage de deuxième étape est U-Boot normal _ (ou U-Boot proprement dit). Pour être clair: SPL signifie chargeur de programme secondaire. Ce qui signifie que le code ROM est le première chose qui charge (et exécute) un autre programme et SPL est le deuxième chose qui charge (et exécute) un autre programme. Donc, généralement, la séquence de démarrage est la suivante: ROM code -> SPL -> u-boot -> noyau. Et en réalité, il ressemble beaucoup au démarrage sur PC, à savoir: BIOS -> MBR -> GRUB -> kernel.

METTRE À JOUR

Pour clarifier les choses absolument, voici le tableau décrivant toutes les étapes de la séquence d'amorçage (pour clarifier les incertitudes possibles concernant la terminologie utilisée):

+--------+----------------+----------------+----------+
| Boot   | Terminology #1 | Terminology #2 | Actual   |
| stage  |                |                | program  |
| number |                |                | name     |
+--------+----------------+----------------+----------+
| 1      |  Primary       |  -             | ROM code |
|        |  Program       |                |          |
|        |  Loader        |                |          |
|        |                |                |          |
| 2      |  Secondary     |  1st stage     | u-boot   |
|        |  Program       |  bootloader    | SPL      |
|        |  Loader (SPL)  |                |          |
|        |                |                |          |
| 3      |  -             |  2nd stage     | u-boot   |
|        |                |  bootloader    |          |
|        |                |                |          |
| 4      |  -             |  -             | kernel   |
|        |                |                |          |
+--------+----------------+----------------+----------+

J'utilise donc simplement bootloader comme synonyme de U-Boot, et Program Loader comme terme commun pour tout programme chargeant un autre programme.

Voir également:

[1] SPL (sur Wikipedia)

[2] TPL: chargement SPL SPL - Denx

[3] Chargeur de démarrage (sur OSDev Wiki)

[4] Boot ROM vs Bootloader

42
Sam Protsenko

Il n'y a aucun besoin théorique pour un chargeur de programme secondaire. Cependant, il y a souvent des raisons pragmatiques pour en avoir un. Deux sur le haut de ma tête. Tout d'abord, la modularité et la facilité de développement.

Deuxièmement, le processus de démarrage du matériel peut être trop restrictif. Il se peut que le chargeur de livre se trouve dans un emplacement spécifique où l'espace disponible est insuffisant pour stocker l'intégralité du processus de démarrage. Le chargeur principal fait tout ce qui est nécessaire pour charger le processus de livre complet (SPL). Le chargeur principal, par exemple, peut être stocké dans ROM avec des limites de mémoire.

1
user3344003