BIOS-моддинг


Настройка PCI-регистров


Конфигурирование чипсета осуществляется через специальные регистры, доступные через шину PCI. При загрузке системы BIOS настраивает процессор, контроллер системной шины, контроллер оперативной памяти и всю прочую периферию в соответствии с настойками, выбранными в BIOS Setup. Однако, практически ни один BIOS не дает доступа ко всем настройкам или умышленно ограничивает диапазон доступных значений. Как быть, что делать?

Запускаем Award BIOS editor, заходим в System BIOS, находим вкладку "Chipset Registers" и открываем документацию на чипсет. Где-то там будет раздел "PCI Configuration Registers" или что-то в этом роде. Для каждого из регистров будет указано устройство (device), к которому он "подключен"), номер функция (function) и номер самого регистра, называемый смещением (offset). Все регистры 8-битные, однако, несколько последовательных регистров могут объединяться в слова или даже двойные слова.

Сравнение конфигурационных возможностей чипсета с BIOS Setup показывает, что часть настроек в ней отсутствуют. Даже в заблокированных возможностях (о которых мы уже говорили выше) их нет! В частности, мой любимый AMD 761 поддерживает намного больший диапазон таймингов, чем BIOS. В частности, чтобы установить tPR в 1 такт (BIOS по умолчанию ставит 3 такта и не дает это умолчание изменять), необходимо модифицировать 8 и 7 биты регистра Dev 0:F0:0x54, присвоив им значение 2 (или "10" в двоичной нотации). Остальные биты не трогать! А как это сделать? Необходимо наложить маску (mask), которая в данном случае будет выглядеть так: "XXXX XXX1 1XXX XXXX". Как видно, 8 и 7 бит установлены в единицу, остальные помечены знаком "Х", указывающим BIOS'у что данный бит необходимо оставить без изменений.

 

Рисунок 9 страничка из документации на чипсет, описывающая конфигурационные регистры

Запись "Dev0:F0:0x54" обозначает: Device 0:Function 0:Register 0x54. На самом деле, этих регистров целых два. Регистр 0x54 хранит младшую, а 0x55 — старшую половину слова. Следовательно, в 0x54 необходимо занести 80h ("10.00.00.00"), а в 0x55 – 01h. Соответственно, в первом случае маска будет равна 80h ("1X.XX.XX.XX"), а во втором 01h.




Начало  Назад  Вперед



Книжный магазин