Pourquoi avons-nous besoin d'un chargeur de démarrage dans un périphérique intégré?
Je travaille avec ELinux noyau ARM cortex-A8.
Je sais comment le bootloader fonctionne et ce travail qu'il accomplit. Mais j'ai une question: pourquoi avons-nous besoin de chargeur de démarrage, pourquoi le chargeur d'amorçage né?
Pourquoi nous ne pouvons pas nous charger directement le noyau dans la mémoire RAM de mémoire flash sans bootloader? Si nous charger ce qui va arriver? En fait, le processeur ne sera pas soutenir, mais pourquoi sommes-nous à la suite de la procédure?
source d'informationauteur chainz
Vous devez vous connecter pour publier un commentaire.
^ De Article De Wikipedia
Donc, fondamentalement, bootloader est exactement ce que tu voulais, - la copie de données à partir de la mémoire flash dans le fonctionnement de la mémoire. C'est vraiment aussi simple que cela.
Si vous voulez en savoir plus sur le bootstrap de l'OS, je vous recommande vivement de lire l'article lié. De la phase d'amorçage est constitué, en dehors de tests, et également de vérifier les périphériques et quelques autres choses. Sauter eux n'a de sens que sur de très simple périphériques intégrés, et c'est pourquoi leurs chargeurs sont encore plus simples:
de La même source
Dans le contexte de Linux, le chargeur de démarrage est responsable de certaines tâches prédéfinies. Comme cette question est bras tagged, je pense que BRAS de démarrage peut être une ressource utile. Plus précisément, le chargeur de démarrage a été/est responsable de la mise en place d'un
ATAG
liste décrivant la quantité de RAM, d'une ligne de commande du noyau, et d'autres paramètres. L'un des paramètres les plus importants est la type de machine. Avec appareil arbresune description intégrale de la commission est adopté. Ce qui fait un stock de Linux ARM impossible de démarrer avec un peu de code pour configurer les paramètres comme décrit.Les paramètres permet générique Linux pour prendre en charge plusieurs périphériques. Par exemple, un BRAS de noyau Debian peut supporter des centaines de différents types de conseil. Uboot ou d'un autre chargeur de démarrage peut déterminer de façon dynamique cette information ou il peut être codé en dur pour le conseil d'administration.
Vous pouvez également regarder bootloader info page ici à débordement de pile.
Un système de base peut être en mesure de configurer
ATAGS
et de copie NI de flash SRAM. Cependant, il est généralement un peu plus complexe que cela. Linux a besoin d'une RAM de l'installation, de sorte que vous devez les initialiser un contrôleur SDRAM. Si vous utilisez une mémoire flash NAND, vous avez à gérer blocs défectueux et la copie peut-être un peu plus complexe quememcpy()
.Linux a souvent un latente bogues où un pilote de supposer que l'horloge est initialisé. Par exemple, si Uboot initialise toujours Ethernet horloge pour une machine en particulier, le Linux pilote Ethernet peuvent avoir négligé d'installation de cette horloge. Cela peut être particulièrement vrai avec l'horloge arbres.
Certains systèmes exigent une image de démarrage des formats qui ne sont pas pris en charge par Linux; par exemple un en-tête spécial qui permet d'initialiser le matériel immédiatement; comme la configuration de la
devices
à lire le code de. En outre, il est souvent le matériel qui doit être configuré immédiatement; un chargeur de démarrage pouvez le faire rapidement alors que la structure normale de Linux peut la retarder de manière significative résultant de conflits d'e/S, etc.À partir d'un point de vue pragmatique, il est plus simple d'utiliser un chargeur de démarrage. Cependant, il n'y a rien pour vous empêcher de modifier Linux source de démarrer directement à partir d'elle; bien qu'il peut-être comme le collage de la chargeur de démarrage code directement au démarrage de Linux.
Voir Aussi: CorebootUbootet La page Wikipedia de comparaison. Barebox est moins connu, mais bien structuré et moderne chargeur d'amorçage pour les BRAS. RedBoot est également utilisé dans certains systèmes de BRAS; RedBoot partitions sont pris en charge dans l'arborescence du noyau.
La primaire bootloader est habituellement construit dans le silicium, et procède à la charge de l'UTILISATEUR premier bloc de code qui sera exécuté dans le système.
Le bootloader existe parce qu'il n'existe pas de protocole standardisé pour le chargement du premier code, puisqu'elle est dépendante de la puce. Parfois, le code peut être chargée via un port série, d'une mémoire flash, ou même un disque dur. Il est bootloader fonction de la localiser.
Une fois le code d'utilisateur est chargé et en cours d'exécution, le chargeur de démarrage n'est plus utilisé et la justesse de l'exécution du système est la responsabilité de l'utilisateur.
Dans le linux embarqué de la chaîne, la primaire bootloader permet de configurer et d'exécuter le Uboot. Puis Uboot trouverez le noyau linux et le charger.
Bartek, sans artifice, et Felipe donnent toutes les parties de l'image.
Chaque intégré le type de processeur (E. G. 386EX, Coretex-A53, EM5200) de le faire quelque chose automatiquement lorsque l'appareil est réinitialisé ou sous tension. Parfois, c' quelque chose est différente selon que la mise hors puis sous tension ou la réinitialisation de l'appareil. Certains processeurs embarqués vous permettent de changer que quelque chose basé sur des tensions appliquées aux différentes broches lorsque l'appareil est sous tension ou de la réinitialisation.
Peu importe, il y a une quantité limitée de quelque chose qu'un processeur peut faire, en raison de l'espace physique sur-processeur nécessaire de définir ce que quelque chosesi c'est sur puce FLASH, l'enseignement de la micro-code, ou d'un autre mécanisme.
Cette limite signifie que le quelque chose est
Ainsi qu'un processeur n'en réponse au reset ou power-cycle ne peut pas être modifié, et ne peut pas faire grand-chose, et nous ne voulons pas pour copier automatiquement des centaines de méga-octets ou giga-octets en mémoire qui peuvent ne pas exister ou ne peut pas être initialisé, et qui peut prendre un looooong moment.
....
Nous avons mis en place un petit programme qui est plus petite que la plus petite taille autorisée sur tous les appareils que nous allons utiliser. Ce programme est stocké où la quelque chose besoins.
Parfois le petit programme est de U-Boot. Parfois même U-Boot est trop grand pour le chargement initial, de sorte que le petit programme alors à son tour en charge de l'U-Boot.
Le point est que tout ce qui est chargée par le quelque choseest modifiables que nécessaire pour un système particulier. Si c'est le U-Boot, grand, si pas, il sait où pour charger le système d'exploitation principal ou où la charge de U-Boot (ou d'un autre chargeur de démarrage).
U-Boot (en parlant de bootloaders en général), puis configure un ensemble minimal de dispositifs, de la mémoire, puce, etc., pour permettre à l'OS principal à être lancé. L'OS principal init prend soin de configuration supplémentaire ou de l'initialisation.
De sorte que la séquence est:
Le noyau nécessite le matériel sur lequel vous travaillez à être dans un état particulier. Tout le matériel utilisé doit être vérifié pour son état et initialisé pour la poursuite de l'opération. C'est l'une des principales raisons de l'utilisation d'un chargeur de démarrage dans incorporée (ou tout autre environnement), en dehors de son utilisation pour charger une image du noyau dans la mémoire RAM.
Lorsque vous mettez sur un système, de la RAM est pas dans un état utile (entièrement initialisé à utiliser) pour que nous la charge du noyau. Par conséquent, nous ne pouvons pas charger un noyau directement (pour répondre à votre question)et, ainsi, se pose la nécessité d'une construction pour l'initialiser.
En dehors de ce qui est indiqué dans toutes les autres réponses - ce qui est correct - dans certains cas, le système doit passer par différents modes d'exécution, prendre comme exemple TrustZone pour sécuriser les puces ARM. Il est possible de le considère encore comme une sorte de HW initialisation, mais ce qui le rend particulier est le fait qu'il y a des limitations supplémentaires (ex: la mémoire disponible), il est peu pratique, voire impossible, de faire tout en un seul binaire, donc plusieurs étapes de chargeur de démarrage sont disponibles.
En outre, pour des raisons de sécurité, chacun d'eux est signé et peut effectuer son travail que s'il satisfait aux exigences en matière de sécurité.