Парочка вопросов про биос

Discussion in 'WASM.OS.DEVEL' started by ajak, Oct 31, 2007.

  1. ajak

    ajak New Member

    Blog Posts:
    0
    Joined:
    Oct 24, 2007
    Messages:
    463
    1) Возможно ли добраться до биоса и изменить его из винды?
    2) Где взять официальные доки (очень люблю первоисточник) на все прерывания и функции биоса, клавиатура мышь и прочяя переферия?
    3) Все фызовы функций api в виндовз сводятся к обращению соответствующих функций в биосе?
     
  2. Pavia

    Pavia Well-Known Member

    Blog Posts:
    0
    Joined:
    Jun 17, 2003
    Messages:
    2,409
    Location:
    Fryazino
    ajak
    1) Да.
    2) В интернете. Если тебе нужены дока на биос, то ищи
    "PhoenixBIOS 4.0 Programmer’s Guide Version 1.0". Все биосы похожи, но единого стандарта нет. Так что помимо этой доки лучше взять не официальные "Help" и "Interrupt List" от Ralf Brown
    3) Нет. Это обсалютная чушь. api это набор функций они не обязаны вызывать прерывания.
    Идем в глубь. Для общения с драйверами используются прерывания (винндовское прерывание). Но это всего лишь точка для перехода между уровнями привелегий, между кольцами защиты. Сейчас есть специальные команды для этого, так что прерывания не используются.
    Идем в глубь что там делает драйвер? Он общается с портами ввода/вывода и физическами адресами в памяти. Биос там не используется. Вернее как сказать не используется. В win98 октивно использовались, а в WinNT(Его последователях) уже нет савсем нет.

    Вот на начальном этапи загрузки ОС там да используются прерывания.
     
  3. ajak

    ajak New Member

    Blog Posts:
    0
    Joined:
    Oct 24, 2007
    Messages:
    463
    Спасибо. А чтобы добраться до биоса из винды, нужно быть в режиме ядра?
     
  4. Pavia

    Pavia Well-Known Member

    Blog Posts:
    0
    Joined:
    Jun 17, 2003
    Messages:
    2,409
    Location:
    Fryazino
    ajak
    А что значит добраться? Можно через драйвер физической памяти считать его.
     
  5. Vilco

    Vilco Vitaly

    Blog Posts:
    0
    Joined:
    Mar 5, 2007
    Messages:
    190
    Location:
    Nsk, Russia
    А существуют ли в свободном распостранении сорцы какого-нибудь более-менее современного биоса?
     
  6. Mi256

    Mi256 New Member

    Blog Posts:
    0
    Joined:
    Sep 24, 2007
    Messages:
    116
    А я кстати так и делал как говорит Pavia . Адрес загрузки и размер - прочитать можно из GDT, он постоянно находится в невыгружаемой памяти так что прочитать легко, и синька врят-ли будет. (Ищи cтраницы начинающиеся после адреса F0000000)
     
  7. Pavia

    Pavia Well-Known Member

    Blog Posts:
    0
    Joined:
    Jun 17, 2003
    Messages:
    2,409
    Location:
    Fryazino
    Vilco
    Да существуют Award (Award Bios 6.00Pg Source Code 1999) в исходных кодах и OpenBIOS .
    BIOS распологается 4ГБ- размер биоса
    1 0000 0000h-n*4 0000h
    Обычно биос имеет размеры 256кб, 512кб, 1024кб.
    А вот если тебе перезаписать нужно то там хитрая система программирования. И зависит от материнки в том числе.
     
  8. n0name

    n0name New Member

    Blog Posts:
    0
    Joined:
    Jun 5, 2004
    Messages:
    4,336
    Location:
    Russia
    есть LinuxBIOS еще. тоже полезная штука.
     
  9. SII

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

    Blog Posts:
    0
    Joined:
    Oct 31, 2007
    Messages:
    1,483
    Location:
    Подмосковье
    BIOS используется и в NT и последующих, но не для ввода-вывода, а для управления электропитанием (ACPI в некоторых случаях этого требует, APM вроде бы вообще через SMM реализуется). Однако если не заморачиваться со сном/пробуждением системы, то BIOS не нужен после окончания загрузки системы.
     
  10. Pavia

    Pavia Well-Known Member

    Blog Posts:
    0
    Joined:
    Jun 17, 2003
    Messages:
    2,409
    Location:
    Fryazino
    SII
    Я имел ввиду что прерывания не используются. Вернее почти не используются. Там BIOS используется только для заполнения таблиц ACPI. А дальше уже ОС разбирает таблицы и сама управляет энерго обеспичением и прочим. Так что тут опять биос учавствует только на начальном этапе загрузки ОС.
     
  11. SII

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

    Blog Posts:
    0
    Joined:
    Oct 31, 2007
    Messages:
    1,483
    Location:
    Подмосковье
    Pavia

    Если ОС использует ACPI -- то вроде бы да (лень глядеть в спецификацию; помню только, что при "поверхностном сне" BIOS вообще никак не нужен, поскольку при пробуждении просто возобновляется выполнение с точки, где процессор "заснул" -- он зацикливается на проверке какого-то разряда; а при "глубоком" BIOS используется, потому что процессор уходит в полное отключение и возобновляет работу с точки входа в BIOS по сбросу, но используется вроде только в процессе перезапуска ОС после сна, что фактически является разновидностью начальной загрузки). Вот если APM, то, вероятно, BIOS там используется и для перехода в сон, переключения режимов энергопотребления устройств и т.п., но утверждать не буду -- спецификацию APM смотрел давным-давно и ни разу на практике не использовал. Впрочем, в наши дни актуально только использование ACPI :)

    Кстати, вот ещё одна мысль. BIOS можно использовать и в процессе работы ОС при присоединении новых устройств PCI (если платформа поддерживает "горячее подключение"). Впрочем, думаю, проще всё это реализовать самому -- "ручной" доступ к конфигурационному пространству PCI проблем не составляет.
     
  12. ajak

    ajak New Member

    Blog Posts:
    0
    Joined:
    Oct 24, 2007
    Messages:
    463
    А почему вначале загрузки доступ к устройствам осуществляется через прерывания а почему нельзя напрямую через порты?
     
  13. Freeman

    Freeman New Member

    Blog Posts:
    0
    Joined:
    Feb 10, 2005
    Messages:
    1,385
    Location:
    Ukraine
    можно и напрямую
     
  14. SII

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

    Blog Posts:
    0
    Joined:
    Oct 31, 2007
    Messages:
    1,483
    Location:
    Подмосковье
    ajak

    Просто проще через BIOS. Да и надёжнее: BIOS точно знает, какие контроллеры на маме стоят и как с ними работать.
     
  15. nobodyzzz

    nobodyzzz New Member

    Blog Posts:
    0
    Joined:
    Jul 13, 2005
    Messages:
    475
    читать точно можно