Программно получить информацию о типе и объеме памяти ПЗУ в Linux
Мне нужна информация из моей программы на C об общем объеме флэш-памяти и типе флэш-памяти на моем встроенном Linux. Я вижу эту информацию, когда ядро загружается, но не могу найти другого способа получить их. Это вообще возможно?
4 ответа
Есть ли у вас /proc/meminfo? Это даст вам необходимую информацию?
Я предполагаю, что ваше ядро Linux является 2.6 новее, и вы можете проверить /proc/mtd*** для общей информации.
Если этого недостаточно, проверьте исходный код mtd-tools: mtdinfo.c
проверьте эти функции print_XXXX_info. Вам также нужна некоторая внешняя библиотека, чтобы это работало.
API-интерфейс ядра для интерфейса mtd время от времени меняется, поэтому убедитесь, что у вас правильная версия для вашего ядра.
Взгляните на ядро и / или исходный код загрузчика, чтобы увидеть, как он это делает при загрузке. Этот метод, скорее всего, зависит от вашего оборудования.
Да. это возможно с помощью утилиты dmidecode из linux. вот пример кода
#include <stdio.h>
#include <stdlib.h>
int main()
{
char str[100] = "dmidecode | grep -i 'ROM Size'";
system(str);
return 0;
}
он даст вам размер ПЗУ, и если вы не выберете "Размер ПЗУ", он также предоставит другую информацию BIOS. если у вашего встроенного Linux нет утилиты Dmidecode, вы можете получить исходный код здесь. Вы также можете проанализировать часть исходного кода dmidecode, которая предоставляет информацию о ПЗУ, если вы не хотите использовать системную команду и не хотите копать другую информацию BIOS.