Автор: Unknown BIOS (не проверено) , 22 августа 2006
Попалась вот в руки экзотика на чипсете NEC
Производитель материнки Eagles
Описывать не буду, уже подробно описывали - она на форуме уже попадалась

https://rom.by/phpBB2/viewtopic.php?p=13120

и вот здесь поругали её BIOS
https://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Вт - такого больше не найти!

Помогите советом плиз, очень уж хочется поднять, итак уже с того света её вытащил (битый ШИМ, раскачка, мосфеты, отломанная панелька) :)
Содержимое данного поля является приватным и не предназначено для показа.

BBCode

  • HTML-теги не обрабатываются и показываются как обычный текст
  • You may use the following BBCode tags:
    • [align]
    • [b]
    • [code]
    • [color]
    • [font]
    • [hr]
    • [i]
    • [img]
    • [list]
    • [quote]
    • [s]
    • [size]
    • [spoiler]
    • [sub]
    • [sup]
    • [table]
    • [u]
    • [url]
  • Адреса веб-страниц и email-адреса преобразовываются в ссылки автоматически.

RRA

19 лет 6 месяцев назад

Если я правильно понял, 3Д будет невостребовано.

Именно !

В таком случае лучше будет воткнуть какой-нить RageII с вивой и наслаждаться. Riva128 вообще достаточно капризный зверь, особенно под в95, а что-то другое на этого зверя водружать смысла нет - слишком он крив и тормознут.

Конечно ! Опять же таки если Rage не будет так же капризничать
Ну а пока есть V3000 отлично зарекомендовавший себя под win98 буду пробовать его

Тем более под Rage опять искать дрова\утилиты
Да и найти этот Rage еще надо.....

DiVersant

19 лет 6 месяцев назад

Глюков в эксплуатации Rage особо замечено не было.
На радиорынке вполне можно найти. Драйвера - на сайте.
Кроме него есть еще пара приемлимых вариантов -
Matrox Mystique 220 или Millennium II+ Rainbow Runner (заодно будет аппаратный MJPEG кодер и MPEG-декодер) и карточки с тюнером и VIVO на базе CL-GD5446. К примеру, PixelView ComboTV Plus
Model name: PV-CL5446P+ / PV-CL544XP+
Драйвера: http://www.prolink.com.tw/chinese/products/discontinue.htm#5446
Юзал и то, и другое - претензий нет.

Вот еще по раннеру: http://www.dealtime.co.uk/xPF-Matrox_Rainbow_Runner_Studio_MGA_MYST_RRSTI

Root

19 лет 6 месяцев назад

Да и найти этот Rage еще надо...

опять же знаем где найти, но, увы, человек "за так" ее не отдаст, а платить рублев 500-700 за такой раритет особого смысла не представляет :(

DiVersant

19 лет 6 месяцев назад

Ну...
Я так понимаю, это принципиальный интерес - из г. слепить пулю?
Могу сказать, что это будет г-ная пуля.
Задачи хоть какие стоят?

RRA

19 лет 6 месяцев назад

Ну...
Я так понимаю, это принципиальный интерес - из г. слепить пулю?

Так и есть !

Могу сказать, что это будет г-ная пуля.

Ну не скажите, далеко не всегда... Я бы сказал редко

Задачи хоть какие стоят?

Задача пока стоит одна - собрать микропроцессорную систему, обладающую минимальным энегопотреблением и физическими размерами, имеющую видео вход\выход
Реально для чего все это надо скажу если все получится ;)

Везде, где ставиться задача построить нечто подобное за деньги, конечно можно пойти и закупиться комплектующими, но тут я бы сказал профинтерес

опять же знаем где найти, но, увы, человек "за так" ее не отдаст, а платить рублев 500-700 за такой раритет особого смысла не представляет

Вот именно!


Что самое интересное - подобный "принципиальный интерес" возникает всякий раз когда в руки попадает что то неординарное! :)

Со стороны это выглядит, наверное, как безумие - разбираться в какой то проблеме, когда есть более удачные\готовые решения - успевай только бало отваливать :)

Можно конечно пойти еще более сложным и интересным путем - выпаять этот SAA7111A а с ним и 7003 заодно, к этому ATмегу, памяти, и.т.д. На это просто времени уйдет немерянно, с одним только протоколом CompactFlash разбираться сколько...

Сейчас проще использовать готовую платформу (DOS\Win), я не думаю что несовместимость окажется настолько принципиальной. Тем более что использовать DOS\Win гораздо разумнее чем строить свою систему и разрабатывать свою платформу с претензией на универсальность...

Ну, да это уже оффтоп... :)

icbook

19 лет 6 месяцев назад

...но я не могу понять, что в данном случае мешает загрузке?

А Вы установите POST-карту, и сообщите код останова, т.к. есть два варианта: 2Ah и 32h.

RRA

19 лет 6 месяцев назад

А Вы установите POST-карту, и сообщите код останова, т.к. есть два варианта: 2Ah и 32h.


ISA Post карта останавливается на 31h

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

19 лет 6 месяцев назад

Ну...
Я так понимаю, это принципиальный интерес - из г. слепить пулю?

Так и есть !

Безумству храбрых...

И всё-таки, что это должно получиться в результате?
Есть нездоровые подозрения, что кривая PCI и полное отсутствие BM не дадут реализовать задуманное. Всё-таки речь идет о video-in, а это накладывает определённые требования к промзводительности...

RRA

19 лет 6 месяцев назад

Определилась суть проблемы.
Вся подсистема 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] однако почитав такие топики - https://rom.by/phpBB2/viewtopic.php?t=8956 - начнешь относиться к этой идее с опаской - как далеко можно уйти от такого простого, как казалось, вопроса как внедрение видое-биос в системный :)
[/off]

Ситуация осложняется несколькими факторами
- на плате AMI Bios
- он сильно покалеченный
- непакованный (+?)

Кто может что посоветовать? Мне конечно интереснее способ программный, сейчас начну понемножку изучать код биоса, хотя понимаю что допаять доп. панель будет быстрее.

Стоит ли оно того?
Кто смотрел код Eagle BIOS под NEC Power TX, сильно запутанный код?

RRA

19 лет 5 месяцев назад

Возникло несколько вопросов к уважаемым гуру...
Вопросы касаются ROMSCAN, а точнее той части что копирует код из микросхемки в основную память

Вот сам ROMSCAN
[code:1]
Параметры - 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 Выход
[/code:1]

Вот непонятная процедура проверки
[code:1]
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 Выход
[/code:1]

А вот и само копирование
[code:1]
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 Выход
[/code:1]


Непонятен сам механизм
К какому устройству относятся порты E0,E1 ?
И что можно перенастроить таким образом, чтобы обычная пересылка из области памяти в саму себя превратилась вдруг в копирование из памяти устройства на шине в системную память??

Добавлено спустя 21 час 20 минут 13 секунд:

Я неправильно интерпретировал процедуру PREPARE - то что я считал ошибкой на самом деле - успешное выполнение :)
Должно быть так
[code:1]
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)
[/code:1]

Получается копирование вызывается если в PCI не найден видеоадаптер, а значит это не мой случай

Все предыдущие вопросы пока сняты
Надо искать, где область 3AC2 заполняется