Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Определение количества физической памяти
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы
Serg79
Тут такой вопрос, как мне определить количество установленной физической памяти на машине?

Считывание значения по адресу (в реальном режиме) 0040:0013h (сильно не пинайте, сейчас точно не помню точный адрес, по этому могу и ошибаться) слова, у меня на машине показывает 614 Кбайт, что соответственно не правда. Хотя BIOS как то определяет размер физической памяти. Может кто знает, по какому адресу он размещает данное значение.
BSV
Можно почитать содержимое SPD-микросхем, стоящих на модулях памяти, через SMBus контроллер, имеющийся в южном мосте (Intel). Скачайте даташит на любой Интеловский южник и там можете почитать про это поподробней.
makc
Если мне не изменяет память, то есть функция прерывания 15h, которая позволяет определять количество памяти.

PS: Вам под какой ОС это нужно?
Serg79
Цитата(BSV @ May 4 2007, 01:45) *
Можно почитать содержимое SPD-микросхем, стоящих на модулях памяти, через SMBus контроллер, имеющийся в южном мосте (Intel). Скачайте даташит на любой Интеловский южник и там можете почитать про это поподробней.
Точно, Вы попали прямо в точку. Скорее всего так BIOS и поступает, ведь он выполняется в реальном режиме и ему доступно адресное пространство в пределах FFFF:FFFFh.
BSV, если Вам не сложно не могли бы Вы ткнуть меня носом на ссылочку где лежат данные даташиты. А то я защел на сайт Intel и убил минут дватцать, но так и не смог добраться ни до какой либо технической документации.
BSV
ICH2
http://www.intel.com/design/chipsets/datashts/290687.htm
ICH4
http://www.intel.com/design/chipsets/datashts/290744.htm
ICH5
http://www.intel.com/design/chipsets/designex/252673.htm
ICH6
http://www.intel.com/design/chipsets/datashts/301473.htm
ICH7
http://www.intel.com/design/chipsets/datashts/307013.htm
ICH8
http://www.intel.com/design/chipsets/datashts/313056.htm

Только там кроме SPD-шек еще что-то может висеть - нужно сканировать весь диапазон адресов, а затем уже анализировать найденное. Давно этим занимался не помню уже точно.
Еще один момент - BIOS работает в режиме "линейной адресации", при этом может адресовать (как данные) память в 32-разрядном пространстве - это не совсем реальный режим. Регистры SMBus расположены в адресном пространстве адресов ввода-вывода, адрес можно прочитать из соответствующего регистра базового адреса - так что с этим проще. Если с железом через PCI не работали - сложновато Вам будет программу написать.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.