Сегодня разбирался с возможностью записи SYSTEM BIOS и OPTION ROM в одну единственную микросхему на материнке.
Напомню, что к меня на матери сокет для биоса подписан как 2764/512, т.е. предполагается возможность использования микросхем ёмкостью 64кб(8кБ) и 512кб(64кБ).
Сразу сделал следующее: взял 27с512, записал в начало GLaBIOS (8кБ), сразу за ним записал заранее подготовленный XUB, остальное заполнил нолями. Вставил в материнку и, ожидаемо, тишина.
Ладно, глянул даташиты: 27с512 имеет дополнительных три адресных пина по сравнению с 27с64. Вооружившись мультиметром обнаружил, что два из этих дополнительных адресов идёт на шину через перемычки (третий - непосредвтенно на шину, конкретно какой бит - не скажу, если интересно - могу проверить). При чём эти две перемычки были както странно установлены: одна - замкнута, одна - разомкнута. Хотя, чего тут странного, учитывая первоначальное состояние платы.
ОК. Замыкаю вторую перемычку, запуск - тишина. Расстроился. Попробовал все возможные комбинации этих двух перемычек - всё то же: тишина.
Полез ещё раз смотреть эти ваши интернеты.
1.
Википедия: После включения персонального компьютера (ПК) на базе процессора семейства Intel 80x86, его процессор начинает работу в реальном режиме адресации с сегментной организацией и выполнение инструкций процессора с адреса
FFFF:0.
Об этом же написано прямо в коде GLaBIOS'a:
Код: Выделить всё
;----------------------------------------------------------------------------;
; F000:FFF0: 8086 power-on reset vector
;----------------------------------------------------------------------------;
; The x86 CPU begins code excution at hard-coded address F000:FFF0.
; This is that address. Welcome to the party!
;----------------------------------------------------------------------------;
2. Согласно
этому адресное пространство для BIOS начинается адресом 0x000F0000 и заканчивается адресом 0x000FFFFF (всего 64 KiB в конце мегабайта).
3. В
исходниках GLaBIOS:
Код: Выделить всё
OPT_ROM_END = 0FE00H ; Option ROM scan ending address (must be xx00)
Тут надо понимать, что 0FE00H это сегмент, т.е. последний адрес, по которому BIOS будет искать магическое слово OPTION ROM, будет FE00:0 (начинать будет как положено - с C800:0).
Всё это намекает на то, что системный BIOS должен быть в конце адресного пространства. ОК, перешиваем 27с512 так: в конец кладём SYSTEM BIOS, в начало - XUB, остальное - ноли. Ставим в мать и оно работает!
Стоит ещё заметить, что очерёдность загрузки OPTION ROM'ов идёт по возрастанию адресов. Поиск магического слова 0AA55H ведётся каждые 2кБ. Соит это учитывть, если нужно сотворить что-то невероятное с несколькими ROM'ами.