¿Cómo verifica un programa si se ejecuta en un RPi de 512 MB?


12

¿Los RPI de 512 MB tienen una revisión de placa diferente?

es decir, ¿puedes mirar la revisión /proc/cpuinfopara determinar si tienes un RPi de 512 MB?

De lo contrario, ¿cuál es la forma más fácil de verificar?


Tenga en cuenta que, en última instancia, no puede hacer mucho con el conocimiento, a menos que esté escribiendo una herramienta para cambiar los archivos de inicio, o simplemente quiera informar al usuario qué tiene o si su configuración de arranque actual está aprovechando al máximo el hardware. Un programa de aplicación en el ARM bajo el kernel de Linux en realidad no puede usar la memoria adicional a menos que haya sido otorgado por el código de inicio de la GPU.
Chris Stratton

Respuestas:


10

Como dijiste, el cat /proc/cpuinfo | grep Revisioncomando te dará la revisión del tablero. Tenga en cuenta que la revisión es un valor hexadecimal. Para mostrar el equivalente decimal, ejecute este comando printf '%d\n' 0x#, donde #es el valor hexadecimal que se muestra con el comando anterior.

De acuerdo con el siguiente cuadro, los códigos 13 , 14 y 15 representan la placa de 512 MB .

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

Fuente: documentación de la comunidad Element14


1
Tenga en cuenta que esto puede cambiar en el futuro. Estoy seguro de que los códigos 13,14,15 siempre significarán que tienes 512 MB de RAM, pero puede haber otros. Y entonces no es una buena idea suponer que todos los códigos> 13 tienen 512 MB ya que simplemente no sabemos si eso será cierto. Por lo tanto, no debe usarse en scripts, etc.
Krzysztof Adamski

1
Mi Pi llegó en una caja con una pegatina que decía "512 MB de RAM" en letras grandes, pero /proc/cpuinfodice Revision : 0005. Estoy arrancando desde una imagen 2012-09-18-wheezy-raspbian.zipdesdehttp://www.raspberrypi.org/downloads
RedGrittyBrick

@RedGrittyBrick: Lo mismo para mí. Acabo de recibir mi Pi ayer, y según el blog oficial , tengo una versión de 512 MB de RAM (puedo ver "4G" en el chip). Pero cat /proc/cpuinfodevuelve la revisión 5. ¿No está la revisión escrita en el SoC? ¿Raspian necesita una actualización para "reconocer" la versión de 512 MB de RAM?
Morgan Courbet

@Morgan: Al igual que el suyo, el chip superior (RAM) en la CPU de mi Pi está marcado como Samsung K4P4G324EB y la información de Samsung confirma que es "128Mx32" = 4 GBit = 512 MB. Leí un elemento del foro en algún lugar que sugería que se necesitaba una actualización de firmware (supongo que este es uno de los archivos en la tarjeta SD)
RedGrittyBrick

@RedGrittyBrick: tengo ahora Revision: 000f. Probablemente un reciente dist-upgrade.
Morgan Courbet

7

En un sistema operativo moderno como Linux, lo que realmente necesita verificar es la cantidad de memoria disponible para uso general; eso puede ser menor que el total instalado físicamente. Entonces, por ejemplo, un 512 MB pi que ejecuta una instalación destinada a un 256 MB no pondría esa memoria a su disposición.

Luego, en el pi está el problema adicional de la división de memoria de CPU frente a GPU: algo sustancialmente menor que la memoria actual incluso estaría disponible para el uso de la CPU ARM para el momento en que Linux arranque, ya que el proceso de arranque de GPU ya ha reclamó una cantidad sustancial según se determinó el archivo start.elf utilizado.

Para responder a la pregunta directa, la primera línea /proc/meminfoo el freecomando debería indicarle cuánta memoria física está disponible para Linux en general.

La cantidad de memoria disponible para una aplicación determinada es nuevamente más complicada: el núcleo, los buffers y otras aplicaciones reclamarán memoria. Y aunque quizás no se use comúnmente con una tarjeta SD como el único "disco", una partición de intercambio podría hacer que la memoria virtual disponible exceda la RAM física.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.