Jak program sprawdza, czy działa na 512 MB RPi?

12

Czy 512 MB RPI ma inną wersję płyty?

tzn. czy możesz spojrzeć na wersję w /proc/cpuinfocelu ustalenia, czy masz 512 MB RPi?

W przeciwnym razie jaki jest najłatwiejszy sposób sprawdzenia?

John La Rooy
źródło
Zauważ, że ostatecznie nie możesz wiele zrobić z tą wiedzą, chyba że piszesz narzędzie do zmiany plików startowych lub po prostu chcesz poinformować użytkownika, co on ma lub jeśli ich bieżąca konfiguracja rozruchowa w pełni wykorzystuje sprzęt. Aplikacja na ARM pod jądrem Linuksa nie może faktycznie korzystać z dodatkowej pamięci, chyba że została przyznana przez kod startowy GPU.
Chris Stratton

Odpowiedzi:

10

Jak powiedziałeś, cat /proc/cpuinfo | grep Revisionpolecenie da ci poprawkę tablicy. Uwaga: wersja jest wartością szesnastkową. Aby wyświetlić ekwiwalent dziesiętny, uruchom to polecenie printf '%d\n' 0x#, gdzie #jest wartość szesnastkowa wyświetlana z poprzednim poleceniem.

Zgodnie z poniższą tabelą kody 13 , 14 i 15 oznaczają płytę 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

Źródło: Dokumentacja społeczności Element14

Morgan Courbet
źródło
1
Pamiętaj, że może się to zmienić w przyszłości. Jestem pewien, że kody 13,14,15 zawsze będą oznaczać, że masz 512 MB pamięci RAM, ale mogą być też inne. A zatem nie jest dobrym pomysłem założenie, że wszystkie kody> 13 mają 512 MB, ponieważ po prostu nie wiemy, czy to będzie prawda. Nie należy go zatem używać w skryptach itp.
Krzysztof Adamski,
1
Moja Pi przyszedł w pudełku z naklejka z napisem „512MB RAM” dużymi literami, ale /proc/cpuinfomówi Revision : 0005. Uruchamiam z obrazu 2012-09-18-wheezy-raspbian.zipzhttp://www.raspberrypi.org/downloads
RedGrittyBrick
@RedGrittyBrick: Dla mnie to samo. Właśnie otrzymałem swoje Pi wczoraj i zgodnie z oficjalnym blogiem mam wersję 512 MB pamięci RAM (na chipie widzę „4G”). Ale cat /proc/cpuinfozwraca wersję 5. Czy wersja nie jest zapisana w SoC? Czy Raspian potrzebuje aktualizacji, aby „rozpoznać” 512 MB pamięci RAM?
Morgan Courbet
@ Organ: Podobnie jak twój, najwyższy układ (RAM) procesora na moim Pi jest oznaczony jako Samsung K4P4G324EB, a informacje Samsunga potwierdzają, że jest to „128Mx32” = 4 GBit = 512 MB. Czytałem gdzieś na forum element, który sugerował, że konieczna jest aktualizacja oprogramowania układowego (wydaje mi się, że jest to jeden z plików na karcie SD)
RedGrittyBrick
@RedGrittyBrick: Mam teraz Revision: 000f. Prawdopodobnie nowy dist-upgrade.
Morgan Courbet
7

W nowoczesnym systemie operacyjnym, takim jak Linux, naprawdę musisz sprawdzić, ile pamięci zostało udostępnione do użytku ogólnego; może to być mniej niż całkowita fizycznie zainstalowana. Na przykład 512 MB pi z uruchomioną instalacją przeznaczoną na 256 MB nie udostępni tej pamięci.

Następnie na pi pojawia się kolejny problem podziału pamięci procesora na procesor graficzny - coś znacznie mniejszego niż obecna pamięć byłaby nawet dostępna do użycia procesora ARM do czasu rozruchu systemu Linux, ponieważ proces uruchamiania GPU już zażądał znacznej kwoty, jak określono w pliku start.elf.

Aby odpowiedzieć na bezpośrednie pytanie, pierwszy wiersz /proc/meminfolub freepolecenie powinno powiedzieć, ile pamięci fizycznej jest ogólnie dostępne dla Linuksa.

Ilość pamięci dostępnej dla danej aplikacji jest jeszcze bardziej skomplikowana - jądro, bufory i inne aplikacje zajmą pamięć. I choć być może nie jest powszechnie używany z kartą SD jako jedynym „dyskiem”, partycja wymiany może sprawić, że dostępna pamięć wirtualna przekroczy fizyczną pamięć RAM.

Chris Stratton
źródło