DC-SWAT Forum
G1-ATA Devices - Версия для печати

+- DC-SWAT Forum (http://www.dc-swat.ru/forum)
+-- Форум: Sega Dreamcast (/forum-2.html)
+--- Форум: Hardware (/forum-9.html)
+--- Тема: G1-ATA Devices (/thread-2111.html)

Страниц: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23


RE: G1-ATA Devices - SWAT - 19.03.2014 09:02

(18.03.2014 23:23)megavolt85 писал(а):  
cybdyn писал(а):или идея копировать диск с привода на винт?

мне больше это интересно, а без записи, сижу без дела

(18.03.2014 23:23)megavolt85 писал(а):  
SWAT писал(а):В идеале надо ядро копировать на раздел с Ext2 (у этой файловой системы больше возможностей), а образы с играми на FAT32.

В таком случае раздел с fat32 нужно делать первым (в ином случае раздел монтируется ,но не открывается в файл менеджере) , а ext2 вторым и делать кастомный биос с загрузкой из /ide1

Я говорю с расчетом того, что так быть не должно и я это постараюсь исправить.

(18.03.2014 23:23)megavolt85 писал(а):  сделал speedtest на чтение, G1ATA это нечто. SD (fat32 Kingston 16GB Class10) 3.22 Mbit/s , IDE1 (ext2) 17.42 Mbit/s , IDE (fat32) 18.25 Mbit/s

Очень мало.
SD должна выдавать не меньше 4.5 Mbit/s.
У тебя на ПК при записи на эту SD какая скорость? Есть другие?
IDE выдал тоже не фонтан, хотя для PIO Mode 0, где максимальная 26 Mbit/s, в принципе не плохо.
В KOS как оказалось не настраиваются тайминги для шины и она похоже работает на минимальной скорости.
Я сейчас в DS попробую выставить тайминги для PIO Mode 3 после сканирования устройств, посмотрим что будет.


RE: G1-ATA Devices - cybdyn - 19.03.2014 10:31

попробовать ДМА?
также читать не по одному сектору , как вариант сразу 4 (2048 байт)?


RE: G1-ATA Devices - SWAT - 19.03.2014 12:59

(19.03.2014 10:31)cybdyn писал(а):  попробовать ДМА?
также читать не по одному сектору , как вариант сразу 4 (2048 байт)?

DMA еще реализовать надо, его пока нету.
Каждая программа читает столько, сколько ей нужно, а не по одному или по 4 сектора.
При копировании к примеру, буфер подбирается размером от 512 байт до 16 Кбайт, в зависимости от размера файла.
При тестировании скорости, буфер имеет размер 16 Кбайт.
Загрузчики образов, считывают все, что их попросила игра за раз, если образ конечно чистый ISO. В остальных случаях зависит от формата.
В общем в драйвере G1-ATA нет никакой завязки на количество секторов, кроме как при режиме LBA 28, в котором максимальное количество одновременно запрашиваемых секторов может быть 256. А это 128 Кбайт, что более чем достаточно для одной пачки в любом случае.

P.S.
Обновил ядро и бутлоадер, попробуй потестировать скорость сейчас и загрузится с бутлоадера.


RE: G1-ATA Devices - megavolt85 - 19.03.2014 14:16

SWAT, скорость ide до 10 мегабит упала , бутлоадер с ide систему не запускает
комп на sd пишет 12 мегабайт в секунду


RE: G1-ATA Devices - cybdyn - 19.03.2014 15:03

увидел в сырцах, есть такое 256 точно.

но вот кстати вычитывание не совсем оптимально.
- можно после появления drq прочитать h/l и считать больше чем 256 слов.
- во вторых если и так ясно что минимально привод.драйв выдаёт 256 (на всякслучай поставить проверку )
то можно быстрее считвать если например вместо

for(j = 0; j < 256; ++j) { *buf++ = IN16(G1_ATA_DATA); }

n = 4; // 8, 16 ...
for(j = 0; j < 256; j += n ) { buf[0] = IN16(G1_ATA_DATA);
buf[1] = IN16(G1_ATA_DATA);
buf[2] = IN16(G1_ATA_DATA);
buf[3] = IN16(G1_ATA_DATA);
buf += n;
}

по старому на одно чтeние идёт проверка и увеличения указателя, а так на эту группу. в асме ещё быстрее, но может компиль итак
оптимайзит

по ДМА можно глянуть как они B cdrom.c работают, и винту просто другую команду послать чтение-с-ДМА. следить только за дма а не DRQ.


RE: G1-ATA Devices - SWAT - 19.03.2014 15:28

(19.03.2014 14:16)megavolt85 писал(а):  SWAT, скорость ide до 10 мегабит упала , бутлоадер с ide систему не запускает
комп на sd пишет 12 мегабайт в секунду

О как... Блин я без девайса так запарюсь отладкой заниматься Sad Вернул обратно.
А бутлоадер с sd грузит?

(19.03.2014 15:03)cybdyn писал(а):  увидел в сырцах, есть такое 256 точно.

но вот кстати вычитывание не совсем оптимально.
- можно после появления drq прочитать h/l и считать больше чем 256 слов.
- во вторых если и так ясно что минимально привод.драйв выдаёт 256 (на всякслучай поставить проверку )
то можно быстрее считвать если например вместо

for(j = 0; j < 256; ++j) { *buf++ = IN16(G1_ATA_DATA); }

n = 4; // 8, 16 ...
for(j = 0; j < 256; j += n ) { buf[0] = IN16(G1_ATA_DATA);
buf[1] = IN16(G1_ATA_DATA);
buf[2] = IN16(G1_ATA_DATA);
buf[3] = IN16(G1_ATA_DATA);
buf += n;
}

по старому на одно чтeние идёт проверка и увеличения указателя, а так на эту группу. в асме ещё быстрее, но может компиль итак
оптимайзит

по ДМА можно глянуть как они B cdrom.c работают, и винту просто другую команду послать чтение-с-ДМА. следить только за дма а не DRQ.

Оптимизацией loop'ов заморачиваться уже давно не стоит, компилятор умеет это делать.
Не понял каким образом чтение H/L поможет увеличить размер сектора (256 слов = 512 байт = 1 сектор), ты что-то путаешь. Или есть твик по чтению сразу нескольких секторов, без ожидания после каждого из них drq?


RE: G1-ATA Devices - megavolt85 - 19.03.2014 15:31

SWAT писал(а):А бутлоадер с sd грузит?
Нет

на разделе с ext2 директории определяются как файлы


RE: G1-ATA Devices - cybdyn - 19.03.2014 16:13

ну по идее в когда заполняешь АТА реги перед засылкой команды, там указывается сколько секторов, адрес и по идее размер H/L сколько винт должен предоставить за один DRQ, по идее это 16-битное число,
в гдроме это H/L
правда это я по аналогии с гд-приводом, и PC ATAPI приводы тоже так действуют.
не уверен про PIO в АТА винтах.

может в PIO ATA както по другому. т.к в пакетных (ATAPI) там же параметры вписываются через рег данных, соответвенно H/L свободны и обозначают !ожидаемое! число байт за DRQ, но что реально готово к чтению после DRQ смотрим в H/L.

SWAT, я тоже потестировать хотел бы))), но пока в СПб, на след мог бы тоже потестировать, даже на осциле могу показать какая скорость...


RE: G1-ATA Devices - SWAT - 20.03.2014 06:20

(19.03.2014 15:31)megavolt85 писал(а):  на разделе с ext2 директории определяются как файлы

Как проверял? Что показывает "ls -l"?

(19.03.2014 16:13)cybdyn писал(а):  SWAT, я тоже потестировать хотел бы))), но пока в СПб, на след мог бы тоже потестировать, даже на осциле могу показать какая скорость...

Ну создавай аккаунт на Dropbox если у тебя его нету и говори мне логин.


RE: G1-ATA Devices - cybdyn - 20.03.2014 07:39

это обязательно? если пока просто на мэйл скинуть?
мне только ds или образ диска, я так понимаю?
или нужно компилить?


RE: G1-ATA Devices - cybdyn - 20.03.2014 07:51

см. Личку


RE: G1-ATA Devices - SWAT - 20.03.2014 08:08

(20.03.2014 07:39)cybdyn писал(а):  или нужно компилить?

Ничего не нужно, возьмешь просто папку build.


RE: G1-ATA Devices - megavolt85 - 20.03.2014 14:24

D$: ls -l
DS_PROCESS: Reading /ide1
4096 bytes .
4096 bytes ..
708608000 bytes evil.iso
4096 bytes DS
452200 bytes boot.bin
650868736 bytes Spawn.iso
Total: 6 files, 0 dirs

На свежей сборке выполняю speedtest /ide/test получаю Can't write to file


RE: G1-ATA Devices - SWAT - 20.03.2014 14:58

(20.03.2014 14:24)megavolt85 писал(а):  D$: ls -l
DS_PROCESS: Reading /ide1
4096 bytes .
4096 bytes ..
708608000 bytes evil.iso
4096 bytes DS
452200 bytes boot.bin
650868736 bytes Spawn.iso
Total: 6 files, 0 dirs

На свежей сборке выполняю speedtest /ide/test получаю Can't write to file

Понятно почему файлменеджер думает что это файл, из за размера. Я переделал определение файл/директория, теперь и в ext2 должно быть ок.

Can't write to file - Раньше была бешеная скорость, потому что не было проверки на ошибку записи, теперь она есть, поэтому и сообщение такое.
Писать не хочет ни на Ext2 ни на FAT?

Я обновил немного FAT, кое что в самой библиотеке, кое что в реализации для ядра, надеюсь даст немного прироста в скорости.
Так же сделал speedtest более честным, вместо блокировки треда с видео, а вообще его убираю на время.
Вроде нашел косяк с монтированием других разделов FAT, исправил, попробуй.


RE: G1-ATA Devices - megavolt85 - 20.03.2014 15:16

На разделе с ext2 директории стали открываться, speedtest на разделе с fat32 создаёт файл но не может в него записать, на разделе с ext2 файл не создаётся

Если fat32 раздел второй, то теперь он стал монтироваться и открываться. Писать отказывается, независимо от файловой системы и устройства


RE: G1-ATA Devices - SWAT - 20.03.2014 15:39

(20.03.2014 15:16)megavolt85 писал(а):  На разделе с ext2 директории стали открываться, speedtest на разделе с fat32 создаёт файл но не может в него записать, на разделе с ext2 файл не создаётся

Что же с записью то не так, явно проблема не в файловых системах...
А speedtest на чтение не пробовал? Монтируются другие разделы FAT?
Сегодня надеюсь добраться до дрима, посмотрю что у меня хотя бы с SD творится.


RE: G1-ATA Devices - megavolt85 - 20.03.2014 16:12

speedtest на чтение показывает от 24 до 28 мегабит. Другие разделы с fat32 монтируются

SWAT писал(а):Что же с записью то не так, явно проблема не в файловых системах...

может cybdyn внесёт ясность, я думаю его логи помогут понять в чем проблема


RE: G1-ATA Devices - SWAT - 20.03.2014 18:55

Отлично, 24-28 Mbit/s - вот это теперь можно смело назвать пределом PIO Mode 0.
Значит с файловыми системами все в норме, теперь можно переключится на другое.

Дело тут не только в G1-ATA, на SD тоже записи же нету Sad Так что сомневаюсь что cybdyn даст инфу по этому поводу.

К слову вот мои тесты SD:

SDHC 4GB Transcend class 6:
Код:
Test: read
Time: 2787 ms
Speed: 589.10 Kbytes/s (4.60 Mbit/s)
Size: 1641 Kb
Buff: 16 Kb

Не заработали:
microSDHC 8GB Transcend class 6 (в RC1 работала и была на 20 Kbytes/s быстрее 4GB карты)
microSDHC 32GB Samsung class 10

Что-то не нравится мне KOS'овский драйвер...


RE: G1-ATA Devices - megavolt85 - 20.03.2014 19:43

с записью бы разобраться, я б продолжил GD-Rip писать


RE: G1-ATA Devices - cybdyn - 20.03.2014 21:20

могу попробовать. вообщемто я пока просто смотрел как код написан, я хоть там смотрю?

http://sourceforge.net/p/cadcdev/kallistios/ci/4701ba49c8bb62a3fbd2be5655d8e6312112414a/tree/kernel/arch/dreamcast/hardware/g1ata.c#l380