Доброго дня, коллеги!
Имеем следующего зверя - AEC-6910. Построено это чудо на базе чипсета i855GME.
Предыстория такова: необходимо вывести графику под FreeBSD и Xorg на панель с соотношением сторон 16:9. Драйвер видео i810(4) поддерживает работу только с режимами, прописанными в VGA BIOS. Нужно ли упоминать, что при просмотре утилиткой /usr/ports/sysutils/915resolution списка "зашитых" режимов, необходимых не обнаружилось?
В итоге встал перед выбором: либо исправлять драйвер i810, либо править BIOS. После прочтения массы материалов на этом сайте и форуме, остановился все же на втором, т.к. вопрос показался вполне решаемым.
Для генерации VGA BIOS для интеловских чипсетов с интегрированным графическим ядром применяется связка из Intel Embedded Graphics Drivers Configuration Editor (IEGD CED) и Open Watcom C/C++. Это ПО позволяет скомпилить бинарник VGA.BIN, который, как написано в официальном мануале, интегрируется в системный BIOS материнской платы. Но вот как его туда корректно интегрировать - Intel не сообщает. Рекомендует обращаться к производителю BIOS или MB. Несмотря на то, что партию контроллеров AEC-6910 мы покупаем большую, производитель ничего толком сказать не смог. Наверное, сам поразмещал OEM-заказы конторам-однодневкам... Пришлось вот лезть в инет и искать, как обойти алчных производителей)) Впрочем, это все лирика.
Практика же заключается в следующем: из материнки вытащен BIOS, при помощи вышеуказанного ПО сгенерирован VGA.BIN, теперь дело за малым - объединить
Вот что имеем:
C:\Award\CBROM>cbrom original.bin /d cbrom V1.55 [10/12/05 Release] (C)Phoenix Technologies 2001-2005 ******** original.bin BIOS component ******** No. Item-Name Original-Size Compressed-Size Original-File-Name ================================================================================ 0. System BIOS 20000h(128.00K) 13A16h(78.52K) 8150P15A.BIN 1. XGROUP CODE 0CC50h(51.08K) 08902h(34.25K) awardext.rom 2. ACPI table 03CDFh(15.22K) 01857h(6.08K) ACPITBL.BIN 3. EPA LOGO 0168Ch(5.64K) 0030Dh(0.76K) AwardBmp.bmp 4. YGROUP ROM 0C1B0h(48.42K) 04D2Ch(19.29K) awardeyt.rom 5. GROUP ROM[ 0] 04720h(17.78K) 02040h(8.06K) _EN_CODE.BIN 6. VGA ROM[1] 10000h(64.00K) 07DD4h(31.46K) MTG_3148.DAT 7. GROUP ROM[ 5] 01A00h(6.50K) 00C65h(3.10K) M09_3148.BIN 8. GV3 01CDDh(7.22K) 00B74h(2.86K) PPMINIT.ROM (SP) NCPUCODE 18800h(98.00K) 18800h(98.00K) NCPUCODE.BIN Total compress code space = 4B000h(300.00K) Total compressed code size = 46995h(282.40K) Remain compress code space = 0466Bh(17.60K) ** Micro Code Information ** Update ID CPUID | Update ID CPUID | Update ID CPUID | Update ID CPUID ------------------+--------------------+--------------------+------------------- SLOT1 01 0692 | SLOT1 02 0694 | SLOT1 45 0695 | SLOT1 07 0695 SLOT1 06 06D0 | SLOT1 09 06D1 | SLOT1 10 06D2 | SLOT1 17 06D6 SLOT1 20 06D8 | SLOT1 08 06E0 | SLOT1 0C 06E1 | PPGA 0C 06E1 SLOT1 26 06E4 | SLOT1 39 06E8 | PPGA 53 06EC | SLOT1 50 06EC SLOT1 01 0692 | SLOT1 02 0694 | SLOT1 45 0695 | SLOT1 07 0695 SLOT1 06 06D0 | SLOT1 09 06D1 | SLOT1 10 06D2 | 0000 000 0 0000 0000| 0000 0000| ^C
Вроде бы все красиво: только что сгенерированный VGA.BIN и несжатый VGA ROM (он же MTG_3148.DAT) имеют одинаковый размер - 64К, однако если глянуть на их внутреннюю структуру, то вылазят кое-какие несоответствия. Например, в "зашитом" в системный BIOS модуле часто встречаются plain-text сигнатуры производителя вроде "Интел инсайд" или "аллах акбар" (шутка), однако VGA.BIN никаких подобных "штучек" внутри не имеет - чисто бинарник, без всяких там стихов внутри. Из этого вылазит одна неприятность, из-за которой и стопорнулся: размер сжатого MTG_3148.DAT - 31.46K, а вот сгенерированный VGA.BIN сжимается при помощи LHA до 53К (сказываются различия в структуре). Генерировать пробовал много раз, с разными опциями - степень сжатия всегда оставалась порядка 84%, то есть результирующий размер сжатого файла при любых установках нового VGA BIOS оставался в пределах 53К.
Если присмотреться, то становится очевидным, что даже с учетом замены VGA ROM и удаления EPA и GV3 (кстати, не особо уверен, что его можно удалять) места на новый VGA ROM не хватит.
Кроме того, есть несколько вещей, которые смущают:
1. При перечислении Micro Code Information CBROM вываливается с ошибкой - к чему бы это? (ОС - WinXP SP2 со всеми обновлениями и исправлениями). CBROM версии 1.55, т.е. - последний, предыдущие версии вообще не видят NCPUCODE b некорректно определяют GV3, так что применять их смысла нет. Кстати, предыдущие версии и не перечисляют ничего...
2. При помощи CBROM невозможно ни извлечь, ни удалить NCPUCODE.
3. CBROM учитывает размер NCPUCODE в Total compressed code size при том, что NCPUCODE не сжат (рядом с именем модуля я не нашел характерных для lha заголовков, да и сам CBROM определяет этот модуль как non-compress cpu code.
4. Total compress code space составляет всего 300К, что как бы маловато для общего размера в 512К (4-Мб флешка). Ведь встречаются и 400К свободного места...
Собственно, вопросы, как всегда, очевидны: кто виноват и что делать?)) А если серьезно, то хотелось бы узнать - нет ли возможности каким-либо образом сжать NCPUCODE? Ведь места он занимает ооочень немало. Ну и может быть посоветуете, что можно безбоязненно выбросить из прошивки, чтобы на новый VGA ROM хватило места? У девайса есть несколько не особо нужных интегрированных устройств (PCMCIA, CF, watchdog и несколько последовательных портов, которые реализованы отдельными чипами, на них даже в BIOS Setup отдельная страничка выделена) - и ни одного явно предназначенного для них модуля!!!! То есть я даже не знаю, чего бы такого грохнуть... Может быть, есть еще какой-то способ увеличить доступное для записи модулей место, а то 300К смотрится смешно. И, до кучи, кроме VGA BIOS хотелось бы еще туда загнать LAN BOOTROM (вдохновился парой веток на форуме) - загрузка по сети в принципе нужна, но не реализована в существующей прошивке. Только вот место, место, место...
Добавлю, что флешка на маме - 49LF004A, установлена в колодку PLCC, так что заменить ее не составит труда, если угроблю. Правда, не на ходу - при разборке девайса камень и северный мост отрываются от корпуса-радиатора, следовательно при включенном девайсе до BIOS не добраться. Ну это мелочи - сделаю парочку копий (программатор и флешки имеются), так что экспериментов можно не бояться.
Заранее всем благодарен за помощь.
Да, спасибо, забыл отписаться. Процедура завершилась... полным провалом)) Нет, с точки зрения модификации BIOS все класс. Винда запускается, линукс запускается, фря - тоже, но только в консоли. Микрокоды расковырял, хотел бы написать тулзу для работы с ними, но нет у меня базы данных по идентификаторам процессоров, а то было бы классно и, думаю, кое-кому пригодилось бы.
Да, так вот, для работы графики с IEGD-VBIOS нужны свои драйвера. Они есть для Linux и win32, но для FreeBSD их нет. Так что понаблюдав консоль, поняв, что это не то, что нужно, занялся поисками исходников простого Video BIOS для интегрированного видеоядра Intel, а не IEGD. Они точно есть, ведь как-то этот, заранее прошитый BIOS сгенерировали... Трясу пока поставщиков, но что-то надежды на усепх все меньше и меньше... Никто не сталкивался?
reactivated.net/weblog/archives/2007/04/widescreen-intel-video-bios-hack-n...
geocities.com/stomljen/
Добавлено спустя 6 минут 48 секунд:
Для Intel740 в своё время бродили исходники BIOS
Добавлено спустя 4 минуты 38 секунд:
download.intel.com/design/intarch/specupdt/30839205.pdf
Добавлено спустя 5 минут 1 секунду:
intellinuxgraphics.org/documentation.html
Дрессируем коров
Отправить комментарий