Включение компа

Discussion in 'WASM.ELECTRONICS' started by Loger, Aug 1, 2005.

  1. Loger

    Loger New Member

    Blog Posts:
    0
    Joined:
    Aug 28, 2003
    Messages:
    71
    Location:
    Minsk
    Вот мне было интересно, что происходит после нажатия кнопки Power. CPU начинает выполнение с адреса 0x0, а вот что находится по этому адресу в этот момент (и как оно туда попадает) совершенно непонятно. Может, просветите, что делает комп от момента подачи питания на материнку до запуска загрузчика операционки?
     
  2. MoKC0DeR

    MoKC0DeR New Member

    Blog Posts:
    0
    Joined:
    Nov 13, 2003
    Messages:
    136
    Location:
    Russia


    Это с какого перепуга ?!! всю жизнь после включения питания стартовал код BIOS (если не изменяет память F000:0000). Код проверяет систему на исправность и стартует ОС. Это в кратце
     
  3. alpet

    alpet Александр

    Blog Posts:
    0
    Joined:
    Sep 21, 2004
    Messages:
    1,221
    Location:
    Russia
    Loger

    При нажатии кнопки Power происходит только запуск блока питания. Процессор же запускается по сбросу сигнала #reset, который в свою очередь сбрасывается по появлению сигнала на линии #powergood. После выполнения сброса, процессор начинает выполнять код, который записан в ROM BIOS по адресу FFFF:0000. По данному адресу записана команда перехода на реально выполняемый код ROM BIOS. Далее процессору предстоит выполнить программы BootBlock, POST и наконец загрузчик системы.
     
  4. Loger

    Loger New Member

    Blog Posts:
    0
    Joined:
    Aug 28, 2003
    Messages:
    71
    Location:
    Minsk
    alpet

    А код ROM BIOS как оказывается в оперативке? Материнка сама его туда грузит до запуска процессора или перехватывает обращение к оперативке и выдает код ROM BIOS?
     
  5. _BC_

    _BC_ БЦ

    Blog Posts:
    0
    Joined:
    Jan 20, 2005
    Messages:
    759
    0000... F000:0000... FFFF:0000... ещё будут мнения? ;)



    Loger

    Это задача чипсета подсунуть процу то что надо при RESET'е.



    Выполнение начинается в т.н. High BIOS Area по физ. адресу FFFFFFF0h. Чипсет по адресу (при состоянии после сброса) определяет цель (а сам код BIOS'а может быть на FWH, LPC, ISA и тд -- в зависимости от прихоти вендора) и переадресует циклы куда надо.
     
  6. MoKC0DeR

    MoKC0DeR New Member

    Blog Posts:
    0
    Joined:
    Nov 13, 2003
    Messages:
    136
    Location:
    Russia
    _BC_

    Я написал если не изменяет память... Скорее всего стар начинается с FFFF:0000.



    А если у меня нет 4Gb памяти ?

    Может имелось ввиду FFFF0h = FFFF:0000 ?
     
  7. _BC_

    _BC_ БЦ

    Blog Posts:
    0
    Joined:
    Jan 20, 2005
    Messages:
    759




    Нет и ещё раз нет. Это совершенно не зависит от того, сколько у тебя оперативной памяти, это исключительно mapping. Уже давно миновали времена 8086, и процессору при старте всё равно, что будет в сегменте F, его интересует физ. адрес FFFFFFF0h (который получается за счет того, что CS shadow-регистр при старте содержит базовый адрес FFFF0000h и предел FFFFh, а EIP=FFF0h). Теоретически, код BIOS'а может целиком отработать и в High BIOS, но на практике первая же команда по адресу FFFFFFF0h -- FAR JMP на F000h:xxxxh.
     
  8. n0name

    n0name New Member

    Blog Posts:
    0
    Joined:
    Jun 5, 2004
    Messages:
    4,336
    Location:
    Russia
    Старые БИОСЫ так и работали, чисто в High BIOS.
     
  9. OLS

    OLS New Member

    Blog Posts:
    0
    Joined:
    Jan 8, 2005
    Messages:
    322
    Location:
    Russia
    Loger

    Дешифратор шины адреса (ДША) в момент появления на шине адреса конретного значения определяет (так, как в него запрограммировал vendor), что это будет за устройство: RAM, ROM или, например, видеопамять; и именно это устройство выходит из высокомного состояния, то есть начинает взаимодействовать с процессором.



    Стартовый адрес раньше традиционно выставлялся так что попадал на ROM BIOS.
     
  10. Loger

    Loger New Member

    Blog Posts:
    0
    Joined:
    Aug 28, 2003
    Messages:
    71
    Location:
    Minsk
    Спасибо за ответы. А где можно узнать подробности (книги, статьи)?
     
  11. _Supervisor_

    _Supervisor_ Денис

    Blog Posts:
    0
    Joined:
    Aug 10, 2005
    Messages:
    4
    Location:
    Москва
    >> А код ROM BIOS как оказывается в оперативке?



    Код ROM BIOS загружает в ОЗУ boot-block (Initial OPROM), который, как верно заметил _BC_, находится по адресу 0xFFFFFFF0.





    >>на практике первая же команда по адресу FFFFFFF0h -- FAR

    JMP на F000h:xxxxh



    Так было только на очень старых компьютерах. Теперь boot-block содержит код проверки КС, средства восстановления ROM, код конфигурирования основной памяти.





    >> ДША в момент появления на шине адреса конретного значения определяет, что это будет за устройство: RAM, ROM или, например, видеопамять



    Северный мост чипсета содержит набор регистров конфигурирования адресного пространства PAM (Programmable Attribute Map) в рамках GPIO*. Один PAM регистр контролирует два региона адресного пространства. В зависимости от битов типа региона, доступ осуществляется либо к основной памяти, либо к ROM, либо перенаправляется на шину PCI.



    >> А где можно узнать подробности (книги, статьи)



    Статья "Технологии защиты BIOS": http://www.lowlevel.h14.ru/cgi-bin/yabb/YaBB.cgi?board=programming;act ion=display;num=1120969302



    ----------------------

    * Про GPIO: http://www.lowlevel.h14.ru/cgi-bin/yabb/YaBB.cgi?board=programming;act ion=display;num=1109883050