Форум программистов, компьютерный форум, киберфорум
R71MT
Войти
Регистрация
Восстановить пароль

Принцип работы Dual-BIOS

Запись от R71MT размещена 20.04.2018 в 23:12
Показов 31594 Комментарии 0
Метки bios, система

Немного о том, как устроен и что представляет из-себя этот зверь.
Речь пойдёт об аппаратной (и далее программной) реализации 'Dual-BIOS'. Gigabyte не охотно делится с подноготной своего продукта, ограничиваясь тремя скудными картинками у себя на сайте. Ну не хотят - не надо. В свободном доступе есть принципиальные схемы мат/плат и даташиты чипсетов - они и прольют свет на происходящее.

Суть в том, чтобы вдохнуть жизнь в материнку с убитым бивисом. На плате имеются 2 чипа с одинаковыми прошивками: M_BIOS и B_BIOS (main/backup), которыми программно управляет чипсет. Если контрольная сумма основного биос искажена, то хост подключает к пространству системной памяти резервную м/схему, и подаёт сигнал сброса 'Reset'. Машина перезагружается уже с кодом бэкап-биоса, и предлагает восстановить Main. Неплохая идея.. Посмотрим, как она воплощается в жизнь.

Параллельная флэш-память уже канула в лету, освободив нишу для последовательной 'SPI-Flash'. Сейчас, в качестве носитей кода BIOS мат/плат широкое распространение получила 25-я их серия, которую производят: Winbond(W), Silicon(SST), Macronix(MX). Это "одного поля ягоды" с такими характеристиками:

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
SST25VF080B (8 Мбит = 1 Мб)
----------------------------
Тип........:  SPI-Flash;
Вольтаж....:  2,7...3,6v;
Частота....:  75 MГц;
Скорость...:  150 Мбит/сек;
Ток чтения.:  9 мА;
Объём......:  до 64 Мбит (1,2,4,8 Мб);
Страница...:  256 байт;
Сектор.....:  04 кБ;
Блок.......:  64 кБ;
Возможности:  4 кБ посекторное стирание;
              64 кБ блочное стирание;
              Полное стирание;
              Авто/инкремент адреса;
              100.000 циклов перезаписи;
              10 лет хранение данных;
              Программная и аппаратная защита от записи;
              Защита всего содержимого, или её части;
--------------------------------------------------------
         _____
   CS#--|1   8|--VDD       CS# = вход 'Chip Select' - активация чипа лог.нулём;
  MISO--|2   7|--HOLD#     WP# = вход 'Write Protect' - запрет на запись (только чтение);
   WP#--|3   6|--SCLK    HOLD# = вход запроса шины (мастер отвечает единицей HLDA);
   GND--|4   5|--MOSI     MOSI = вход 'Master-Out, Slave-IN' (DI - DataIn);
        |_____|           SCLK = вход синхро/импульса Clock (генерит Мастер);
                          MISO = выход 'Master-IN, Slave-Out' (DO - DataOut);
                           VDD = плюс источника питания 3,3v.
                           GND = минус источника питания;
В интерфейсе SPI один ведущий может управлять несколькими(N) ведомыми.
Поскольку речь идёт про Dual-BIOS, ведомых получается двое - Main и Backup чипы.
Встроенный в ICH(7..10) SPI-контроллёр может работать как в режиме 'Master', так и в режиме 'Slave'.

Мастер выбирает ведомого лишь одной линией(CS#), раздельно формируемой для каждого из флэш-чипов. При подаче на вывод(СS#) единицы, SPI-модуль переходит в неактивное состояние и приём/передача данных становится невозможной (отключается буфер I/O внутри флэш). Активным является логический нуль, который помечается решёткой(#).

Для защиты от записи используется генерируемый Мастером cигнал(WP#). Сигнал(HOLD#) останавливает обращение к памяти, не отключая при этом само устройство. По сути HOLD# - это запрос шины, на что хост отвечает подтверждением HLDA (высокий уровень), но чтобы не тратить время на обмен любезностями, в схемах его сразу подымают через резистор к шине +3,3v. Такая архитектура используется для построения систем с одним контроллёром, и рядом Slave-устройств.

Обмен начинается с подачи мастером 8-битного кода-команды по линии(MOSI). При операциях записи, за кодом команды следует адрес ячейки, и только потом - байты данных. Итого, транзакация состоит из трёх частей. Операция чтения происходит аналогично, только после приёма адреса, по линии(MISO) начинается вывод данных из SPI-Flash.

В шинных транзакациях, данные передаются сдвиговым регистром (последовательно) старшим битом вперёд, причём сразу в обоих направлениях. Поэтому в характеристиках м/схем указывается удвоеная пропускная способность - при частоте 75 МГц, спобность 150 Мбит/сек (150/8 = 18,7 Мбайт/с). Принцип отображён на рис.ниже:

Нажмите на изображение для увеличения
Название: spi.gif
Просмотров: 1640
Размер:	14.1 Кб
ID:	4761

Нужно сказать, что это не единственный способ подключения двух чипов к хосту - производитель вправе сам выбирать организацию и способ их переключения. Например, всё начиналось с обычного тумблера, при помощи которого переключалась линия(CS#). Когда main отправлялся к праотцам, юзеру достаточны было щёлкнуть этим переключателем, и загрузка происходила с резервного чипа BIOS. Хоть вариант был и топорный, зато безотказный!

Сейчас-же, чтобы автоматом запустился бэкап - на 'мэйне' обязательно должен быть живой загрузчик и не совпадать контрольная сумма основного блока. Такой подход отталкивает саму идею Dual-BIOS на второй план. Остаётся только гадать, зачем разработчикам понадобились такие выкрутасы..

Встречались и схемы с последовательным соединением чипов, как на схеме ниже.
Поскольку в интерфейсе SPI данные передаются сразу в обе стороны (двусторонний обмен по разным линиям), то для записи в 'main' достаточно продублировать команду 'backup'. В этом случае, фактически данные выталкиваются из второго чипа(В), в первый(М):
Code
1
2
3
4
5
6
7
8
9
10
11
     +----CS(0)-->>--+
 ____|___          __|___
|   MISO |<-------| MISO |
|        |   +--->| MOSI | Main
|        |   |    |______|
| I C H  |   |     ______
|        |   +-<--| MISO | 
|   MOSI |------->| MOSI | Backup
|________|        |______|
     |               |
     +----CS(1)-->>--+
Как видим, это тоже хороший вариант, но из-за громоздкости реализации, данная схема не прижилась. Сейчас почти во-всех системах применяется первый вариант с шинной архитектурой. В ней, все выводы кроме CS# и WP# соединяются между собой. Рассмотрим тонкости её реализации..


Физическая разводка

Как говорилось выше, мастером является встроенный в южный мост SPI-контроллёр. На рис.ниже отображены его пины, и в квадратных скобках указаны листы схемы (sheets), на которые идут эти выводы. Видно, что все/они уходят к листу[26], где представлена распиновка самих чипов BIOS. Выделяется только пин(CS#), который помимо листа[26] ссылается ещё и на лист[24]:

Нажмите на изображение для увеличения
Название: ich.png
Просмотров: 2035
Размер:	29.7 Кб
ID:	4762

Здесь нет ничего особенного - одноимённые пины MISO,MOSI,CLK,HOLD обоих чипов замыкаются, и идут напрямую к контроллёру. Но почему пин(CS#) контроллёра уходит ещё и к листу[24]? Вот тут-то и начинается самое интересное..

Как оказалось, чипом 'backup' управляет не ICH, а контроллёр 'SIO 8718F', его схема показана на листе[24]. Помимо прочего, внутри SIO находится т.н. сторожевой таймер 'WatchDog', играющий чуть-ли не главную роль в реализации технологии Dual-BIOS. В задачи этого таймера входит отсчёт определённого интервала времени (в данном случае около 2-сек), по истечении которого схемы таймера подают в чипсет сигнал сброса 'Reset'. Подразумевается, что контролирующее работу этого таймера устройство (здесь 8718F), должно сбрасывать таймер в нуль, до истечении заданного промежутка времени.

Нажмите на изображение для увеличения
Название: ich_0.png
Просмотров: 1938
Размер:	32.4 Кб
ID:	4763

Dual-BIOS ставит перед разработчиком следующие задачи:

1. Необходим триггер (Main/Backup), от состояния которого зависит режим старта: 0=Main, 1=Backup.

2. Обязанности адресного дешифратора, управляющего доступом к ROM, расширяются. Он должен обеспечить выбор одной из двух м/схем, которая будет размещена в верхнем диапазоне системной памяти 0xFFFFFFFF минус размер ROM-BIOS. Выбор осуществляется в зависимости от состояния триггера Main/Backup.

3. Необходимо реализовать алгоритм управления триггером и рестарта платформы для запуска Backup. При первом старте, триггер устанавливается в '0' и выбирается M-BIOS. Если его содержимое достоверно, POST выполняется обычным образом. Если Main кривой, триггер переключается в '1' и генерируется сигнал сброса. ЦП повторно начинает POST с адреса FFFFFFF0h, но теперь уже на адресный диапазон отображается Backup.
Триггером управляет таймер 'WatchDog', который после сброса начинает отсчёт 2-секундного промежутка времени. При успешном старте Main, фрагмент кода POST должен остановить таймер. Если Main искажён и произошла потеря управления, ответственный за остановку таймера фрагмент не будет выполнен и сторожевой пёс 'WatchDog' переключив триггер Main/Backup в состояние '1', сгенерит сигнал сброса Reset.

На следующем рисунке изображена структурная схема соединения SPI-контроллёра с двумя м/схемами биос. Нужно отметить, что таким образом сигнал выбора чипа(CS#) коммутируется только в 2-чиповой архитектуре. Если-же чип один, то линия(CS#) подключается напрямую от южного моста(ICH) к м/схеме SPI-Flash:

Нажмите на изображение для увеличения
Название: dual.png
Просмотров: 1135
Размер:	4.0 Кб
ID:	4764

Таким образом, поддержку технологии Dual-BIOS обеспечивают следующие узлы контроллёра IT8718F:

1. Триггер Main/Backup, определяющий тип старта платформы;
2. Демультиплексор сигналов(CS#), выбирающий одну из двух м/схем BIOS;
3. 'WatchDog' таймер с формирователем сигнала сброса CPU.

Продолжение следует...
Метки bios, система
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 0
Комментарии
 
Новые блоги и статьи
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru