Как программа проверяет, работает ли она на 512 МБ RPi?

12

RPI 512MB имеют другую версию платы?

то есть, вы можете просто посмотреть на ревизию, /proc/cpuinfoчтобы определить, есть ли у вас 512 МБ RPi?

Иначе какой самый простой способ проверить?

Джон Ла Рой
источник
Обратите внимание, что в конечном итоге вы не можете многое сделать со знанием, если вы не пишете инструмент для изменения загрузочных файлов или просто хотите сообщить пользователю, что у них есть, или если его текущая конфигурация загрузки использует все преимущества оборудования. Прикладная программа на ARM под ядром Linux не может фактически использовать дополнительную память, если это не было предоставлено кодом запуска графического процессора.
Крис Страттон

Ответы:

10

Как вы сказали, cat /proc/cpuinfo | grep Revisionкоманда даст вам ревизию платы. Обратите внимание, что ревизия является шестнадцатеричным значением. Чтобы отобразить десятичный эквивалент, выполните эту команду printf '%d\n' 0x#, где #шестнадцатеричное значение, отображаемое с предыдущей командой.

Согласно следующей таблице коды 13 , 14 и 15 обозначают плату 512 МБ .

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

Источник: документация сообщества Element14

Морган Курбе
источник
1
Имейте в виду, что это может измениться в будущем. Я уверен, что коды 13,14,15 всегда будут означать, что у вас 512 МБ ОЗУ, но могут быть и другие. И тогда не стоит полагать, что все коды> 13 имеют 512 МБ, поскольку мы просто не знаем, будет ли это так. Так что это не должно использоваться в сценариях и т. Д.
Кшиштоф Адамски
1
Мой Пи пришел в коробке с наклейкой с надписью «512MB RAM» большими буквами, но с /proc/cpuinfoнадписью Revision : 0005. Я загружаюсь с картинки 2012-09-18-wheezy-raspbian.zipизhttp://www.raspberrypi.org/downloads
RedGrittyBrick
@RedGrittyBrick: То же самое для меня. Я только что получил свой Pi вчера, и согласно официальному блогу , у меня есть 512 МБ RAM-версии (я вижу «4G» на чипе). Но cat /proc/cpuinfoвозвращает версию 5. Разве версия не написана в SoC? Нужно ли Raspian обновление для распознавания 512 МБ ОЗУ?
Морган Курбе
@Morgan: Как и у вас, верхняя микросхема (ОЗУ) на процессоре моего Pi помечена как Samsung K4P4G324EB, и информация Samsung подтверждает, что это 128Mx32 = 4 ГБ = 512 МБ. Я где-то читал
раздел
@RedGrittyBrick: у меня сейчас Revision: 000f. Вероятно, недавно dist-upgrade.
Морган Курбе
7

В современной операционной системе, такой как Linux, вам действительно нужно проверить, сколько памяти выделено для общего использования; это может быть меньше, чем общее физически установленное. Так, например, 512 МБ пи с установкой, рассчитанной на 256 МБ, не сделают эту память доступной для вас.

Затем, на пи возникает еще одна проблема разделения памяти ЦП и ГП - что-то существенно меньшее, чем существующая память, будет даже доступно для использования ЦП ARM к моменту загрузки Linux, поскольку процесс загрузки ГП уже потребовал значительную сумму, так как определил используемый файл start.elf.

Чтобы ответить на прямой вопрос, первая строка /proc/meminfoили freeкоманда должна указать, сколько физической памяти доступно для Linux в целом.

Сколько памяти доступно данному приложению, опять-таки более сложно - ядро, буферы и другие приложения будут требовать память. И хотя, возможно, обычно не используется с SD-картой как единственным «диском», раздел подкачки может сделать доступную виртуальную память больше физической ОЗУ.

Крис Страттон
источник