| Предыдущая тема :: Следующая тема |
| Автор |
Сообщение |
RRA
Modbined&Cbromed

Зарегистрирован: 17 Июл 2005 Сообщения: 45
Откуда: Мск обл
|
|
Попалась вот в руки экзотика на чипсете NEC
Производитель материнки Eagles
Описывать не буду, уже подробно описывали - она на форуме уже попадалась
http://www.rom.by/phpBB2/viewtopic.php?p=13120
и вот здесь поругали её BIOS
http://www.rom.by/phpBB2/viewtopic.php?t=5123
Проблема в какой-то индивидуальной непереносимости к видеокарте Asus V3000 (Riva128) PCI
Если вставить ISA видеокарту то материнка стартует и грузится ОС
Если же поставить PCI то выдает ошибку видео (8 коротких пиков спикера)
Причем как мне кажется проблема конкретно с этой видеокартой, если порыть интрнет то у людей с другими PCI картами работает
Сначала думал что есть несовместимость версий PCI - на видео то она PCI 2.1 а на материнке хрен знает, но если загрузиться при вставленной ISA и PCI то операционка распознает её корректно и проблема остается лишь в конфликте 2х видеокарт
Тоесть получается контроллер PCI работает и видеокарта работает, но POST с ней проходить BIOS не желает
BIOS у материнки собственный, меню нестандартное, словами не передать
Все что по теме (настройки контроллера в том числе и Assign IRQ for PCI VGA) уже перепробовал
Вот теперь надо решить вопрос кто виноват
Либо BIOS материнки не находит видео
Либо BIOS видеокарты особенный и не хочет подгружаться
В любом случае проблему надо решить одну - чтобы до ОС увидела видеокарту PCI как единственную
Либо нужно исправлять несовместимость и заставить видео проходить POST
Либо заставить пройти POST с ошибкой, чтобы ОС при загрузке подцепила видеокарту (на другой материнке если из видео вытащить флешку то POST пройдет с ошиибкой и пойдет дальше, а когда очередь дойдет до ОС она уже сама её проинициализирует)
Сейчас при ошибке POST останавливается и дальще грузить систему не хочет, что при этом он пишет к сожалению не увидишь
Поменять видеокарту не могу - именна эта нужна
Поменять материнку тем более - её приемущества в том что она очень маленькая (21х16), и в полном обвесе (MB, P1-166, 32MB SDRAM, Video, HDD) требует только +5V при этом ничего не греется и потребляет при этом всего 6Вт - такого больше не найти!
Помогите советом плиз, очень уж хочется поднять, итак уже с того света её вытащил (битый ШИМ, раскачка, мосфеты, отломанная панелька)  |
|
| Вернуться к началу |
|
 |
Baza
POLUNDRA!!!

Зарегистрирован: 16 Май 2004 Сообщения: 2195
Откуда: С-Петербург
|
|
А видяха с видео входом и выходом?
вариант : скачать у асуса последний биос и обновить, мож. там чего пофиксили. _________________ Либо нечему гореть, либо нечем поджечь! |
|
| Вернуться к началу |
|
 |
geodimetr
NOA BIOS

Зарегистрирован: 31 Авг 2004 Сообщения: 1085
Откуда: SPB
|
|
Ну, сначала стоит определиться с PCI вообще - рассказы о PCI-видеокартах на такой мамке у соседа - это одно, а работа PCI-шины с видео на КОНКРЕТНОМ ЭКЗЕМПЛЯРЕ, плоде долгой и сложной реанимации к тому же - это другое.
-------------------------------------------------------------------
Воткнуть туда самую банальную S3 TRIO 64 - благо, этого "добра" на любом развале по рублю ведро найти можно - и убедиться в нормальной инициализации PCI видео интерфейса как такового. Ну, а после этого... искать вариант чуть другой, но похожей по параметрам видеокарточки будет несложно. Начав, как и предложил Basa, c перешивки видеобиоса.
А об индивиндуальной непереносимости некоторыми мат. платами ASUS-видях серий 3000-3100-3400 известно, сам на такие грабли наступал. Только давно это было, фамилий мат. плат уже не помню...
В Вашем случае наверняка возможен и другой вариант: поспрошать биосоковырятелей поподробнее, КАК ИМЕННО на первопневых мамках было реализовано опознание видеокарты при POST-проверке - наверняка по-тупому, без чтения ее Биоса и прочих P&P, которых тогда еще фактически не было. Значит, возможно "эмулировать" видеокарту в PCI-слоте (дополнительными перемычками ?). Вопрос только, не получим ли при старте "черный экран". _________________ У вас прекрасные дети ! Но все, что вы делаете РУКАМИ - никуда, никуда не годится !
(из интервью, взятого у японской делегации на бескрайних просторах {ex}-USSR)
Последний раз редактировалось: geodimetr (Вт Авг 22, 2006 12:05 pm), всего редактировалось 1 раз |
|
| Вернуться к началу |
|
 |
icbook
Эксперт

Зарегистрирован: 27 Окт 2005 Сообщения: 1160
Откуда: Киев
|
|
| Цитата: | | Поменять видеокарту не могу - именно эта нужна. Поменять материнку тем более - её приемущества в том что она очень маленькая (21х16), и в полном обвесе (MB, P1-166, 32MB SDRAM, Video, HDD) требует только +5V при этом ничего не греется и потребляет при этом всего 6Вт - такого больше не найти! |
Вы выбрали не самый подходящий объект для поклонения
Инициализация видео - один из самых сложных этапов POST. Особенно, в AMIBIOS. На Вашей плате - одно из нелегальных портирований одного из старых ядер AMI.
| Код: | 41-0000-000000-00101111-070791-
000-0-0000-00-00-0000-00-00-000
000-0-0000-00-00-0000-00-00-00-0 |
|
|
| Вернуться к началу |
|
 |
Babasha
Modbined&Cbromed

Зарегистрирован: 10 Авг 2005 Сообщения: 34
Откуда: Donetsk (Ukraine)
|
|
| RRA писал(а): | Попалась вот в руки экзотика на чипсете NEC
Производитель материнки Eagles
Описывать не буду, уже подробно описывали - она на форуме уже попадалась |
Не знаю имеет ли это чудо какое-либо отношение к фирме NEC (скорее всего нет, во всяком случае 3д-аксель Nec PowerVR PCI на этой жестянке так и не завелся)... Единственное что я понял после недели траханины с этой мамкой - PCI там реализован АБСОЛЮТНО КРИВО, PCI-Busmastering не поддерживается. Удел этой материнки офисные тачки с видеокартами Trident и CirrusLogic из самых простых. |
|
| Вернуться к началу |
|
 |
RRA
Modbined&Cbromed

Зарегистрирован: 17 Июл 2005 Сообщения: 45
Откуда: Мск обл
|
|
| Baza писал(а): | А видяха с видео входом и выходом?
вариант : скачать у асуса последний биос и обновить, мож. там чего пофиксили. |
Да имеено она, VIVO с флипсовским EVIP SAA7111A
Сейчас зашит биос 1.51B еще точно есть 1.51C и если интернет не врет 1.51H
Зашить попробую бязтельно, nv3flash уже есть, дело только за биосом
| geodimetr писал(а): | | Ну, сначала стоит определиться с PCI вообще - рассказы о PCI-видеокартах на такой мамке у соседа - это одно, а работа PCI-шины с видео на КОНКРЕТНОМ ЭКЗЕМПЛЯРЕ, плоде долгой и сложной реанимации к тому же - это другое. |
Ну что делать, я не могу даже инфу добыть, производители вообще такого не знают
Реанимация то не сложная, ну у панельки ножка обломилась, бывает. А потом паленый AMD с кз по ядру был вставлен и утянул за собой весь ядровый питальник
Это я к чему - повреждения получали цепи, мало имеющие отношение к PCI
| geodimetr писал(а): | | Воткнуть туда самую банальную S3 TRIO 64 |
Завтра так и сделаю, пока только PCI сетевуху поставил - работает
| geodimetr писал(а): | | В Вашем случае наверняка возможен и другой вариант: поспрошать биосоковырятелей поподробнее, КАК ИМЕННО на первопневых мамках было реализовано опознание видеокарты при POST-проверке - наверняка по-тупому, без чтения ее Биоса и прочих P&P, которых тогда еще фактически не было. Значит, возможно "эмулировать" видеокарту в PCI-слоте (дополнительными перемычками ?). Вопрос только, не получим ли при старте "черный экран". |
Ой, а вы ходили поссылкам вначале топика, там этот биос за биос не считают - вначале биоса переход на пустующую область
| icbook писал(а): | Вы выбрали не самый подходящий объект для поклонения
Инициализация видео - один из самых сложных этапов POST. Особенно, в AMIBIOS. На Вашей плате - одно из нелегальных портирований одного из старых ядер AMI. |
Посоветуйте альтернативу чтоли. Материнка маленькая очень и кушает мало, ИМЕННО это и нужно, долго мамку такого класса искал
| Babasha писал(а): | | Не знаю имеет ли это чудо какое-либо отношение к фирме NEC (скорее всего нет, во всяком случае 3д-аксель Nec PowerVR PCI на этой жестянке так и не завелся)... Единственное что я понял после недели траханины с этой мамкой - PCI там реализован АБСОЛЮТНО КРИВО, PCI-Busmastering не поддерживается. Удел этой материнки офисные тачки с видеокартами Trident и CirrusLogic из самых простых. |
Ну NEC точно имеет, нарисовал же маркировку на мосте
Не поддерживает BusMastering - ну и пусть, не мешает же это распознать видео-биос и передать управление на него
PCI видеокарта другого образца - это конечно многое даст, по крайней мере узнаем причину, но мне кажется что заработает, не зря же массовых жалоб нет, а ведь у всех стоит PCI
Что-тут все равно не так... |
|
| Вернуться к началу |
|
 |
apple_rom
Создатель

Зарегистрирован: 05 Май 2003 Сообщения: 1445
Откуда: Minsk
|
|
Не по наслышке зная про сабжевую видеокарту (у самого такая стояла не один год) ОДНОЗНАЧНО рекомендую успокоиться и искать материнскую плату на Intel. То есть даже на VIA сотоварищи проблемы практически гарантированы, а уж, на (опять же, не по наслышке знакомому) НЕКе - тем паче. При чем если с первыми еще можно было попытаться что-то исправить путем шаманских телодвижений, то с последним пространство маневра из-за отсутствия корректных виндовых драйверов под НЕК - минимально.
Итого - даже если каким-то чудом удастся уговорить нормально _стартовать_ подобную систему, то шансы ее нормальной работы под виндами - еще меньше, чем шансы уговорить ее показывать при загрузке.
Вывод. _Принципиальные_ проблемы несовместимости не позволяют рекомендовать использование матплат на подобных чипах практически ни для каких задач. Исключение, разве только - если нужен голый DOS. |
|
| Вернуться к началу |
|
 |
RRA
Modbined&Cbromed

Зарегистрирован: 17 Июл 2005 Сообщения: 45
Откуда: Мск обл
|
|
apple_rom Ну хорошо, допустим есть _Принципиальные проблемы_, но я не могу понять, что в данном случае мешает загрузке? Вот завтра я буду пробовать ставить целую горку различных видеокарт. Скорее всего большинство заработает, но почему тогда Asus отказывает?
Вам, бесспорно, хорошо знаком процесс инициализации видео, подскажите тогда по каким критериям биос может отказываться найти видео? Аппаратная несовместимость? Или совесем уж необычный флеш на видеокарте?
Может вы даже видели этот NEC BIOS, может даже просматривали содержимое, тогда просто подскажите как заставить систему работать БЕЗ видеокарты
Конечно я не вижу что сейчас выводится на экран, но больше чем уверен что стандартное "Press F1 to enter bios setup", причем никакой возможности пропуска ошибки и продолжения загрузки - вот что мне мешает
Ну и уж если получится заставить сие работать под ДОС то за Windows я ручаюсь. Сейчас проблема в том что хоть в Windows и видно видеокарту, ей мешает другая ISAшная
Если устройство будет одно (PCIAsus V3000) - то уже никакая совместимость\драйвера мне нужны не будут
Вся работа будет вестись сторонними утилитами, задача которых активировать чип SAA7111A и включить на видеокарте V-In и V-Out
Если уж не получится заставить материнку признавать видео, то хотя бы нужно как то заставить её грузиться не увидив видеокарты. Когда дело дойдет до загрузки Win, за ней вопрос не станет, ручаюсь
Знать бы алгоритм инициализации видео в этом NEC..... |
|
| Вернуться к началу |
|
 |
LiveR
2.0Mbit Patched


Зарегистрирован: 24 Окт 2005 Сообщения: 416
Откуда: SPb
|
|
А если попробовать видяху не к монику цеплять, а через видеовыход на телек? Может, хоть инфу об ошибке прочитать можно будет  _________________ Сидел, сижу и буду сидеть... на Windows 98 |
|
| Вернуться к началу |
|
 |
RRA
Modbined&Cbromed

Зарегистрирован: 17 Июл 2005 Сообщения: 45
Откуда: Мск обл
|
|
LiveR, видеовыход включится если на VGA она не обнаружит нагрузок по 75 Ом в виде монитора
Да и потом если материнка пищит 8коротких то видео биос она не нашла -> код не выполнился -> Регистры Riva пустые -> Картинки нет
Инфа о сообщении - 99,9 % такая как я писал, если нажать F1 то будет характерный писк входа в BIOS Setup |
|
| Вернуться к началу |
|
 |
DiVersant
4.0Mbit Patched


Зарегистрирован: 13 Янв 2004 Сообщения: 575
Откуда: Kyiv
|
|
Если я правильно понял, 3Д будет невостребовано.
В таком случае лучше будет воткнуть какой-нить RageII с вивой и наслаждаться. Riva128 вообще достаточно капризный зверь, особенно под в95, а что-то другое на этого зверя водружать смысла нет - слишком он крив и тормознут.
Что-то вроде
http://cgi.ebay.com/ATI-All-in.....dZViewItem _________________ Thinking... [***************_____]75% completed... |
|
| Вернуться к началу |
|
 |
RRA
Modbined&Cbromed

Зарегистрирован: 17 Июл 2005 Сообщения: 45
Откуда: Мск обл
|
|
| DiVersant писал(а): | | Если я правильно понял, 3Д будет невостребовано. |
Именно !
| DiVersant писал(а): | | В таком случае лучше будет воткнуть какой-нить RageII с вивой и наслаждаться. Riva128 вообще достаточно капризный зверь, особенно под в95, а что-то другое на этого зверя водружать смысла нет - слишком он крив и тормознут. |
Конечно ! Опять же таки если Rage не будет так же капризничать
Ну а пока есть V3000 отлично зарекомендовавший себя под win98 буду пробовать его
Тем более под Rage опять искать дрова\утилиты
Да и найти этот Rage еще надо..... |
|
| Вернуться к началу |
|
 |
DiVersant
4.0Mbit Patched


Зарегистрирован: 13 Янв 2004 Сообщения: 575
Откуда: Kyiv
|
|
| Вернуться к началу |
|
 |
Root
romby team

Зарегистрирован: 27 Авг 2003 Сообщения: 5976
Откуда: Saint-Petersburg
|
|
| Цитата: | | Да и найти этот Rage еще надо... |
опять же знаем где найти, но, увы, человек "за так" ее не отдаст, а платить рублев 500-700 за такой раритет особого смысла не представляет  |
|
| Вернуться к началу |
|
 |
DiVersant
4.0Mbit Patched


Зарегистрирован: 13 Янв 2004 Сообщения: 575
Откуда: Kyiv
|
|
Ну...
Я так понимаю, это принципиальный интерес - из г. слепить пулю?
Могу сказать, что это будет г-ная пуля.
Задачи хоть какие стоят? _________________ Thinking... [***************_____]75% completed... |
|
| Вернуться к началу |
|
 |
RRA
Modbined&Cbromed

Зарегистрирован: 17 Июл 2005 Сообщения: 45
Откуда: Мск обл
|
|
| Diversant писал(а): | Ну...
Я так понимаю, это принципиальный интерес - из г. слепить пулю? |
Так и есть !
| Diversant писал(а): | | Могу сказать, что это будет г-ная пуля. |
Ну не скажите, далеко не всегда... Я бы сказал редко
| Diversant писал(а): | | Задачи хоть какие стоят? |
Задача пока стоит одна - собрать микропроцессорную систему, обладающую минимальным энегопотреблением и физическими размерами, имеющую видео вход\выход
Реально для чего все это надо скажу если все получится
Везде, где ставиться задача построить нечто подобное за деньги, конечно можно пойти и закупиться комплектующими, но тут я бы сказал профинтерес
| Root писал(а): | | опять же знаем где найти, но, увы, человек "за так" ее не отдаст, а платить рублев 500-700 за такой раритет особого смысла не представляет |
Вот именно!
Что самое интересное - подобный "принципиальный интерес" возникает всякий раз когда в руки попадает что то неординарное!
Со стороны это выглядит, наверное, как безумие - разбираться в какой то проблеме, когда есть более удачные\готовые решения - успевай только бало отваливать
Можно конечно пойти еще более сложным и интересным путем - выпаять этот SAA7111A а с ним и 7003 заодно, к этому ATмегу, памяти, и.т.д. На это просто времени уйдет немерянно, с одним только протоколом CompactFlash разбираться сколько...
Сейчас проще использовать готовую платформу (DOS\Win), я не думаю что несовместимость окажется настолько принципиальной. Тем более что использовать DOS\Win гораздо разумнее чем строить свою систему и разрабатывать свою платформу с претензией на универсальность...
Ну, да это уже оффтоп...  |
|
| Вернуться к началу |
|
 |
icbook
Эксперт

Зарегистрирован: 27 Окт 2005 Сообщения: 1160
Откуда: Киев
|
|
| Цитата: | | ...но я не могу понять, что в данном случае мешает загрузке? |
А Вы установите POST-карту, и сообщите код останова, т.к. есть два варианта: 2Ah и 32h. |
|
| Вернуться к началу |
|
 |
RRA
Modbined&Cbromed

Зарегистрирован: 17 Июл 2005 Сообщения: 45
Откуда: Мск обл
|
|
| icbook писал(а): | | А Вы установите POST-карту, и сообщите код останова, т.к. есть два варианта: 2Ah и 32h. |
ISA Post карта останавливается на 31h
| AMIBIOS POST Checkpoint Codes писал(а): | 31h:
The display memory read/write test or retrace checking failed. Performing the alternate display memory read/write test next. |
Все-таки кривой PCI ???
Добавлено спустя 8 часов 33 минуты 49 секунд:
icbook, а для AMIшного биоса видеоадаптер - это всего лишь ROM с сигнатурой 55AA в области C000 или еще какие проверки идут ?
Вот с ISA в\к можно всю память из панелек поснимать, адаптер не работает, а POST проходит
Но если вытащить BIOS то POST останавливается на 31h
Значит видео-памть не проверяется?
И по какому адресу видео-биос передается управление? (мне нужно иниц. облать найти в видео-биос)
Добавлено спустя 12 часов 49 минут 51 секунду:
2ALL , у кого если есть BIOS от этого игла - просьба - отмыльте пожалуйста, почему-то не получается слить дамп  |
|
| Вернуться к началу |
|
 |
DiVersant
4.0Mbit Patched


Зарегистрирован: 13 Янв 2004 Сообщения: 575
Откуда: Kyiv
|
|
| RRA писал(а): | | Diversant писал(а): | Ну...
Я так понимаю, это принципиальный интерес - из г. слепить пулю? |
Так и есть !
|
Безумству храбрых...
И всё-таки, что это должно получиться в результате?
Есть нездоровые подозрения, что кривая PCI и полное отсутствие BM не дадут реализовать задуманное. Всё-таки речь идет о video-in, а это накладывает определённые требования к промзводительности... _________________ Thinking... [***************_____]75% completed... |
|
| Вернуться к началу |
|
 |
RRA
Modbined&Cbromed

Зарегистрирован: 17 Июл 2005 Сообщения: 45
Откуда: Мск обл
|
|
Определилась суть проблемы.
Вся подсистема PCI работает исправно.
Ошибка, скорее всего, в коде BIOS.
Дело в том что BIOS не может найти видео-биос карты.
При этом в\к можно инициализировать принудительно, если ссорудить следуюшее:
1)Слить с ASUS видеокарты видео-биос и записать в отдельную флешь
2)Эту флешь размесить в адресном пространстве Optional Boot ROM, вставив её в сетевую карту с DIP32 панелью
3)Вставить сетевую карту в слот PCI
4)Вставить ASUS видеокарту (без биоса) в слот PCI
5)В ISA поставить всё ту-же видео Trident9000
6)В оставшийся слот - POST-кодер
Система стартует...
1) Находится видео-биос Trident9000 и выполняется на коде 2C
2) Находится биос сетевой карты (на самом деле видео ) на коде 91 и передается управление ему
3) Код 97. Наш видео-биос выполняется!! Инициализируется видеокарта ASUS, при этом происходит крах Tridenta
Возникает проблема - видео-биос не хочет передавать управление назад - система стоит
Может последствия инициализации Trident мешают???
-------------------------------
Тоесть проблема, имхо, в том, что BIOS материнки не может найти набортный видео-биос карты
Нужно чтобы биос Riva выполнился раньше
Остается 2 способа:
1. Аппаратный - ставим рядом с панелькой BIOS на материнкскую плату еще одну панельку, под видео-биос. С помощью нехиторй логики размещаем её в адресном пространстве VGABIOS и сажаем на шину ISA
2. Программный - микрокод Видео-биос встраиваем вместо процедур поиска Video-ROM, таким образом система получит как-бы встроенную видеокарту
[off] однако почитав такие топики - http://rom.by/phpBB2/viewtopic.php?t=8956 - начнешь относиться к этой идее с опаской - как далеко можно уйти от такого простого, как казалось, вопроса как внедрение видое-биос в системный
[/off]
Ситуация осложняется несколькими факторами
- на плате AMI Bios
- он сильно покалеченный
- непакованный (+?)
Кто может что посоветовать? Мне конечно интереснее способ программный, сейчас начну понемножку изучать код биоса, хотя понимаю что допаять доп. панель будет быстрее.
Стоит ли оно того?
Кто смотрел код Eagle BIOS под NEC Power TX, сильно запутанный код? |
|
| Вернуться к началу |
|
 |
RRA
Modbined&Cbromed

Зарегистрирован: 17 Июл 2005 Сообщения: 45
Откуда: Мск обл
|
|
Возникло несколько вопросов к уважаемым гуру...
Вопросы касаются ROMSCAN, а точнее той части что копирует код из микросхемки в основную память
Вот сам ROMSCAN
| Код: |
Параметры - BX=Очередной адрес ROM (С000-С800 или C800-E000 или E000-E800)
ROMSCAN:
cli Запрет прерываний
cld Прямое направление
push ds Сохраняем DS
mov ds, bx Загрузка адреса ROM
xor si, si si=0 начало ROM
lodsw Загрузка сигнатуры
xor ax, AA55 Сигнатура 55AA ??
jne NO_SIGN Если НЕТ - выход для поиска в след. 512
mov cx, 0080 По умолчанию размер ROM = 80x200 = 64K
cmp bx, E000 Адрес ROM=E0000 ?
je DEFSIZE Если ДА - оставим 64К
lodsb НЕТ - загружаем реальный размер
mov cx, ax Размер (в блоках х512) в CX
DEFSIZE:
shl cx, 05 Умножаем CX*32
add bx, cx И переносим в BX
shl cx, 04 Домножаем на 16 - CX теперь реальный размер в байтах
xor si, si si=0 - Начало ROM
CHECKSUM:
lodsb Загружаем байт в AL
add ah, al AH = AH + AL - Подсчет CRC по модулю 256
loop CHECKSUM Повторяем для всего ROM
jne CRCFAIL CRC=0 ? Если НЕТ - выход
sti Разрешаем прерывания
push es Сохраняем ES-BX-BP
push bx
push bp
push cs Создаем точку возврата из ROM - сегмент
push ROM_RET И смещение
push ds Создаем искуственный переход в ROM - сегмент
push 0003 И смещение
call PREPARE Подготовка к переходу
retf Передача управления в ROM
ROM_RET:
cli Возврат из ROM - Запрет прерываний
cld Прямое направление
pop bp Восстанавливаем ES-BX-BP
pop bx
pop es
pop ds Восстанавливаем DS
cmp sp, sp Стек сбалансирован?
ret Выход
NO_SIGN:
add bx, 0080 Сигнатура не найдена - прибавляем 512 байт и ищем дальше
CRCFAIL:
pop ds Восстанавливаем DS
ret Выход
|
Вот непонятная процедура проверки
| Код: |
PREPARE:
push ds Сохраняем регистры
push es
push ax
push bx
push cx
push dx
push si
push di
mov ax, ds В AX - Адрес ROM
cmp ax, C000 Видео-ROM ?
jne EXIT Если НЕТ - выход
mov ax, cs Перегружаем CS->DS
mov ds, ax
mov cx, cs:[3BF6] Загружаем счетчик (в прошивке = 4)
mov si, 3AC2 Смещение
CYCLE:
lea bx, [si+09] Загружаем Адрес //?????
cmp word ptr[bx],FFFF По Адресу слово = FFFF ?
je CONTINUE Если ДА - продолжаем цикл
cmp byte ptr[bx+0B],03 По Адресу+И байт = 3 ?
je EXITERR Если ДА - Выходим с ошибкой
CONTINUE:
add si, 004D Смещение + 4D
loop CYCLE Продолжаем цикл
call COPYROM Копирование ROM в основную память
EXIT:
pop di Восстанавливаем регистры
pop si
pop dx
pop cx
pop bx
pop ax
pop es
pop ds
ret Выход
EXITERR:
mov ah, 00 В AH=0
mov al , [si+04] В AL=?
pop di Восстанавливаем регистры
pop si
pop dx
pop cx
pop bx
pop es
pop es
pop ds
ret Выход
|
А вот и само копирование
| Код: |
COPYROM:
push ds Сохраняем регистры
push es
pushad
mov ax, C000 Загружаем адрес видео-ROM в AX
mov ds, ax И перегружаем его в DS
mov es, ax И в ES
mov bx, 0000 Смещение = 0 - начало ROM
cmp word ptr [bx], AA55 Проверяем сигнатуру
jne SIG_ERR Неверная сигнатура - выход
mov bx, 0002 Смещение = 2 - размер ROM (x512)
mov al , [bx] Загружаем размер
cmp al, 20 Размер больше 20 (16K) ?
ja ABOVE20 Если ДА - сравниваем со следуюшим
mov cx, 2000 Округляем размер до 16K
mov bx, FC01 В BX - непонятные флаги
jmp SIZEOK Размер определен
ABOVE20:
cmp al, 40 Размер больше 40 (32K) ?
ja ABOVE40 Если ДА - сравниваем со следующим
mov cx, 4000 Округлям размер до 32K
mov bx, F005 В BX - непонятные флаги
jmp SIZEOK Размер определен
ABOVE40:
cmp al, 60 Размер больше 60 (48K) ?
ja ABOVE60 Если ДА - к следующему
mov cx, 6000 Округляем размер до 48K
mov bx, C015 В BX - непонятные флаги
jmp SIZEOK Размер определен
ABOVE60
mov cx, 8000 Округляем размер до 64K
mov bx, 0055 В BX - непонятные флаги
SIZEOK: Размер определен
mov al, 1C Шаманство с флагами и портами E0\E1
out E0, al
in al, E1
and al , bh
or bl , al
mov al, 1C
out E0, al
mov al , bl
mov ah, 1C
xchg ah, al
out E0, ax
Начинаем копирование
mov si, 0000 Индекс источника = 0
mov di, 0000 Индекс приемника = 0
cld Прямое направление
repz Повтор по размеру ROM
movsw Копирование
mov al, 1C Шаманство с флагами и портами E0\E1
out E0, al
in al, E1
and al , bh
not bx
and bl , bh
or bl , al
mov al, 1C
out E0, al
mov al , bl
mov ah, 1C
xchg ah, al
out E0, ax
SIG_ERR:
popad Восстанавливаем регистры
pop es
pop ds
ret Выход
|
Непонятен сам механизм
К какому устройству относятся порты E0,E1 ?
И что можно перенастроить таким образом, чтобы обычная пересылка из области памяти в саму себя превратилась вдруг в копирование из памяти устройства на шине в системную память??
Добавлено спустя 21 час 20 минут 13 секунд:
Я неправильно интерпретировал процедуру PREPARE - то что я считал ошибкой на самом деле - успешное выполнение
Должно быть так
| Код: |
mov cx, cs:[3BF6] Загружаем количество слотов PCI (в прошивке = 4)
mov si, 3AC2 Смещение на область конфигурации
CYCLE:
lea bx, [si+09] Загружаем адрес конф. пространства слота
cmp word ptr[bx],FFFF По Смещение 0 - VendorID - есть устройство в слоте?
je CONTINUE Если НЕТ - продолжаем опрос
cmp byte ptr[bx+0B],03 Смещение B - Base Class - устройство видеоадаптер (3)?
je EXITOK Если ДА - Выходим, нашли видеоадаптер
CONTINUE:
add si, 004D Смещение + 4D к следующему слоту
loop CYCLE Продолжаем цикл
call COPYROM Копирование ROM в основную память
.
.
.
.
EXITОК:
Параметры для процедуры ROMINIT :
mov ah, 00 В AH - номер шины - 0=шина PCI
mov al , [si+04] В AL=номер устройства:функции (5:3)
|
Получается копирование вызывается если в PCI не найден видеоадаптер, а значит это не мой случай
Все предыдущие вопросы пока сняты
Надо искать, где область 3AC2 заполняется |
|
| Вернуться к началу |
|
 |
RRA
Modbined&Cbromed

Зарегистрирован: 17 Июл 2005 Сообщения: 45
Откуда: Мск обл
|
|
----------------------------------------------------
Расковырял обработку устройств на шине
Базовый цикл:
| Код: |
.
.
.
.
mov cx, [3BF6] Загружаем количество слотов
mov di, 3AC2 Загружаем адрес области конфигурации
Next_Dev:
push cx Сохраняем счетчик слотов
call Add_Device Обрабатываем слот
pop cx Восстанавливаем счетчик слотов
add di, 004D Переходим с следующему адресу
loop Next_Dev Продолжаем цикл
mov al, [3C6C] Флаг "Видеоадаптер найден"
cmp al, 01 Видеоадаптер найден ?
je PCIVIDEO Да - переход
.
.
.
.
.
|
Вот сама обработка
Вроде ничего подозрительного.....
| Код: |
Add_Device: Обработка очередного устройства на шине
lea bx, [di+09] Загружаем адрес памяти конфигурации
mov eax, 00000000 Смещение=0 - VendorID\DeviceID
call PCI_Read Читаем дв.слово
mov [bx], ecx Запоминаем в свою область памяти
cmp ecx, FFFFFFFF Слот не отвечает ?
je EXIT Да - выход,переходим с следующему
mov eax, 00000008 Смещение=8 - RevisionID\DeviceClassCode
call PCI_Read Читаем дв.слово
mov [bx+08], ecx Запоминаем в свою область памяти
and ecx, FFFFFF00 Накладываем маску - в ecx теперь DeviceClassCode
cmp ecx, 01000000 Устройство - SCSI ?
je SCSI Да - обрабатываем как SCSI
shr ecx, 10 Передвигаем ecx - теперь там только BaseClass
cmp ch, 02 Базовый класс - Сетевой Адаптер ?
je NET Да - обрабатываем как NET
cmp ch, 03 Базовый класс - Видеоадаптер ?
je VIDEO Да - обрабатываем как VIDEO
cmp ch, 04 Базовый класс - Мультимедиа ?
je MMED Да - обрабатываем как MMED
jmp OTHER Обрабатываем как Др.
.
.
.Обработка сети, скази, мултимедиа - пропускаем - неинтересно
.
.
VIDEO:
mov al, [3C6C] Флаг "Видеоадаптер Есть"
cmp al, 01 Видео есть?
jne NEW_VIDEO Нет - обрабатываем
jmp EXIT Есть - хватит и одной, выход
NEW_VIDEO:
mov eax, 00000010 Смещение=10 - Базовые Адресные Регистры
lea bx, [di+09] Заново загружаем указатель на нашу облать
add bx, 0010 Также смещение = 10
BAR_CYCLE:
mov ecx, FFFFFFFF Все биты 1 для записи - проверяем БАР
call PCI_Write Записываем еденицы
call PCI_Read Читаем регистр
mov [bx], ecx Запоминаем содержимое
cmp ecx, FFFFFFFF Регистр не отвечает?
je ROMPR Да - переходим к обработке ROM
or ecx, ecx Регистр пуст?
je ROMPR Да - переходим к обработке ROM
test cl, 01 БАР типа ПАМЯТЬ ?
je MEMREG Да - обрабатываем как память
call GO_IOSpace В противном случае - обрабатываем как ввод\вывод
jmp NEXTBAR
MEMREG:
call GO_MEMSpace Обрабатываем как память
NEXTBAR:
add bx, 0004 Переходим с следующему БАР
add eax, 00000004 Переходим с следующему БАР
cmp eax, 00000024 БАР кончились?
jbe BAR_CYCLE Нет - продолжаем
ROMPR:
mov eax, 00000030 Смещение=30 - Расширение ROM
mov ecx, FFFFFFFF Все биты 1 для записи - проверяем Расширение ROM
call PCI_Write Записывем еденицы
call PCI_Read Читаем регистр
lea bx, [di+09] Заново загружаем указатель на нашу область
mov [bx+30], ecx Запоминаем регистр ROM
cmp ecx, FFFFFFFF Регистр не отвечает?
je INTPR Да - переходим к обработке прерываний
or ecx, ecx Регистр пуст?
je INTPR Да - переходим к обработке прерываний
mov si, 3C60 Загружаем в SI смещение ячейки (в прошивке = 000C0000)
call GO_ROM Обрабатываем как ROM
INTPR:
mov ecx, 000000FF В ecx - 00..11111111
mov eax, 0000003C Смешение = 3С - IntLine\IntPin\MinGnt\MaxLat
mov [bx+3C], ecx Запоминаем 00..11111111 (Очищаем InterruptLine)
call PCI_Write Пишем это же в регистр
mov al, [3C68] Загружаем флаг "Запретить прерывания" (???????????)
test al, 01 Флаг = 1 ?
je EDIT_CR Да - переходим к записи в ControlRegister
Нет - все таки обрабатываем прерываение
mov eax, 0000003C Смещение = 3C - IntLine\IntPin\MinGnt\MaxLat
call PCI_Read Читаем регистр
mov [bx+3C], ecx Запоминаем регистр
or ch, ch InterruptPin пуст ?
je EDIT_CR Да - переходим к записи в ControlRegister
call GO_IRQ Нет - обрабатываем прерывание
EDIT_CR:
mov eax, 00000004 Смещение = 4 - ControlRegister \ StatusRegister
mov ecx, 00000003 Уст. биты 000.....011 - Рарешить IO, Разрешить MEM, Запретить BusMaster
call PCI_Write Пишем в CR
call 40BA Вызываем COPYROM !!!
mov eax, 00000030 Смещение = 30 - Расширение ROM
mov ecx, 00000000 В ecx=0
call PCI_Write Записываем 0 в регистр ROM (Зачеи ?????)
mov al, 01 В AL - 1
mov byte ptr [3C6C], al Устанавливаем флаг "Видеоадаптер Есть"
jmp EXIT Выход - с следующему устройству
EXIT:
ret Выход
|
Рассаматривал процедуры GO_IO, GO_MEM и GO_ROM - принцип ясен, непонятны детали
Кажется есть какой-то криминал
Кто может, прошу оказать помощи:
1) Как устройство в одном BAR заявляет и базовый адрес памяти и его размер? Целый час перечитывал абзац в спецификации - не понял
Понятно что записав все 111 мы можем по оставшимся 0 определить размер, но как определить нужный адрес памяти? (Пример - видео, адрес 000A0000)
2) COPYROM все-таки вызывается, поэтому всплывает прошлый вопрос - про порты E0, E1 и непривычный механизм копирования
Если кто знает - подскажите пожалуйста, нигде не найду инфу
Заранее благодарен |
|
| Вернуться к началу |
|
 |
icbook
Эксперт

Зарегистрирован: 27 Окт 2005 Сообщения: 1160
Откуда: Киев
|
|
Прошу прощения, но вызов ROMSCAN может и не произойти?
| Код: | Check_Point 2Ah ; POST 2A
call _DIM
jz _oops
Check_Point 2Bh ; POST 2B
call _dummy
jz _oops
Check_Point 2Ch ; POST 2C
mov bx,0c000h ; EGA/VGA ROM segment
_else_:
call ROMSCAN
cmp bx,0c800h
jb _else_
_oops: |
Последний раз редактировалось: icbook (Пн Сен 04, 2006 12:06 pm), всего редактировалось 1 раз |
|
| Вернуться к началу |
|
 |
RRA
Modbined&Cbromed

Зарегистрирован: 17 Июл 2005 Сообщения: 45
Откуда: Мск обл
|
|
icbook Спасибо что отозвались
| icbook писал(а): | | Прошу прощения, вы вызов ROMSCAN может и не произойти? |
Меня сейчас ROMSCAN как таковой пока не интересует
Проблема появляется ещё раньше - после посткода 13 идет обозначенный мною "Базовый цикл" по перечислению устройств на PCI шине
Вызывается Add_Device, натыкается на видеокарту, инициализирует ConfigSpace выдеокарты и, самое интересное, вызывается ROMCOPY которвй, как я понял, что то делает с чипсетом и появляется возможность стянуть из видеокарты ROM в основную память
Я вставлял повсюду отладочные куски
Вот как проходит код
1) Видеокарта находится - есть переход по проверке КлассаУстройства
2) Есть проход по секциям инициализации BAR,ROM,INT,MEM,IO (сами процедуры типа GO_XXXX я еще не дебагил)
3) Есть запись в ControlRegister и далее следующий за ним вызов COPYROM
Далее в COPYROM на первой же проверке
(эта та которая у меня
cmp word ptr [bx], AA55 Проверяем сигнатуру
jne SIG_ERR Неверная сигнатура - выход
)
вываливаемся - тоесть не находим сигнатуру
Вот принципиальная проблема "слепоты" биос - он не имеет доступ к Видео-ROM
Мне кажется что проблема в неправильной инициализации регисров BAR и регистра ROM видеокарты
Сейчас я выложу их код (GO_MEM и GO_ROM) но сам я его понять не могу - читал спецификацию PCI и в инглише и на русском и версии 2.0 и версии 2.2
НИКАК не могу понять механизм выделения памяти !
Записав все 11111 в регистр и считав его содержимое можно узнать размер требуемой памяти, но КАК определить адрес?? Пример - видеопамять 000A0000-000AFFFF всегда именно такая
Вот засада то!
Я уже заканчиваю свою мини прогу по полной расшифровке ConfigSpace включая полный анализ BAR
Только так на практике я смогу порнять механизм
А пока - увы
GO_MEM
| Код: |
.3ED8 6650 push eax
.3EDA 6653 push ebx
.3EDC 6651 push ecx
.3EDE 6652 push edx
.3EE0 80E1F0 and cl, F0
.3EE3 66BB10000000 mov ebx, 00000010
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|.3EF1(U)
|
.3EE9 6685CB test ebx, ecx
.3EEC 7505 jne 3EF3
.3EEE 66D1E3 shl ebx, 01
.3EF1 EBF6 jmp 3EE9
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|.3EEC(C)
|
.3EF3 6681FB00010000 cmp ebx, 00000100
.3EFA 770C ja 3F08
.3EFC 66BB00010000 mov ebx, 00000100
.3F02 66B900FFFFFF mov ecx, FFFFFF00
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|.3EFA(C)
|
.3F08 668B165C3C mov edx, [3C5C]
.3F0D 6623D1 and edx, ecx
.3F10 663B165C3C cmp edx, [3C5C]
.3F15 7408 je 3F1F
.3F17 6603D3 add edx, ebx
.3F1A 6689165C3C mov [3C5C], edx
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|.3F15(C)
|
.3F1F 66011E5C3C add [3C5C], ebx
.3F24 8D5D09 lea bx, [di+09]
.3F27 03D8 add bx, ax
.3F29 668917 mov [bx], edx
.3F2C 668BCA mov ecx, edx
.3F2F E829FF call PCI_Write
.3F32 665A pop edx
.3F34 6659 pop ecx
.3F36 665B pop ebx
.3F38 6658 pop eax
.3F3A C3 ret
|
примечание - переменная [3C5C] по умолчанию = E0000000
GO_ROM
| Код: |
.3F86 6650 push eax
.3F88 6653 push ebx
.3F8A 6651 push ecx
.3F8C 6652 push edx
.3F8E 56 push si
.3F8F 80E1F0 and cl, F0
.3F92 66BB00080000 mov ebx, 00000800
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|.3FA0(U)
|
.3F98 6685CB test ebx, ecx
.3F9B 7505 jne 3FA2
.3F9D 66D1E3 shl ebx, 01
.3FA0 EBF6 jmp 3F98
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|.3F9B(C)
|
.3FA2 6681FB00000100 cmp ebx, 00010000
.3FA9 760C jbe 3FB7
.3FAB 66B90000FFFF mov ecx, FFFF0000
.3FB1 66BB00000100 mov ebx, 00010000
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|.3FA9(C)
|
.3FB7 668B14 mov edx, [si]
.3FBA 6623D1 and edx, ecx
.3FBD 663B14 cmp edx, [si]
.3FC0 7406 je 3FC8
.3FC2 6603D3 add edx, ebx
.3FC5 668914 mov [si], edx
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|.3FC0(C)
|
.3FC8 66011C add [si], ebx
.3FCB 668BCA mov ecx, edx
.3FCE 80C901 or cl, 01
.3FD1 8D5D09 lea bx, [di+09]
.3FD4 03D8 add bx, ax
.3FD6 66890F mov [bx], ecx
.3FD9 E87FFE call PCI_Write
.3FDC 5E pop si
.3FDD 665A pop edx
.3FDF 6659 pop ecx
.3FE1 665B pop ebx
.3FE3 6658 pop eax
.3FE5 C3 ret
|
примечание - переменная [si], по умолчанию = 000C0000 |
|
| Вернуться к началу |
|
 |
icbook
Эксперт

Зарегистрирован: 27 Окт 2005 Сообщения: 1160
Откуда: Киев
|
|
| Цитата: | 1) Видеокарта находится - есть переход по проверке КлассаУстройства
2) Есть проход по секциям инициализации BAR,ROM,INT,MEM,IO ...
3) Есть запись в ControlRegister и далее следующий за ним вызов COPYROM
Далее в COPYROM на первой же проверке ... вываливаемся - тоесть не находим сигнатуру |
Посмотрю в свободное время. |
|
| Вернуться к началу |
|
 |
|
|
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|