Comment un programme vérifie-t-il s'il fonctionne sur un RPi de 512 Mo?

12

Les RPI de 512 Mo ont-ils une révision de carte différente?

c'est-à-dire, pouvez-vous simplement regarder la révision /proc/cpuinfopour déterminer si vous avez un RPi de 512 Mo?

Sinon, quelle est la façon la plus simple de vérifier?

John La Rooy
la source
Notez qu'en fin de compte, vous ne pouvez pas faire grand-chose avec les connaissances, sauf si vous écrivez un outil pour modifier les fichiers de démarrage, ou si vous souhaitez simplement informer l'utilisateur de ce qu'il possède ou si sa configuration de démarrage actuelle tire pleinement parti du matériel. Un programme d'application sur l'ARM sous le noyau Linux ne peut réellement utiliser la mémoire supplémentaire que si elle a été accordée par le code de démarrage du GPU.
Chris Stratton

Réponses:

10

Comme vous l'avez dit, la cat /proc/cpuinfo | grep Revisioncommande vous donnera la révision de la carte. Veuillez noter que la révision est une valeur hexadécimale. Pour afficher l'équivalent décimal, exécutez cette commande printf '%d\n' 0x#, où #est la valeur hexadécimale affichée avec la commande précédente.

Selon le tableau suivant, les codes 13 , 14 et 15 représentent la carte 512 Mo.

Model and revision                                          Decimal code(s)     Hexadecimal equivalent
Model B Revision 1.0                                        2                   0x2
Model B Revision 1.0 + ECN0001 (no fuses, D14 removed)      3                   0x3
Model B Revision 2.0                                        4, 5, 6             0x4, 0x5, 0x6
Model B Revision 2.0 (512 MB)                               13, 14, 15          0xd, 0xe, 0xf

Source: documentation de la communauté Element14

Morgan Courbet
la source
1
Gardez à l'esprit que cela pourrait changer à l'avenir. Je suis sûr que les codes 13,14,15 signifieront toujours que vous avez 512 Mo de RAM mais il peut y en avoir d'autres. Et puis ce n'est pas une bonne idée de supposer que tous les codes> 13 ont 512 Mo car nous ne savons tout simplement pas si cela sera vrai. Donc, il ne devrait pas être utilisé dans les scripts, etc.
Krzysztof Adamski
1
Mon Pi est venu dans une boîte avec un autocollant disant "512 Mo de RAM" en grosses lettres mais /proc/cpuinfodit Revision : 0005. Je démarre à partir d'une image 2012-09-18-wheezy-raspbian.zipdehttp://www.raspberrypi.org/downloads
RedGrittyBrick
@RedGrittyBrick: Même chose pour moi. Je viens de recevoir mon Pi hier, et selon le blog officiel , j'ai une version RAM de 512 Mo (je peux voir "4G" sur la puce). Mais cat /proc/cpuinforenvoie la révision 5. La révision n'est-elle pas écrite dans le SoC? Raspian a-t-il besoin d'une mise à jour pour «reconnaître» la version RAM de 512 Mo?
Morgan Courbet
@Morgan: Comme la vôtre, la puce supérieure (RAM) sur le processeur de mon Pi est marquée Samsung K4P4G324EB et les informations de Samsung confirment qu'il s'agit de "128Mx32" = 4 GBit = 512 Mo. J'ai lu un élément du forum quelque part qui suggérait qu'une mise à jour du firmware était nécessaire (je suppose que c'est l'un des fichiers sur la carte SD)
RedGrittyBrick
@RedGrittyBrick: Je l'ai maintenant Revision: 000f. Probablement un récent dist-upgrade.
Morgan Courbet
7

Dans un système d'exploitation moderne tel que Linux, ce que vous devez vraiment vérifier, c'est la quantité de mémoire disponible pour un usage général; qui peut être inférieur au total installé physiquement. Ainsi, par exemple, un 512 Mo pi exécutant une installation destinée à un 256 Mo ne mettrait pas cette mémoire à votre disposition.

Ensuite, sur le pi, il y a le problème supplémentaire de la division de la mémoire CPU vs GPU - quelque chose de nettement inférieur à la mémoire actuelle serait même disponible pour l'utilisation du processeur ARM au moment du démarrage de Linux, car le processus de démarrage du GPU a déjà a réclamé un montant substantiel selon le fichier start.elf utilisé.

Pour répondre à la question directe, la première ligne de /proc/meminfoou la freecommande devrait vous indiquer la quantité totale de mémoire physique disponible pour Linux.

La quantité de mémoire disponible pour une application donnée est encore plus compliquée - le noyau, les tampons et d'autres applications réclameront de la mémoire. Et bien qu'elle ne soit peut-être pas couramment utilisée avec une carte SD comme seul «disque», une partition de swap pourrait faire dépasser la mémoire virtuelle physique par la mémoire virtuelle disponible.

Chris Stratton
la source