скажите, а возможно определить кол-во оперативной памяти

Тема в разделе "WASM.OS.DEVEL", создана пользователем fireman, 8 янв 2009.

  1. fireman

    fireman New Member

    Публикаций:
    0
    Регистрация:
    16 сен 2008
    Сообщения:
    39
    Скажите, а возможно определить кол-во оперативной памяти из шины ПЦИ?
    Т.е. не используя инт15 и тупой перебор адресов Мегабайтами.
    Просто подумал так, что диапазоны не перемещаемой памяти можно узнать из инфы получаемой от Устройств на шине ПЦИ. То как-то можно и думаю с памятью!? :)
     
  2. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    fireman
    Дело в том что кроми PCI есть еще ISA. И еще чать RAM использует биос под свои нужды об этом только сам биос знает.
    Если перебирать мегабайты можно угодить куда ненадо. Рескованно, а PCI сам по себе обовсем не знает. Еще похорошому надо писать железо зависимый код для работы с контроллером памяти, так как он объетом знает побольше PCI.
     
  3. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    А кроме того, часть ОЗУ занята под нужды ACPI, и если её затереть, дальше могут начаться глюки...
     
  4. fireman

    fireman New Member

    Публикаций:
    0
    Регистрация:
    16 сен 2008
    Сообщения:
    39
    Pavia
    А есть пример про контроллер памяти?
     
  5. fireman

    fireman New Member

    Публикаций:
    0
    Регистрация:
    16 сен 2008
    Сообщения:
    39
    SII
    Что можеш предложить?
     
  6. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    fireman
    Лично я за int 15.
     
  7. rudik

    rudik Руденко Артём

    Публикаций:
    0
    Регистрация:
    6 дек 2006
    Сообщения:
    302
    Адрес:
    г. Харьков
    Linux как то узнает в каких каналах скоко памяти стоит...
     
  8. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    rudik
    DMI( SM ) или четает SPD через SMBus
     
  9. bugaga

    bugaga New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2007
    Сообщения:
    361
    fireman можешь использовать тупой перебор на чтение/запись. Это надежней и проще, а int15 может вывести систему из unreal mode.

    Код (Text):
    1. Дело в том что кроми PCI есть еще ISA. И еще чать RAM использует биос под свои нужды об этом только сам биос знает.
    Ну и пургу Вы гоните Павейа. Видать с железом работале ток четая книшке)))
     
  10. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    bugaga
    Книжки читаю. С железом работал знаю. В отличии от некоторых.
     
  11. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    Не ругаться! И на ругателей не жаловаться!
     
  12. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Было бы интересно услышать от аффтара ответ на вопрос: Зачем это ему нужно?

    bugaga, лично я тоже не считаю текст цитаты от Pavia, который вы привели, чем-то некорректным (если конечно говорить о смысле написанного, а не о его форме :). Кстати, желательно всем периодически почитывать книжки и не только книжки ;)
     
  13. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    fireman
    Определять объём в соответствии со спецификацией ACPI, и только если машина не поддерживает ACPI (а современные ПК поддерживают все), пользоваться другими методами, но тоже на основе вызовов BIOS. В ACPI, если память не изменяет, используется функция E820 прерывания INT 15.
     
  14. bugaga

    bugaga New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2007
    Сообщения:
    361
    а!
    можно то можно, ток придеться курить даташит на конкретный северный мост, и работать с его регистрами. В этом случае int15 полюбому идет лесом.
     
  15. fireman

    fireman New Member

    Публикаций:
    0
    Регистрация:
    16 сен 2008
    Сообщения:
    39
    Phantom_84
    Просто интересно было бы узнать сколько у тебя памяти из ПМ (но не тупым перебором мегабайтов). И еще очень интересно было бы узнать какие планки стоят в разъемах(как это делает Еверест).
    Pavia написал про контроллер памяти и я думаю есть(хоть и геморойно) более оптимальный способ нежели Инт15(АЦПИ).
    Как я понимаю контроллер должен знать какие области использует биос и аппаратура? Или я не прав?
     
  16. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Из PM или все-таки для PM? Для PM из RM самый распространенный способ - это int 15h/0000E820h. Контроллер не может знать, какие области памяти BIOS использует для хранения собственных данных, к примеру тех же ACPI-таблиц. Он "знает" о распределении SMRAM, Shadow RAM, Memory-mapped I/O Ports & Buffers, Memory Remap Blocks. "Еверест" получает информацию из EPROM на основе SPD-протокола.
     
  17. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    fireman
    Как уже написал Phantom_84, "Контроллер не может знать, какие области памяти BIOS использует для хранения собственных данных". Поэтому, даже узнав объём физически существующей оперативной памяти иным способом, мы не сможем понять, какие её области доступны для нашего использования, а какие трогать чревато боком. Кроме того, есть ещё одна проблема. Хотя SPD является универсальной вещью, каждый чипсет (ну или контроллер памяти в составе процессора, как у АМД и в новых процессорах Интел) может реализовывать работу с ним по-своему; кроме того, у каждого контроллера памяти могут быть средства переотображения областей памяти на разные физические адреса. Всё это делает задачу определения объёма памяти в обход BIOS весьма и весьма нетривиальной, а на практике и не особо-то и нужной.
     
  18. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Это делается через чтение SPD. SPD это не протокол. Это больше похоже на способ хранения данных.
    Чтение чипсето зависимо. SPD распологается на шине I2C Филипс. Интел называет эту шину SMBus. Для работы с этой шиной есть контроллер. Реализации разных производителей похожи на 50-75%.
    В целом нетак трудно реализовать. Нужно только выяснить адресс SMBus, а дальше все легко.

    http://www.xlevel.ru/forum/YaBB.cgi?board=programming;action=display;num=1186920031
     
  19. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
  20. fireman

    fireman New Member

    Публикаций:
    0
    Регистрация:
    16 сен 2008
    Сообщения:
    39
    Еще вопрос
    Скажем у меня стартует программа из ДОС-а, откуда взять данные какие области памяти заняты самой ОС и загруженными ею программами, и с каких адресов можно использовать память для своих нужд(в режиме ПМ), чтобы потом можно было вернуться обратно в РМ.
    Т.е. моя программа будет использовать от 16Мб-200Мб ОЗУ.