In che modo un programma controlla se è in esecuzione su un RPi da 512 MB?


12

Gli RPI da 512 MB hanno una revisione della scheda diversa?

cioè, puoi semplicemente guardare la revisione /proc/cpuinfoper determinare se hai un RPi da 512 MB?

Altrimenti qual è il modo più semplice per verificare?


Si noti che alla fine non è possibile fare molto con le conoscenze, a meno che non si stia scrivendo uno strumento per modificare i file di avvio o semplicemente si desideri informare l'utente di cosa dispongono o se la loro configurazione di avvio corrente sta sfruttando appieno l'hardware. Un programma applicativo su ARM sotto il kernel Linux non può effettivamente utilizzare la memoria aggiuntiva se non è stato concesso dal codice di avvio della GPU.
Chris Stratton,

Risposte:


10

Come hai detto, il cat /proc/cpuinfo | grep Revisioncomando ti darà la revisione della scheda. Si noti che la revisione è un valore esadecimale. Per visualizzare l'equivalente decimale, eseguire questo comando printf '%d\n' 0x#, dove #è il valore esadecimale visualizzato con il comando precedente.

Secondo la seguente tabella, i codici 13 , 14 e 15 indicano la scheda da 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

Fonte: documentazione della community Element14


1
Tieni presente che questo potrebbe cambiare in futuro. Sono sicuro che i codici 13,14,15 significheranno sempre che hai 512 MB di RAM ma potrebbero essercene altri. E quindi non è una buona idea supporre che tutti i codici> 13 abbiano 512 MB poiché non sappiamo se sarà vero. Quindi non dovrebbe essere usato negli script ecc.
Krzysztof Adamski il

1
Il mio Pi è arrivato in una scatola con un adesivo che diceva "512 MB di RAM" a grandi lettere ma /proc/cpuinfodice Revision : 0005. Sto 2012-09-18-wheezy-raspbian.ziphttp://www.raspberrypi.org/downloads
eseguendo il

@RedGrittyBrick: stessa cosa per me. Ho appena ricevuto il mio Pi ieri e, secondo il blog ufficiale , ho una versione RAM da 512 MB (posso vedere "4G" sul chip). Ma cat /proc/cpuinforestituisce la revisione 5. La revisione non è scritta nel SoC? Raspian ha bisogno di un aggiornamento per "riconoscere" la versione RAM da 512 MB?
Morgan Courbet,

@Morgan: Come il tuo, il chip superiore (RAM) sulla CPU del mio Pi è contrassegnato da Samsung K4P4G324EB e le informazioni di Samsung confermano che questo è "128Mx32" = 4 GBit = 512 MB. Ho letto un elemento del forum da qualche parte che mi ha suggerito che è necessario un aggiornamento del firmware (suppongo che questo sia uno dei file sulla scheda SD)
RedGrittyBrick

@RedGrittyBrick: ora ho Revision: 000f. Probabilmente un recente dist-upgrade.
Morgan Courbet,

7

In un moderno sistema operativo come Linux, ciò che è veramente necessario verificare è la quantità di memoria resa disponibile per uso generico; potrebbe essere inferiore al totale installato fisicamente. Quindi, ad esempio, un 512 MB pi che esegue un'installazione prevista per un 256 MB non renderebbe disponibile quella memoria.

Quindi, sul pi c'è l'ulteriore problema della divisione della memoria CPU vs GPU - qualcosa di sostanzialmente inferiore alla memoria attuale sarebbe persino disponibile per l'uso della CPU ARM al momento dell'avvio di Linux, poiché il processo di avvio della GPU ha già richiesto un importo considerevole come determinato il file start.elf utilizzato.

Per rispondere alla domanda diretta, la prima riga /proc/meminfoo il freecomando dovrebbe dirti quanta memoria fisica è disponibile per Linux in generale.

La quantità di memoria disponibile per una determinata applicazione è ancora più complicata: il kernel, i buffer e altre applicazioni richiederanno memoria. E sebbene forse non sia comunemente usato con una scheda SD come unico "disco", una partizione di swap potrebbe far sì che la memoria virtuale disponibile superi la RAM fisica.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.