Je me demande quelle est la séquence de démarrage du Raspberry Pi dans une configuration typique (disons NOOBS), depuis l’application d’alimentation (ou la réinitialisation à chaud si cela est différent) jusqu’à l’apparition du logo; ou où cela est décrit.
Outre une image générale très utile de cette séquence, je m'intéresse surtout aux premières étapes:
- Quel est le vecteur de réinitialisation de la CPU ARM et comment / où est-il défini?
- Dans quelle mémoire les premières instructions du processeur ARM sont-elles extraites? Où est-ce, et quelle technologie est utilisée pour stocker ce code?
- S'agit-il du code ARM32 ou du pouce (ou peut-être de Jazelle)? Cela dépend-il du bit de poids faible du vecteur de réinitialisation?
- La source (ou le désassemblage ou le dump) de ce code de démarrage initial est-elle disponible? Si non, est-ce que quelque chose de technique empêche l'utilisation du port JTAG pour le déterminer? En ce qui concerne les aspects juridiques, je suis prêt à assumer le risque de faire confiance à ma compréhension du droit applicable dans mon pays (France), ce qui signifie que je suis pleinement autorisé à analyser mon propre ordinateur, du moins en l'absence d'un contrat explicite obligation de ne pas le faire.
- Dans quel ordre les périphériques sont-ils initialisés et par quel morceau de code?
- Outre le processeur ARM, y a-t-il des processeurs / automates fonctionnant dans le BCM2835 et, dans l’affirmative, quel est le lien entre sa séquence de démarrage et le processeur ARM?
Je suis prêt à plonger dans le manuel de référence technique de la CPU ARM et les périphériques ARM BCM2835 , ou dans tout autre document.
Mise à jour: Après avoir posté, j'ai trouvé ceci et cela , indiquant que le GPU du BCM2835 agit en tant que maître pour ARM et est fortement impliqué dans la séquence de démarrage.