Как узнать размер ROM?

16155
The Linux GK

В Windows, как я могу увидеть емкость чипа ПЗУ, установленного на моем компьютере, для хранения UEFI / BIOS? Я бы предпочел способ использования инструмента или команды Windows без установки какого-либо другого приложения.

0
Почему ты хочешь знать? a CVn 9 лет назад 2
Чтобы прояснить мой предыдущий комментарий: Обычно, когда люди спрашивают что-то подобное, есть основная задача, которую они пытаются выполнить, и они настолько сосредоточены на том, что, по их мнению, является путем к решению, что они не могут распознать, что существует гораздо более общий взгляд на все это. Также известен как [проблема XY] (http://meta.stackexchange.com/q/66377/157730). Если вы сообщите нам, что вы действительно пытаетесь достичь, выяснив размер ПЗУ микропрограммы материнской платы, вполне возможно, что мы сможем дать лучший ответ на то, что вы пытаетесь сделать. a CVn 9 лет назад 2
Я хотел бы поблагодарить вас за ваш интерес, который вы проявили к моему вопросу. Я не пытаюсь решить какую-либо проблему на своем компьютере, я просто спрашиваю об этом из любопытства. Мы можем определить размер нашего жесткого диска, оперативной памяти, флэш-накопителя USB и т. Д. Но я никогда не пытался определить размер ПЗУ своего компьютера, и пока я пытался найти некоторые другие детали своего компьютерного оборудования, я застрял на этом , Я искал дни, и я ничего не нашел вообще. The Linux GK 9 лет назад 1
Это ДЕЙСТВИТЕЛЬНЫЙ вопрос, почему downvote ?! Yousha Aleayoub 6 лет назад 0

3 ответа на вопрос

2
a CVn

Я не думаю, что вы можете, по крайней мере, ни в коем случае.

По сути, это потому, что размер кода BIOS не предоставляет никакой полезной информации для вас, пользователя. BIOS на IBM-совместимом компьютере имеет несколько основных обязанностей, большинство из которых применимы и к другим платформам, но могут быть реализованы по-разному:

  • Он выполняет самотестирование при включении питания (POST)
  • Это делает базовое аппаратное обнаружение и инициализацию
  • Он устанавливает базовую среду выполнения, особенности которой восходит к исходному ПК IBM 5150 с 1981 года (ЦП находится в реальном режиме, несколько регистров ЦП инициализируются с известными значениями, а несколько флагов ЦП устанавливаются с известными значениями).
  • Он предоставляет операционной системе (очень примитивные) аппаратные средства доступа и обнаружения; они не используются современными операционными системами, либо из-за технических ограничений ЦП (например, нелегкий способ переключения из длинного режима ), либо из-за ограничений производительности (переключение назад и вперед в реальный режим или режим V86 для выполнения -битный код BIOS занимает много времени, поэтому быстрее оставаться в защищенном или длинном режиме и просто делать это самостоятельно в ОС)
  • Он загружает загрузчик первого этапа операционной системы в известное фиксированное место в ОЗУ и передает ему выполнение
  • Предоставляет пользовательский интерфейс для настройки основных параметров системы; Строго говоря, это не является обязательным, и BIOS 1980-х годов часто не предоставлял такой интерфейс, вместо этого полагаясь на программное обеспечение, поставляемое отдельно, или на аппаратные DIP-переключатели для настройки даже таких основных системных настроек, как тип видеокарты и объем установленной оперативной памяти.

Ни в чем из этого нет никакой пользы для пользователя, зная, сколько кода используется для реализации этих задач. Еще в первые дни (здесь мы говорим о DOS раньше, чем Windows 3.0 до 3.1, так с начала 1980-х до начала 1990-х), BIOS часто полагался на выполнение основных функций, и, таким образом, размер кода BIOS мог потенциально соответствовать, по крайней мере, частично производительность, но в современных компьютерах BIOS отводится в основном в качестве загрузчика операционной системы и низкоуровневого интерфейса конфигурации оборудования. Кроме того, в компьютерах той эпохи, если код BIOS вообще можно было заменить, это было физическим удалением и переустановкой микросхем ПЗУ на материнской плате; BIOS с возможностью обновления флэш-памяти - намного более позднее изобретение.

Вы сравниваете это с определением размера запоминающих устройств или оперативной памяти. Разница заключается в том, что возможность определить размер того, что на самом деле говорит вам, пользователю, о чем-то, что стоит знать: объем доступного пространства хранения для каждого устройства или в совокупности является определяющим фактором того, сколько данных вы будете иметь. возможность хранить на компьютере, и размер оперативной памяти является одним из определяющих факторов, с которыми вы можете работать одновременно и с какой скоростью работать с этими данными.

В принципе, вы можете перейти на веб-сайт конкретного производителя материнских плат и посмотреть загружаемые образы обновлений BIOS. Размер этих файлов изображений будет, с очень высокой степенью достоверности, соответствовать размеру чипа флэш-ПЗУ, содержащего код BIOS на этой конкретной материнской плате. Я думаю, что общий размер сегодня составляет порядка нескольких мегабайт; исходный BIOS IBM 5150 для ПК составлял 8 КБ, а начиная с XT (IBM 5160) он был увеличен до 32 КБ в IBM. Я где-то читал анекдот о том, что в ранних клонах IBM PC BIOS чистых помещений хотя бы однажды люди задавались вопросом, не упустили ли они что-то, поскольку они смогли сделать это значительно меньшим количеством кода.

И, конечно, это полностью игнорирует возможность наличия других прошивок в системе, кроме BIOS компьютера. Видеокарты, сетевые карты, платы контроллеров дисков и все другие периферийные устройства имеют свои собственные BIOS, которые с точки зрения реализации полностью отделены от BIOS на материнской плате, как веб-браузер (или должен быть) полностью отдельно от операционной системы.

Я загрузил файл для обновления BIOS для своего ноутбука Acer. Это сжатый файл размером 2,19 МБ (2.304.094 байт). Если я распакую его, то это будет 2,90 МБ (3,046,834 байт). Поэтому я думаю, что мой ROM составляет около 3 МБ. The Linux GK 9 лет назад 0
Там, вероятно, нет 3 MiB Flash ROM. AFAIK они только кратны 2. (Кроме того, размер обычно указывается в битах.) Daniel B 9 лет назад 0
2
and31415

Чтение информации SMBIOS

Из Википедии:

В вычислениях, то BIOS системного управления ( SMBIOS ) спецификация определяет структуры данных (и методы доступа), которые могут быть использованы для чтения информации, хранящейся в BIOS в виде компьютера . Приблизительно в 1999 году он стал частью рабочей группы по распределенному управлению (DMTF). [...] Примерно в то же время Microsoft начала требовать от OEM-производителей и поставщиков BIOS поддержки интерфейса / набора данных для получения сертификата Microsoft .

Источник: Система управления BIOS

Информация SMBIOS хранится в разных таблицах данных; первый (тип 0) содержит основные сведения, такие как поставщик, версия и дата выпуска. Размер физического устройства, содержащего BIOS, соответствует одному байту, который расположен в самом конце 0x9 упомянутой таблицы.

Фактический размер может быть рассчитан следующим образом:

64K * (value + 1) 

Значение 0означает, что размер равен 64 КиБ, 1означает 128 КиБ и т. Д.

Насколько я знаю, Windows не предоставляет встроенную утилиту, которая может извлекать определенные данные SMBIOS, такие как размер ROM. Вы все еще можете написать сценарий самостоятельно, хотя; см. ниже некоторые рабочие примеры. В качестве альтернативы вы можете использовать стороннюю программу, например, dmidecodeпорт Windows .


Пакетный скрипт

@echo off setlocal enabledelayedexpansion  set key=HKLM\SYSTEM\CurrentControlSet\services\mssmbios\Data  for /f "tokens=3" %%G in ( 'reg query "%key%" /v "SMBiosData" ^| findstr /i /c:"REG_"' ) do ( set "size=%%~G" set /a size=64 * 0x!size:~34,2! + 64 )  echo ROM Size: %size% KiB PAUSE exit /b 

VBScript

Set tables = GetObject("winmgmts:\\.\root\wmi").ExecQuery _ ("SELECT * FROM MSSmBios_RawSMBiosTables")  For Each obj In tables WScript.Echo "ROM Size: " & (64 * obj.SMBiosData(9) + 64) & " KiB" Next 

PowerShell

$tables = Get-WmiObject -ComputerName . -Namespace root\wmi -Query " SELECT * FROM MSSmBios_RawSMBiosTables"  foreach ($obj in $tables) { echo $("ROM Size: " + (64 * $obj.SMBiosData[9] + 64) + " KiB") } 

замечания

Инструментарий управления Windows (WMI) является предпочтительным методом для чтения информации SMBIOS в Windows.

Источник: Устройство \ Объект PhysicalMemory

Драйвер [SMBIOS] также сохраняет эту информацию в реестре по адресу HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Mssmbios\Data. Хотя информация SMBIOS хранится в реестре в этом месте, потребители должны продолжать использовать WMI или GetSystemFirmwareTable()API для извлечения данных SMBIOS. Нет никакой гарантии, что эта информация будет храниться в этом подразделе реестра для каждого последующего выпуска Windows.

Источник: поддержка SMBIOS в Windows

дальнейшее чтение

Кто-то сделал там домашнее задание! Varad Mahashabde 7 лет назад 0
-2
The Linux GK

В Linux вы можете найти емкость флэш-памяти множеством способов. Команда dmidecode предоставляет много полезной информации о BIOS, включая емкость чипа. Я наконец обнаружил, что это 1 МБ. Я предлагаю всем либо взглянуть на свою материнскую плату, либо попробовать live CD с linux.

Вы запросили решение для Windows, и @ and31415 предоставили его в [его ответе] (http://superuser.com/a/806585/194694). Я не понимаю, почему вы приняли свой собственный ответ, даже если он не отвечает на первоначальный вопрос, а другой ответ? gronostaj 9 лет назад 0
Извините, но я думаю, что для менее опытного пользователя это было бы более простым решением. Я не принял мой ответ и принял другой (я не заметил, что я не проверил другой). The Linux GK 9 лет назад 0
Похоже, вы искали решение для Windows, а потом обнаружили, что решение для Linux может быть и лучше. Поскольку вы уже получили несколько ответов на свой первоначальный вопрос, было бы неуместно расширять его, и ваш ответ не соответствует критериям вашего вопроса. Так что, хотя это хороший ответ, он не подходит здесь. Предложение: опубликуйте новый вопрос с просьбой о решении для Linux и самостоятельно ответьте на него (и удалите его отсюда). fixer1234 8 лет назад 0

Похожие вопросы