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

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

  1. Loger

    Loger New Member

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

    MoKC0DeR New Member

    Публикаций:
    0
    Регистрация:
    13 ноя 2003
    Сообщения:
    136
    Адрес:
    Russia


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

    alpet Александр

    Публикаций:
    0
    Регистрация:
    21 сен 2004
    Сообщения:
    1.221
    Адрес:
    Russia
    Loger

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

    Loger New Member

    Публикаций:
    0
    Регистрация:
    28 авг 2003
    Сообщения:
    71
    Адрес:
    Minsk
    alpet

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

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    0000... F000:0000... FFFF:0000... ещё будут мнения? ;)



    Loger

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



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

    MoKC0DeR New Member

    Публикаций:
    0
    Регистрация:
    13 ноя 2003
    Сообщения:
    136
    Адрес:
    Russia
    _BC_

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



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

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

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759




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

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Старые БИОСЫ так и работали, чисто в High BIOS.
     
  9. OLS

    OLS New Member

    Публикаций:
    0
    Регистрация:
    8 янв 2005
    Сообщения:
    322
    Адрес:
    Russia
    Loger

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



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

    Loger New Member

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

    _Supervisor_ Денис

    Публикаций:
    0
    Регистрация:
    10 авг 2005
    Сообщения:
    4
    Адрес:
    Москва
    >> А код 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