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?

Ankur Agarwal
la source

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.

LawrenceC
la source
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).

BuvinJ
la source
Ê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