Une partie de la question à laquelle on n'a pas répondu jusqu'à présent est la différence entre les chargeurs de démarrage sur les microcontrôleurs et les systèmes à microprocesseurs.
Microcontrôleur
La plupart des microcontrôleurs ont une mémoire ROM intégrée qui contient leur code de programme. La modification de ce code nécessite généralement un dispositif de programmation qui se connecte à l'interface de programmation du microcontrôleur (par exemple ISP sur ATMega). Mais ces interfaces de programmation ne sont généralement pas très pratiques à utiliser, par rapport à d'autres interfaces, car elles peuvent ne pas être facilement disponibles dans le contexte donné. Ainsi, par exemple, alors que presque tous les ordinateurs sont équipés de ports USB, l'interface SPI requise pour le FAI est beaucoup plus rare, et d'autres interfaces comme l'interface PID utilisée sur ATXMega ne sont prises en charge que par du matériel de programmation dédié.
Ainsi, par exemple, si vous souhaitez mettre à jour le logiciel à partir d'un ordinateur ordinaire sans aucun matériel externe, vous pouvez utiliser un chargeur de démarrage qui lit à partir d'un autre type d'interface (par exemple RS232, USB ou RS232 sur USB comme sur l'Arduino) pour programmer l'appareil sur des interfaces communes.
Cela dit, si vous n'avez pas besoin de cette fonctionnalité, le chargeur de démarrage est complètement facultatif. Le microcontrôleur peut toujours exécuter son code complètement sans le chargeur de démarrage.
Microprocesseur
Sur un microprocesseur, les choses sont un peu différentes. Alors que la plupart des microprocesseurs disposent d'une ROM suffisamment grande pour un chargeur de démarrage, ces ROM ne sont pas assez grandes pour contenir un système d'exploitation complet. Le but du chargeur de démarrage est donc d'initialiser le matériel, de rechercher un système d'exploitation amorçable, de le charger et de l'exécuter. Le chargeur de démarrage est donc essentiel pour chaque démarrage.
Sur les systèmes x86 / x64, ce chargeur de démarrage est soit le BIOS, soit l'UEFI (essentiellement une version plus récente d'un BIOS).
Parfois, vous pouvez même avoir plusieurs chargeurs de démarrage exécutés dans une chaîne. Par exemple, si vous avez un système à double démarrage avec Windows et Linux, vous pourriez vous retrouver avec ce qui suit:
- Le BIOS / UEFI démarre et trouve GRUB installé. Il charge ensuite GRUB (= Grand Unified Bootloader)
- GRUB trouve une sorte de Linux et le chargeur de démarrage Windows. L'utilisateur sélectionne le chargeur de démarrage Windows.
- Le chargeur de démarrage Windows démarre et trouve Windows 7 et Windows 10 installés. L'utilisateur sélectionne Windows 10.
- Windows 10 démarre enfin.
Donc, dans ce cas, il y avait trois logiciels qui peuvent être considérés comme un chargeur de démarrage. GRUB et Windows Bootloader sont principalement là pour donner à l'utilisateur une option de sélection de démarrage plus pratique que le BIOS / UEFI ne leur donnerait. Il permet également de lancer plusieurs systèmes d'exploitation à partir du même disque dur ou même de la même partition.
TLDR
Donc, alors que dans les deux systèmes, le chargeur de démarrage fait des choses un peu similaires (aidant l'utilisateur à choisir le code à démarrer), ils diffèrent tous deux considérablement dans la façon dont ils accomplissent cela et ce qu'ils font exactement.