Comment savoir quelle plage d'adresses RAM de mémoire est utilisée par uboot?


12

Je suis dans uboot et je me demandais, comment pourrais-je savoir quelle plage d'adresses RAM est utilisée par uboot.

uboot a besoin de mémoire pour fonctionner, il peut donc utiliser une partie de la RAM. Je veux éviter de modifier ces adresses RAM.

Comment savoir quelle région de la mémoire est chargée par uboot?

Réponses:


2

La page DULG DebuggingUBoot a ceci à dire (la "relocalisation" dont il parle se copie du flash vers la RAM).

Pour déboguer U-Boot après la relocalisation, nous devons connaître l'adresse à laquelle U-Boot se déplace. Lorsqu'aucune fonctionnalité exotique comme PRAM n'est utilisée, cette adresse est généralement - CONFIG_SYS_MONITOR_LEN. Dans notre exemple avec 16 Mo de RAM et CONFIG_SYS_MONITOR_LEN = 192 Ko, cela donne l'adresse 0x1000000 - 0x30000 = 0xFD0000.

Une lecture plus approfondie du texte semble indiquer que cela dépend du processeur ou de la carte et que vous devrez peut-être vérifier la source U-Boot pour en être sûr.

Concernant le Guruplug :

Côté RAM, u-Boot dispose des 8 premiers mégaoctets réservés. Le reste est gratuit. Certains développeurs chargeront des noyaux et des systèmes de fichiers à 0 × 800000 pour la programmation à flasher. Un autre point commun est à la limite de 100 mégaoctets (ou décalage 0 × 640000).

Selon votre version de U-Boot, des commandes peuvent être disponibles pour placer une chaîne quelque part dans la RAM libre, puis rechercher le reste de la RAM pour cette chaîne, révélant l'emplacement approximatif de U-Boot en mémoire.


1

Lorsque je démarre la version d'uboot que j'utilise, elle affiche automatiquement une "disposition de mémoire du noyau virtuel".

Memory: 859068k/859068k available, 25668k reserved, 0K highmem
Virtual kernel memory layout:
    vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
    DMA     : 0xf9e00000 - 0xffe00000   (  96 MB)
    vmalloc : 0xe0800000 - 0xf4000000   ( 312 MB)
    lowmem  : 0x80000000 - 0xe0000000   (1536 MB)
    pkmap   : 0x7fe00000 - 0x80000000   (   2 MB)
    modules : 0x7f000000 - 0x7fe00000   (  14 MB)
      .init : 0x80008000 - 0x8004d000   ( 276 kB)
      .text : 0x8004d000 - 0x808ad000   (8576 kB)
      .data : 0x808ce000 - 0x80937a40   ( 423 kB)

J'ai trouvé qu'il était sûr d'utiliser la zone lowmem pour divers processus utilitaires que je voulais exécuter (comme le chargement de gros fichiers en mémoire). Idéalement, je pense que vous voulez utiliser une mémoire élevée pour ce genre de chose, mais je n'avais pas l'option (comme vous pouvez le voir dans ma sortie).


Êtes-vous sûr que ce n'est pas la carte mémoire de Linux?
claymation

Je n'en suis pas certain. Ce manque de highmem et la référence au "noyau virtuel" m'amènent à penser le contraire. Je suis un noob / hack en ce qui concerne le redémarrage. Le point important ici était que j'ai pu utiliser en toute sécurité cette plage lowmem sans écrire sur tout ce que l'uboot semblait nécessiter.
BuvinJ

Si je me souviens bien, cela est affiché avant le chargement de l'OS btw.
BuvinJ
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.