Начиналось всё довольно банально - с покупки новой видеокарты Radeon 9800 128 Мб (после прошлого неудачного опыта с 9500 сразу решил отказаться от "уполовиненных" вариантов). Естественно возник вопрос: как? Вопрос во что был уже решён. Конечно, в ХТ и, бесспорно, перепрошивкой. По мере накопления биосов стали обращать на себя внимание некоторые совпадения (в основном P/N и в датах), при разнообразии названий. По сравнении их друг с другом обнаружилась масса интересных моментов.
Момент первый. В сети гуляет много одинаковых биосов под разными названиями. Нередко на форумах звучала такая фраза: "Вот с биосом *** у меня о-го-го стало, а до этого был ***, так с тем эх :(". При этом давались ссылки на один и тот же биос с разными названиями. Подобные результаты я решил относить к разряду непознанного (полтергейст там, НЛО всякие:)).
Момент второй. В сети гуляет ещё больше биосов модифицированных. В модификациях принимают участие частоты ядра/памяти, количество локальной видеопамяти, Dev ID, ASIC (второй полубайт), TV-out, название чипа, реже тайминги и т.д. Причём довольно много модифицированных биосов распространяются со страницы весьма известного сайта.
Еще в прошлом году народ в форумах сообщал о появлении то тут, то там мифического 9800ХТ с 128 Мб видеопамяти, хотя подобных решений, насколько мне известно, не существовало. И что интересно (да ослепнут мои глаза:)) сам видел их в прайсах некоторых фирм. Но это пускай останется на совести и в компетенции менеджеров, составляющих прайсы.
Момент третий. Народ увлёкся поисками "самого производительного" BIOS. И вот уже в который раз цитирую избитую фразу, что биос под каждую видеокарту подбираются индивидуально, поэтому ситуация "что Иванову хорошо – то Петрову PCI" вполне реальна. "Быстрым" биос делают преимущественно тайминги памяти, а они, в свою очередь, зависят от производителя, времени доступа и т.д. (см. даташит к соответствующей маркировке чипов памяти).
Момент четвёртый. Иногда в форумах задаётся вопрос: "Как через BIOS управлять напряжениями на видеокарте?". Ответ - никак: изменение напряжения через BIOS на Radeon'ах невозможно, по причине отсутствия соответствующих микросхем на карте. Подобные манипуляции поддерживаются картами NVIDIA, но в ограниченном объеме (лишь незначительное увеличение напряжения, до +0.1В).
Эти, и некоторые другие, моменты побудили меня к обобщению и публикации материала.
Данная статья носит преимущественно описательный характер, в дальнейшем мы подойдем к практическим вопросам, связанным с BIOS для Radeon.
Для изучения и изменения биос вам могут понадобиться следующие инструменты:
- Любой шестнадцатеричный редактор (я использую winhex 11.26 SR-6)
- RaBit 1.2 - 1.3 или/и RadEdit 1.1D
- IDA Pro
- rambios_1.5 и/или ATI Tray Tool (желательно последний).
- ATI_flashrom_2.37
1. Размер. Итак, характерный размер биос для семейств R3х0 - 52 Кб (встречаются также 44 Кб, 48 Кб, 56 Кб, 64 Кб, но подобное разнообразие - удел преимущественно ядер R2х0). Хотя есть и исключение - у Radeon 9550 размер BIOS составляет 48 Кб, а у 9800ХТ - 64 Кб (преимущественно ASUS, Dell с VIVO). У R420: 54 Кб у X800 Pro, 64 Кб у X800 ХТ (с VIVO). Другое дело, что размер действительных данных в файлах больше 52 Кб может не доходить и до 50 Кб; всё остальное место занимает "мусор" (FF).
2. Дата. Расположена в строке 0х50, вид: 2003/02/27 16:12. У R420 вид: 05/07/04,15:51:53 последней цифрой залазит в строку 0х60. Легко и по желанию изменяемый параметр. Доверять особо не следует.
3. Заголовок (Description, Title). Начало - со строки 0х80. У большинства оканчивается в строках 0х100 - 0х120. Имеет вид:
У R420, за счёт переноса предупреждения о неподключенном кабеле в эту область, Description опускается до строки 0х1В0.
В этой области содержится информация о семействе, типе памяти, чипе, P/N, версии и ревизии прошивки и т.д. Подчеркну, что доверять содержимому Description нужно осторожно. Эта область не влияет на функционирование BIOS, следовательно и написано там может быть всё, что угодно. Пример тому - BIOS ATI.9800XT.256.Samsung.bin. Это модифицированный файл r98x256d.f1 с сайта Gigabyte. Добавлено: R360 Hynix DDR BIOS W THERMAL CONTROL P/N 113-A18802-104. Затёрты поля Sub Vendor ID Sub, System ID, 0хCE00 - 0хCECB.
4. P/N и версия BIOS. Опознание производителя. Большинство файлов в сети попадаются безымянными. Т.е. ни словом, ни байтом не указывающие на фирму - виновницу вашего торжества (или головной боли). Вот типичный пример одного из них: RADEON 9800 113-A07502-106 BIOS ATI Technologies Inc. BK-ATI VER008.015.048.000 njrq4461.815 v611.
Как исключение привожу "улики", замеченные в биосах некоторых производителей.
- ABIT (ABIT Computer Corp. Subvendor ID 147B) - примерная строка: RV360 PRO A198... RAAB616H.X01.
- У ASUS (ASUSTeK Computer Inc, Subvendor ID 1043) P/N характерен и имеет вид 113-AA00701-206-AS ASUS A9800XT v4E4A.8.15.41.AS30 или 113-AA00800-201-AS.
- Club3D (C.P. Technology Co Ltd, Subvendor ID 148C) указывает в поле P/N - B815411.11250...
- Dell (Dell Computer Corporation, Subvendor ID 1028) - прошивки от данного производителя идут с буквой D в версии VER008.017D.026.000...
- ELSA (ELSA GmbH, Subvendor ID 1048); заявляет о себе прямо: ELSA FALCOX 980FX PRO BK-ATI VER008.004.008.019.BR jhbf2527.ela v611.
- FIC (First International Computer Inc., Subvendor ID 1509): FIC-A97 Hynix BGA/DDR 4x32/128MB - E275/M540
- У Gigabyte (Giga-byte Technology, Subvendor ID 1458) на месте P/N фирменная клинопись: R98X256D F1 VER008.015.028.000 qagba175.f2.v611. Это можно перевести как Radeon 9800XT 256 Мб.
- GeCube (INFO-TEK Corp., Subvendor ID 18BC) тоже оригинальничает - GC-R96XTG-C3 S1G VER008.015.041.001 rdGC1a34.S1G v611.
- HIS (Hightech Information System Ltd. Subvendor ID 17AF) можно определить по забавной строке R98004P SamSung(E) Channel CD BIOS
- У Sapphire (SuperGrace/PC Partner, Subvendor ID 174B) P/N имеет вид P/N 113-PC2910-06...
- Tyan (Interactive Computer Products, Inc. Subvendor ID 1701) - следы от данного производителя замечены в ревизии - ...nhbf2159.tya v611.
- XpertVision, они же Palit (Yuan Yuan Enterprise Co., Ltd. Subvendor ID 12AB) отличаются строкой RADEON 9800 SERIES DDR 4M*32 VGA BIOS ...ah432P01.SAM
По ревизии (первые буквы): 9800ХТ - ...nj, 9800PRO - ...nh (nj - R360), 9800 - ...ni, 9800SE - ...ah, 9700 - ...ne, nd, 9700PRO - ...nd, 9600XT - ...ra, (rd - GeCube), 9600PRO & 9600 - ...pa, 9600SE - ...qa, 9550 - ...sa, 9500PRO - ...ne, 9500 - ad. 5. Кроме всего прочего, о производителе поведает вам Subvendor ID (будет рассмотрен вместе с Subsystem ID). Список вы можете взять здесь: Vendors ID или здесь Vendor ID. По этому значению производителя определить можно несколько чаще. Правда, и изменить его гораздо легче.
Поля Subvendor ID и Subsystem ID (необходимы для установки драйверов от конкретного производителя и под конкретную модель устройства).
Первое и главное значение Subvendor ID расположено в строке 0х70 (байты 6 и 7). Именно оно и следующее за ним значение Subsystem ID (байты 8 и 9) определяют, будут ли установлены "фирменные" драйвера (о наличии таковых можно осведомиться в .inf файле соответствующего каталиста или на сайте производителя) или драйвера из разряда series.
Второе значение Subvendor ID и Subsystem ID стоит на 1-2 строки ниже Description (у R420 - на 3-4 строки). Смена этих и последующего значения не приводит к смене драйверов.
Последнее значение Subvendor ID можно найти по логу RaBit (PCIR zone offs).
6. Версия чипа. В файле биос, в трех-четырех местах, стоит обозначение версии чипа, которое выглядит так: R360, R350, R300 так: RV350LX, V350 или так ATI Technologies Inc. R360.01.00 (третье или четвёртое значение). У 9600 и 9550 в строках 0х160 - 0х1В0 встречается следующая надпись: ATI RADEON 9600 PRO, вне зависимости от того, это 9550 или 9600ХТ.
Причём третье-четвертое значение, стоящее ближе к концу файла, очень часто забывают поправить при модификации BIOS :).
7. Определение производителя памяти. В Description может встречаться прямое указание на производителя: Hynix DDR BIOS, Samsung DDR BIOS, Infineon DDR BIOS. Только в одном месте - в начале. Пока указание на производителя памяти совпадала со значениями рассмотренными ниже.
Для определения производителя можно использовать следующие значения. Ориентир для них - значения МС_CNTL/МС_SIZE, строка имеет вид 22 00 00 00 80 00 00 (R300-350, 128 Мб). Расположено в строках 0х190 - 0х1F0. И сразу за ним идут искомые значения. Для памяти Hynix 05 57 78 78... (05 77 77 68...). Для Samsung, Infineon, Ethrontech - 00 30 20 A0 A2 33 51 30 60...
Причём у биосов "под Hynix" далее следуют значения характерные для биосов "под Samsung". Этим, наверное, и объясняется факт, что эти биосы могут работать со всеми типами памяти (присылают, указывая оба типа памяти). А вот биосов "под Samsung", снятых с памяти Hynix видеть не доводилось. Продолжение материала, в котором рассмотрены аспекты модификации BIOS: BIOS для ATI R3x0. Часть 2, практическая.
© dvsh