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

Тема в разделе "WASM.ELECTRONICS", создана пользователем Loger, 1 авг 2005.

  1. Loger

    Loger New Member

    Публикаций:
    0
    Вот мне было интересно, что происходит после нажатия кнопки Power. CPU начинает выполнение с адреса 0x0, а вот что находится по этому адресу в этот момент (и как оно туда попадает) совершенно непонятно. Может, просветите, что делает комп от момента подачи питания на материнку до запуска загрузчика операционки?
     
  2. MoKC0DeR

    MoKC0DeR New Member

    Публикаций:
    0


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

    alpet Александр

    Публикаций:
    0
    Loger

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

    Loger New Member

    Публикаций:
    0
    alpet

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

    _BC_ БЦ

    Публикаций:
    0
    0000... F000:0000... FFFF:0000... ещё будут мнения? ;)



    Loger

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



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

    MoKC0DeR New Member

    Публикаций:
    0
    _BC_

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



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

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

    _BC_ БЦ

    Публикаций:
    0




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

    n0name New Member

    Публикаций:
    0
    Старые БИОСЫ так и работали, чисто в High BIOS.
     
  9. OLS

    OLS New Member

    Публикаций:
    0
    Loger

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



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

    Loger New Member

    Публикаций:
    0
    Спасибо за ответы. А где можно узнать подробности (книги, статьи)?
     
  11. _Supervisor_

    _Supervisor_ Денис

    Публикаций:
    0
    >> А код 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