Автор: wiki.rom.by , 1 февраля 2008
Содержимое данного поля является приватным и не предназначено для показа.

BBCode (added in Drupal 11)

  • HTML-теги не обрабатываются и показываются как обычный текст
  • You may use the following BBCode tags:
    • [align]
    • [b]
    • [code]
    • [color]
    • [font]
    • [hr]
    • [i]
    • [img]
    • [list]
    • [quote]
    • [s]
    • [size]
    • [spoiler]
    • [sub]
    • [sup]
    • [table]
    • [u]
    • [url]
  • Адреса веб-страниц и email-адреса преобразовываются в ссылки автоматически.

d2 (не проверено)

15 лет 5 месяцев назад

А у остальных более новых плат такой-же процесс инициализирования? У шины P4?

onik1318

14 лет 10 месяцев назад

Меня тоже интересует подробный процесс старта современных плат, особенно плат под LGA775 от Asus, серия P5. Кто нибудь знает?

maco

14 лет 10 месяцев назад

[off]onik1318
С вашими проблемами нужно не интересоваться процессом старта, а заниматься диагностикой :D. Судя по количеству полезных данных в вашей теме, вы ей не занимаетесь :).[/off]

Orest

14 лет 10 месяцев назад

maco : "onik1318
С вашими проблемами нужно не интересоваться процессом старта, а заниматься диагностикой
/images/smiles/icon_biggrin.gif"
А как onik1318 может "заниматься диагностикой" , если не знаком с "процессом старта"/images/smiles/eusa_think.gif
Вот в качестве учебы создал темку https://rom.by/forum/Uchimsja_Zapusk_MV
Не Asus , не LGA775 , но достаточно современно ;-)
Если хорошо пойдет , продолжим ?

maco

14 лет 10 месяцев назад

[off]
А как onik1318 может "заниматься диагностикой" , если не знаком с "процессом старта"
Так же, как и остальные - измерять напряжения, которые могут повлиять на работу диагностируемых блоков (они указаны в теме), выкладывать результаты.
Этого для начала обычно хватает, если кому-нибудь захочется заняться анализом.[/off]

maco

14 лет 7 месяцев назад

[off]
Не FFFF:FFF0, а F000:FFF0!
Ошибаетесь :). Именно FFFF:FFF0 - Hi:Lo.
F000:FFF0 - Seg:Off ---> 1 Mbyte only.[/off]

savely

14 лет 7 месяцев назад

Как-то так

The instruction pointer is set to 0x0000FFF0. The first instruction executed after a reset is actually at 0xFFFFFFF0 because the i386 asserts the upper twelve address until the first intersegment (FAR) JMP or CALL instruction. When a JMP or CALL is executed, the upper twelve address lines are lowered and the processor begins executing in the first megabyte of memory.


F000h:FFF0h - верно для 8086. Сейчас реально все сложнее, но на уровне программной модели - совместимо (например, в смысле обеспечености того, что в реальном режиме JMP на F000:FFF0 попадет на первую инструкцию BIOS, т.е. C-A-D сработает как надо). А вот после аппаратного RESET задачей отдать процессору первую инструкцию там, где он ее ждет, занимается чипсет. А после первого JMP (который сразу) - мы имеем вменяемые CS:IP, указывающие на отмапленный в первый мег адресного пространства кусок BIOSа.

В принципе вообще конкретное состояние адресных ног может не иметь значения. К примеру, просто договорится, что по по первому (или N первых) циклу шины по обращению к памяти (по любому адресу) после аппаратного RESET сдается содержимое флешки с определенного адреса (в смысле адреса во флешке)... Ну, это я фантазирую уже.

maco

14 лет 7 месяцев назад

[off]
А после первого JMP (который сразу)
Не обязательно сразу :). Т.е. инструкция по адресу FFFF:FFF0 не обязана быть jmp'ом.
Можно еще упомянуть о CS selector/base (initial value - F000/FFFF0000).[/off]

Unknown BIOS (не проверено)

14 лет 6 месяцев назад

>Ошибаетесь. Именно FFFF:FFF0 - Hi:Lo.
Какое еще "Hi:Lo"? 32-битные адреса смещения записываются без двоеточия.

maco

14 лет 6 месяцев назад

[off]
Какое еще "Hi:Lo"?
Самые обыкновенные :).

32-битные адреса смещения записываются без двоеточия
Если вы не привыкли к такой записи, то это не страшно :D. Кто-то отделяет старшее слово от младшего пробелом, кто-то точкой, кто-то двоеточием, кто-то не разделяет никак и т.д.[/off]

Unknown BIOS (не проверено)

14 лет 6 месяцев назад

Впервые вижу такое разрезание смещений.
А двоеточие отделяет сегмент/селектор от смещения.

bios71

14 лет 6 месяцев назад

не бейте сильно ногами - но я вам покажу Интел и мы его можем пообсуждать ...

здесь видно, что стартуем мы с FFFFFFF0L адреса (RESET-AMI.JPG)
и уже ч/з пару команд (отчитавшись в порт 80 что "МЫ-ТУТ") проверяем
холодный ли ресет, т.е. на правильность кода по адресу F000:xxxxh

а смысл собственно в чем ... а в том, что при холодном ресете код
и по FFFFFFF0L и F000:xxxxh ОДИНАКОВ , но только до тех пор пока мы в конце (например перед jmp в MBR и пр.) не подкинем 64к RT кода в сегмент F000

если ресет холодный - придется инициализировать ВСЕ
иначе прыгаем (far16 ptr) в F000 сегмент (RT) т.е. все давно проинициализировано и "теплое"

RS:но это Интел, хотя и Atom+SCH (а в нем чипсет SCH инициализирует память ДО первой команды CPU)

maco

14 лет 6 месяцев назад

[off]64 кб bootblock'а или дизассемблированный текст (с комментариями) интереснее 160 кб картинок :).

при холодном ресете код и по FFFFFFF0L и F000:xxxxh ОДИНАКОВ
Одинаковость кода не спасает от первого обращения по FFFFFFF0 - это достаточно хорошо описано в документации :).[/off]

bios71

14 лет 6 месяцев назад

"Одинаковость кода не спасает от первого обращения по FFFFFFF0 " - я собственно и сам в этом и глубоко убежден, иначе глупость получается, мы находясь в сегмнте F000 проверяем "а что в нем лежит?" , еслибы там был теплый код - то в нем по F000:FFF0 EA 5B E0 00 F0 jmp far16 ptr f000:e05B, т.е. то куда мы уходим из FFFFFF41L



и только сейчас заметил - far16

Материал из Wiki.


<!-- start content -->

Содержание






 


<font color="#993366">Что происходит с компьютером сразу после нажатия кнопки включения? Как "начинает жить" вся система? Кто "более первый"? Что делает процессор до снятия сигнала #RESET?</font>

Ответы на эти и многие другие подобные вопросы обычно остаются тайной и для большинства пользователей, и для многих ремонтников (даже имеющих весьма солидную практику). В то же время, с постоянным усложнением современных систем знание данных механизмов становится всё более весомым и просто для настройки, и, тем более, для ремонта материнских плат.


Вопросы "электрической" составляющей "жизни до старта" (т.е. до выдачи сигнала PowerGood) здесь опущены, их правильней рассмотреть в отдельной статье.

 





Кто "первый"?



- Странный вопрос - скажете. - А кто же еще - процессор, кто у нас главный? И что, есть еще кто-то в очереди?


Вынужден разочаровать: процессор - самое бесправное существо в системе, он стартует самым последним. А с учетом растущего семимильными шагами интеллекта "периферии" (в первую очередь - видеокарт) и чипсетов, вообще, рискует со временем превратиться в "модуль аппаратной поддержки Windows". :)


Всё просто и сложно одновременно. Прогресс делает свое чёрное дело. Каждый отдельный компонент компьютера усложняется в геометрической прогрессии. В результате, по сути, каждый такой элемент начинает приобретать черты того же компьютера, только "попроще". А какая у компьютера главная микросхема? Только не надо опять про процессор! Конечно же - BIOS. :) Итого, для настройки каждого отдельного элемента платы требуется где-то сохранять (причем желательно/обязательно - энергонезависимо) настройки сего элемента. А много пригодных для этого "мест" у компьютера? Верно, опять - биос. В результате и получается не совсем очевидный, но факт - современная система целиком и полностью зависима от BIOS. Нет, конечно, это было верно и раньше, однако во времена, "когда деревья были большими", мы знали, что от биоса требуется лишь, чтобы по адресу FFFF:FFF0 процессор мог взять первую команду POST. А теперь... Что же "теперь"?


Рассмотрим ситуацию на примере AMD K7 систем. Получив в наследие от Alpha 21264 шину EV6, оные, кроме гигантских плюсов, позволивших впоследствии выбраться "из грязи в князи" и засунуть на несколько лет за пояс саму Intel, получили и отсутствовавющую ранее потребность в инициализации самой шины (здесь и дальше под этим подразумевается установка её - шины - характеристик из энергонезависимой памяти ). А кто должен этим заниматься? Процессор? А каким образом? Ведь мы пару абзацов назад уже выяснили, что процессор - самый "последний", а шину-то как раз нужно проинициализировать в первую очередь. В результате получаем, что до старта процессора кто-то должен "всё подготовить". Так северному мосту пришлось "резко поумнеть". Теперь, после получения PWR_GOOD, через небольшую задержку с северного моста снимается #NB_RESET (сигнал сброса северного моста), в то же время процессор продолжает "отдыхать" (сигнал #RESET не снимается). За это время (до "просыпания" процессора - снятия также и #RESET-а) северный мост должен оперативненько вытащить из биоса нужные ему (т.е. мосту, а не процессору) настройки и подготовиться к запуску. Как только процессор, наконец, зафункционирует, северный мост посылает ему пакет данных (SIP), в котором задаются основные параметры самого процессора (в том числе КУ). И только после отработки этого пакета, северный мост, наконец, вынимает первую команду на исполнение процессору. Обычно (раньше) она находилась по адресу FFFF:FFF0, однако нонче это совершенно не обязательно (в чем можно самому убедиться, просто дизассемблировав "концовку"-boot block любого современного биоса).





Инициализация северного моста.



Попробуем разобраться "на пальцах". Зачем так сделали? Тут понятно: умной системе - умные железки, умным железкам - нужно как-то инициализироваться. Вот это они и делают в самом начале работы, еще в "доресетный" период. А что выйдет, если у северного моста "не получится" проинициализироваться корректно? А ничего и не будет - нули на посткарте. Именно подобную ситуацию мы частенько получаем, когда кажется, что "ну, всё же нормально - биос на месте, процессор и разъём и т.п.", а "не идёт". Кроме того, ежели в системе много всяческих "наворотов" (читай - как у Asus), то запросто может случиться ситуация, когда северный мост откажется работать с флэшками "не его" типа, предпочитая лишь какой-то конкретный тип оных (читай SST). Кроме того, подобные технологии (типо-флэше-зависимость) позволяет продвинутым производителям защищать свою продукцию от копирования "сторонними китайскими платостроителями". Более подробно ситуацию с вариантами защиты своих схемотехнических решений от плагиата рассмотрим в отдельной статье.





Роль Super I/O Chip (SIO)



Обычно все привыкли, что неисправность мультика проявляется на "более позднем" этапе (в процессе POST), обычно это POST-код 05h для Award и т.п. Однако в свете обрисованной выше инициализации моста явно становится видна зависимость последней уже и от мультика, который также напрямую связан с функционированием биоса. А в результате получаем, что в случае проблем с мультиком, мы можем получить не только "обычные 05" на посткарте, но и "непонятные" нули, потому как северный мост не сможет корректно пройти необходимую инициализацию. Соответственно, берем на заметку - при исправности цепей питания, биоса и мостов, нули на посткарте могут быть в том числе и из-за проблемного мультика.


Например у очень популярных м/с IT8712F-A, а также продолжений этой линейки IT8716F и IT8718F, в составе GPIO регистров часть сконфигурирована (по умолчанию) и используется производителями под порты VID-input и VID-output. Имеется флаг разрешения/запрещения копирования из Input в Output (default 0. VID output from input). Таким образом при старте системы на ШИМ-регулятор подается комбинация VID-ов не напрямую с процессора, а через "посредника".