Универсальный эмулятор ATA/ATAPI устройств

Описания, советы, ремонт, эксплуатация старых IBM PC-совместимых ПК
i8088
Advanced Member
Сообщения: 4865
Зарегистрирован: 30.01.2015,17:06
Откуда: г. Баку, Азербайджан
Поблагодарили: 48 раз

Конкурсы

Вклад в сообщество

Универсальный эмулятор ATA/ATAPI устройств

Сообщение i8088 » 19.02.2023,11:24

pahan писал(а): 19.02.2023,10:45 Так. Собственно на via мы в это и упёрлись - Биос включал эмулятору udma даже когда никто его об этом не просит. Что интересно, с реальными hdd это или не происходит или им это нисколько не мешает.
BIOS-ы тех времен (за редчайшим исключением, типа ASUS TR-DLS) не включают
UDMA, а просто подготавливают настройку таймингов контроллера. Это нужно
для того, чтобы мог работать UDMA драйвер, не знающий особенностей конкретного
чипсета (те работать просто с PCI IDE моделью). При этом только нет возможности
узнать, в каком собственно режиме мы работаем. В терминологии FreeBSD это
называется BIOSDMA (и аналогично BIOSPIO для PIOxx).

Сообщение же POST UDMAxx - это просто информация, в абсолютном большинстве
случаев.
leon_pro писал(а): 19.02.2023,11:05 Спасет только open source.
Только так, иначе это будет очередной забытый (за невозможностью использовать
его) проект. Или иначе надо создавать уже более-менее крупную компанию,
которая будет заниматься подобным и обеспечивать поддержку, чтобы это
не зависело от настроения одного человека. Я сам такой - бывает надоедает,
что-то делать откладываю, потом в какой-то момент интерес снова может появиться.

pahan
Advanced Member
Сообщения: 5451
Зарегистрирован: 13.03.2015,14:23
Откуда: Химки, М.О.
Благодарил (а): 4 раза
Поблагодарили: 36 раз

Вклад в сообщество

Универсальный эмулятор ATA/ATAPI устройств

Сообщение pahan » 19.02.2023,11:36

BIOS-ы тех времен (за редчайшим исключением, типа ASUS TR-DLS) не включают
UDMA, а просто подготавливают настройку таймингов контроллера
Тогда можете прокомментировать со своей точки зрения что происходит в этом куске лога с эмулятора? Это и есть подготовка таймингов? Это момент когда вместо начала загрузки ОС эмулируемый диск отваливается от интерфейса.

[00:09:51 DEBUG D0 EF --] SET FEATURES ID - drive: A0
[00:09:51 DEBUG D0 EF --] Subcomm: 03, params: 40 | 01 | 4f | c2
[00:09:51 DEBUG D0 EF --] Ultra DMA Mode 0
И дальше при поступлении команды C8 - READ DMA все ресетится:

[00:09:54 DEBUG D0 C4 --] READ (C4) count: 1, cyl 0 (00/00), head: 0,
sect: 0, LBA (1): 000000
[00:09:54 TRACE D0 C4 --] ATA2 PIO-In xfer end

[00:09:55 DEBUG D0 C8 --] READ (C8) count: 1, cyl 0 (00/00), head: 0,
sect: 0, LBA (1): 000000
[00:10:11 DEBUG D0 C8 --] Software (SRST) Reset

pahan
Advanced Member
Сообщения: 5451
Зарегистрирован: 13.03.2015,14:23
Откуда: Химки, М.О.
Благодарил (а): 4 раза
Поблагодарили: 36 раз

Вклад в сообщество

Универсальный эмулятор ATA/ATAPI устройств

Сообщение pahan » 19.02.2023,13:09

Можно Вас попросить сделать фото в хорошем качестве прототипа с обоих сторон.
Изображение
Изображение
ПЛИС EPM1270T144C5N
МК STM32F446
Пара трансиверов LVTH16245A + буфер LXH125
Питальник AMS1117 3.3 V + супрессор USBLC6-2SC6
Кварц маркирован 12RG 9-1E.

Есть бинари прошивок, если кому-то хочется пытаться их ковырять ;)

geg
Advanced Member
Сообщения: 12303
Зарегистрирован: 21.11.2010,12:04
Поблагодарили: 3 раза

Универсальный эмулятор ATA/ATAPI устройств

Сообщение geg » 19.02.2023,13:24

Александр 66 писал(а): 19.02.2023,08:45 сделать фото
Фото платы (сверху, даже двух) есть в теме.

i8088
Advanced Member
Сообщения: 4865
Зарегистрирован: 30.01.2015,17:06
Откуда: г. Баку, Азербайджан
Поблагодарили: 48 раз

Конкурсы

Вклад в сообщество

Универсальный эмулятор ATA/ATAPI устройств

Сообщение i8088 » 19.02.2023,14:48

pahan писал(а): 19.02.2023,11:36 Тогда можете прокомментировать со своей точки зрения что происходит в этом куске лога с эмулятора? Это и есть подготовка таймингов? Это момент когда вместо начала загрузки ОС эмулируемый диск отваливается от интерфейса.


[00:09:51 DEBUG D0 EF --] SET FEATURES ID - drive: A0
[00:09:51 DEBUG D0 EF --] Subcomm: 03, params: 40 | 01 | 4f | c2
[00:09:51 DEBUG D0 EF --] Ultra DMA Mode 0
И дальше при поступлении команды C8 - READ DMA все ресетится:

[00:09:54 DEBUG D0 C4 --] READ (C4) count: 1, cyl 0 (00/00), head: 0,
sect: 0, LBA (1): 000000
[00:09:54 TRACE D0 C4 --] ATA2 PIO-In xfer end

[00:09:55 DEBUG D0 C8 --] READ (C8) count: 1, cyl 0 (00/00), head: 0,
sect: 0, LBA (1): 000000
[00:10:11 DEBUG D0 C8 --] Software (SRST) Reset
Я не совсем понял, те плата прошла POST? Что за OS используется?
Обычный DOS (который никаких UDMA не знает) загружается?

И чтобы не морочиться с новейшими полями отдаваемыми по ATA_IDENTIFY
(о которых древние BIOS все равно ничего не знают), можно понизить номер
версии стандарта. Но без исходников - проще сделать самому все заново,
чем выискивать чужие баги...

Я пока так понял, что почему-то распозналась и активировалась
поддержка UDMA у псевдоустройства (есть указание на UDMA
mode в листинге POST?), а OS вначале загрузки попыталась
использовать BIOSDMA, а поскольку реально никакого UDMA не
поддерживается, мы получили ошибку и OS далее отправила SRST.

Если указание на UDMA в листинге POST есть, то впервую очередь
надо посмотеть, что псевдодиск отвечает на ATA_ATA_IDENTIFY и
сравнить с ответом реального HDD без UDMA. Проверить слова 0x63
и 0x88.

i8088
Advanced Member
Сообщения: 4865
Зарегистрирован: 30.01.2015,17:06
Откуда: г. Баку, Азербайджан
Поблагодарили: 48 раз

Конкурсы

Вклад в сообщество

Универсальный эмулятор ATA/ATAPI устройств

Сообщение i8088 » 19.02.2023,15:02

pahan писал(а): 19.02.2023,11:36 Тогда можете прокомментировать со своей точки зрения что происходит в этом куске лога с эмулятора? Это и есть подготовка таймингов? Это момент когда вместо начала загрузки ОС эмулируемый диск отваливается от интерфейса.


[00:09:51 DEBUG D0 EF --] SET FEATURES ID - drive: A0
[00:09:51 DEBUG D0 EF --] Subcomm: 03, params: 40 | 01 | 4f | c2
[00:09:51 DEBUG D0 EF --] Ultra DMA Mode 0
И дальше при поступлении команды C8 - READ DMA все ресетится:

[00:09:54 DEBUG D0 C4 --] READ (C4) count: 1, cyl 0 (00/00), head: 0,
sect: 0, LBA (1): 000000
[00:09:54 TRACE D0 C4 --] ATA2 PIO-In xfer end

[00:09:55 DEBUG D0 C8 --] READ (C8) count: 1, cyl 0 (00/00), head: 0,
sect: 0, LBA (1): 000000
[00:10:11 DEBUG D0 C8 --] Software (SRST) Reset
Я не совсем понял, те плата прошла POST? Что за OS используется?
Обычный DOS (который никаких UDMA не знает) загружается?

И чтобы не морочиться с новейшими полями отдаваемыми по ATA_IDENTIFY
(о которых древние BIOS все равно ничего не знают), можно понизить номер
версии стандарта. Но без исходников - проще сделать самому все заново,
чем выискивать чужие баги...

Я пока так понял, что почему-то распозналась и активировалась
поддержка UDMA у псевдоустройства (есть указание на UDMA
mode в листинге POST?), а OS вначале загрузки попыталась
использовать BIOSDMA, а поскольку реально никакого UDMA не
поддерживается, мы получили ошибку и OS далее отправила SRST.

Если указание на UDMA в листинге POST есть, то впервую очередь
надо посмотеть, что псевдодиск отвечает на ATA_ATA_IDENTIFY и
сравнить с ответом реального HDD без UDMA. Проверить слова 0x63
и 0x88.

Собственно говоря, такие устройства просто бессмысленно делать с
закрытым кодом, так как разные баги будут постоянно вылазить
в различных комбинациях, особенно для эмуляции старых устройств.

Например прекрасный для отладки эмулятор bochs хорош именно открытым,
кодом, благодаря чему я его подогнал под нестандартную машину и исправил
некоторые баги, добавил команду в DEBUG. Если бы он был с закрытым кодом,
его применение просто потеряло бы смысл.

pahan
Advanced Member
Сообщения: 5451
Зарегистрирован: 13.03.2015,14:23
Откуда: Химки, М.О.
Благодарил (а): 4 раза
Поблагодарили: 36 раз

Вклад в сообщество

Универсальный эмулятор ATA/ATAPI устройств

Сообщение pahan » 19.02.2023,15:48

Я не совсем понял, те плата прошла POST
Конечно.
Что за OS используется
Пробовал с Win 98se и Win XP sp3 x32.
Обычный DOS (который никаких UDMA не знает) загружается
Не пробовал.
есть указание на UDMA
mode в листинге POST
Pio 4, udma 0. Загрузчика ОС Биос не находит вообще с эмулятора.
Я пока так понял, что почему-то распозналась и активировалась
поддержка UDMA у псевдоустройства
Интересно, достаточно ли материнке для этого распознать наличие 80жильного кабеля? С 40жильным на 430tx у меня 98я хотя бы пыталась грузиться.

Dinozavr
Advanced Member
Сообщения: 641
Зарегистрирован: 29.12.2018,04:53
Благодарил (а): 1 раз
Поблагодарили: 4 раза

Универсальный эмулятор ATA/ATAPI устройств

Сообщение Dinozavr » 19.02.2023,15:55

На уровне мнения:
Не нужно стремится сделать универсальный, т.к. даже официальные ATA/ATAPI стандарты не имеют четкой совместимости "снизу в верх".
И еще, ну поставил он какой-то там "толеран"
pahan писал(а): 19.02.2023,13:09LVTH16245A
По документации 2.7V<Ucc<3.6V, а контроллера старые 5V не так чтобы напрочь об этом осведомлены (было же).

pahan
Advanced Member
Сообщения: 5451
Зарегистрирован: 13.03.2015,14:23
Откуда: Химки, М.О.
Благодарил (а): 4 раза
Поблагодарили: 36 раз

Вклад в сообщество

Универсальный эмулятор ATA/ATAPI устройств

Сообщение pahan » 19.02.2023,22:46

По документации 2.7V<Ucc<3.6V, а контроллера старые 5V не так чтобы напрочь об этом осведомлены (было же).
PIIX4, Via686B, ICH7 - кто конкретно из этого списка не осведомлён? До более старых дело ещё не доходило, так что на данном этапе вот вообще не проблема по сравнению со всем остальным.

Dinozavr
Advanced Member
Сообщения: 641
Зарегистрирован: 29.12.2018,04:53
Благодарил (а): 1 раз
Поблагодарили: 4 раза

Универсальный эмулятор ATA/ATAPI устройств

Сообщение Dinozavr » 19.02.2023,22:56

Хотя нормальны буфера,
Им не хватало ни хера.
Контроллер мож осведомлен,
Зато без буфера говен.
Но за питание не скажу -
За ним особо не слежу.
viewtopic.php?f=12&t=44082&p=714381#p714381
ISA мультяшка под Ростов,
Там IDE начало - сто.
То есть слегка где коммутнул,
Инвертор адреса воткнул.
А данные не трогал я.
Такая вот была херня.
А "кто конкретно" не скажу.
Взять тестер в руки предложу.
Последний раз редактировалось Dinozavr 25.02.2023,19:09, всего редактировалось 1 раз.

i8088
Advanced Member
Сообщения: 4865
Зарегистрирован: 30.01.2015,17:06
Откуда: г. Баку, Азербайджан
Поблагодарили: 48 раз

Конкурсы

Вклад в сообщество

Универсальный эмулятор ATA/ATAPI устройств

Сообщение i8088 » 20.02.2023,08:21

pahan писал(а): 19.02.2023,15:48 Интересно, достаточно ли материнке для этого распознать наличие 80жильного кабеля? С 40жильным на 430tx у меня 98я хотя бы пыталась грузиться.
Не, это дело десятое - кабель проверяется только тогда, если контроллер и устройство поддерживают
UDMA>33. Да и то, не везде это работает как надо.

Ответить