Flux de démarrage – documentation de framboise pi

le couler de démarrage commence par la lecture de l’OTP pour décider de la validité modes de démarrage activée. Par défaut, il s’agit du démarrage de la carte SD suivi du démarrage du périphérique USB. Par la suite, la ROM de démarrage vérifie si les bits OTP du mode de démarrage GPIO ont été programmés – un pour activer GPIO boot mode et un pour sélectionner la banque de GPIO qu’il utilise pour désactiver modes de démarrage (bas = GPIO 22-26, haut = GPIO 39-43). Cela permet d’utiliser un commutateur matériel pour choisir entre différents modes de démarrage s’il y en a plusieurs disponibles.

le GPIO boot Les bits OTP en mode peuvent être programmés en ajoutant program_gpio_bootmode = n à config.txt, où n est 1 pour sélectionner la banque basse (22-26) ou 2 pour sélectionner la banque haute (39-43). Une fois ajouté, démarrez l’appareil, puis mettez-le sous tension (le redémarrage n’est pas suffisant).


Vous devriez vous attendre à ce qu’il ne démarre plus (tous les modes de démarrage seront désactivés par défaut). Appliquer un pull-up à la broche requise pour activer le mode de démarrage requis. Après la programmation, le paramètre config.txt peut être supprimé.

• Il est important de garder à l’esprit que, une fois définis, les bits OTP ne peuvent jamais être désactivés. Réfléchissez bien avant d’activer cette fonctionnalité car elle rend inutilisable 5 GPIO à d’autres fins. Notez également que les affectations de bits permettent de passer de la banque basse (22-26) à la banque haute (39-43), mais pas de revenir en arrière, et que sélectionner la banque haute est susceptible de produire un Pi non amorçable. , sauf si vous utilisez un module de calcul (n’importe quelle version).

• Utilise program_gpio_bootmode pour désactiver certains modes en lisant GPIOs 22-26 ou 39-43 pour voir si les valeurs par défaut ne sont pas égales à la valeur par défaut de ‘0’. Si elle est faible, elle désactivera ce mode de démarrage pour chacun des SD1, SD2, NAND, SPI, USB. Si la valeur lue est ‘1’, alors ce mode de démarrage est activé (notez que cela ne peut pas être activé démarrage modes qui n’ont pas déjà été activés dans le OTP). La résistance de tirage par défaut est d’environ 50K ohm, donc une plus petite traction de 5K devrait suffire pour mode d’amorçage mais permettent toujours au GPIO d’être opérationnel sans consommer trop de puissance.

• Si aucune carte SD n’est insérée, le mode d’amorçage SD prend cinq secondes pour échouer. Pour réduire cela et revenir plus rapidement à l’USB, vous pouvez insérer une carte SD sans rien ou utiliser le paramètre OTP de GPIO bootmode décrit ci-dessus pour activer uniquement l’USB.

• L’énumération USB est un moyen d’activer l’alimentation des périphériques en aval sur un concentrateur, puis d’attendre que l’appareil tire les lignes D + et D- pour indiquer s’il s’agit d’USB 1 ou d’USB 2. Cela peut prendre du temps: sur certains périphériques cela peut prendre jusqu’à trois secondes pour qu’un disque dur démarre et démarre le processus d’énumération. Parce que c’est la seule façon de détecter que le matériel est attaché, nous devons attendre un minimum de temps (deux secondes). Si le périphérique ne répond pas après ce délai maximum, il est possible d’augmenter le délai à cinq secondes en utilisant program_usb_boot_timeout = 1 dans config.txt.

• Le LAN951x est détecté à l’aide de l’ID de fournisseur 0x0424 et de l’ID de produit 0xec00, ce qui est différent du périphérique LAN9500 ​​autonome dont l’ID de produit est 0x9500 ou 0x9e00. Pour utiliser le LAN9500 ​​autonome, une EEPROM I2C doit être ajoutée pour modifier ces ID afin qu’ils correspondent au LAN9514.

Le mode de démarrage principal de la carte SD est, en standard, configuré pour être GPIO 49-53. Il est possible de démarrer à partir de la carte SD secondaire sur un deuxième jeu de broches, c’est-à-dire d’ajouter une carte SD secondaire aux broches GPIO. Cependant, nous n’avons pas encore activé cette capacité.

Le mode de démarrage du périphérique USB est activé par défaut au moment de la fabrication, mais le mode de démarrage de l’hôte USB est uniquement activé avec program_usb_boot_mode = 1. Une fois activé, le processeur utilisera la valeur de la broche OTGID sur le processeur pour choisir entre les deux modes. Sur un Framboise Pi Modèle B, la broche OTGID est conduite à ‘0’ et ne démarrera donc en mode hôte qu’une fois activée (il n’est pas possible de démarrer en mode périphérique car le périphérique LAN9515 est gênant).

L’USB démarrera comme un périphérique USB sur le Pi Zero ou le module de calcul si la broche OTGID est laissée flottante (lorsqu’il est branché sur un PC par exemple), de sorte que vous pouvez «injecter» le bootcode.bin dans l’appareil. Le code pour le faire est usbboot. Voir / Modifier cette page sur GitHub