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 - 20.03.2014 21:22

Да там.


RE: G1-ATA Devices - cybdyn - 20.03.2014 22:27

из того что у меNя под вопросом в коде.
1- не ясно почему ждем BUSY а не drq.
/* Wait for the device to signal it is ready. */
g1_ata_wait_nbsy(); <--- ???

/* Send the data! */
for(j = 0; j < 256; ++j) {
OUT16(G1_ATA_DATA, *buf++);

в начале может оно и надо ждать busy, но потом смотрим drq, это как чтение -только тут мы вписываем в рег данных ,
т.е бит drq обозначает готовность устройства к обмену ( чтения или записи..)
но это B идеале если команда правильная и с параметрами ок. а так вообще то после того как bsy упал, надо смотреть статусник и ещe какойто рег (1ый после рега данных, или 2ой ) - тем самым смотрим нет ли ошибки и готовность устройства к обмену., точнее к приёму данных
а тут както в лоб, bsy упал - и тут же пишим данные в устройство...))))

2- не заметил проверку окончания операции, обычно получают прерывание об окнчании операции , по котороmy считывают статус. причем при чтении статусного рега сбрасывается прерывание (подтверждаетя) , по альт статусу онo не сбрасывается, но тоже выдаёт статус.

если в случае работы не попрерыванию, не знаю, наверно следим за bsy и смотри статусный рег. нет ли ошибки , и опятьже 1ый (или 2ой) что операция complete


RE: G1-ATA Devices - SWAT - 20.03.2014 22:46

(20.03.2014 22:27)cybdyn писал(а):  если в случае работы не попрерыванию, не знаю, наверно следим за bsy и смотри статусный рег. нет ли ошибки , и опяже 1ый (или 2ой) что операция complete

Да так оно сейчас и есть. Прерывания будут реализованы когда будет DMA я думаю.


RE: G1-ATA Devices - cybdyn - 20.03.2014 22:56

вообщемто и не-пo-прерыванию тоже работаю люди. просто понимаem, что bsy пропал - значит появился какойто статус. далее по контексту если всё good... после вписывания обозначенного количества в рег данных винта, bsy опять встаёт - говоря о том что устройство занято записью... поэтому ждём когда опять упадёт bsy. и смотрим статус.

с ДМА тоже може без прерываний работать...

прерывание даст просто ресурс проца программе, вместо того чтобы ждать бизи и статусы...


RE: G1-ATA Devices - SWAT - 21.03.2014 07:45

(20.03.2014 22:56)cybdyn писал(а):  с ДМА тоже може без прерываний работать...

прерывание даст просто ресурс проца программе, вместо того чтобы ждать бизи и статусы...

Ну так в этом то и дело, DMA в принципе служит для разгрузки проца, а если проц будет ждать значение регистра, опрашивая его постоянно, то вся разгрузка на смарку считай. А в PIO режиме в этом особого смысла нету. Отсюда и мое предположение, что будет это реализовано вместе с DMA.


RE: G1-ATA Devices - cybdyn - 21.03.2014 08:30

dma намного быстрее pio, если не сказать что вообще высасывает данные )))
т.е если даже не делать прерывания, dma должно проявить себя)))


RE: G1-ATA Devices - SWAT - 21.03.2014 12:12

(21.03.2014 08:30)cybdyn писал(а):  dma намного быстрее pio, если не сказать что вообще высасывает данные )))
т.е если даже не делать прерывания, dma должно проявить себя)))

Не ну это понятно, с DMA в принципе скорости другие. Но все равно нагружать проц. опросом статуса в ожидании DMA как то не правильно.


RE: G1-ATA Devices - Wind - 21.03.2014 21:08

Если ждать статуса от передачи по DMA то смысла в DMA не будет. Только вот Вам наверное придеться повозится с модингом обработчика прерывания стандартного.


RE: G1-ATA Devices - cybdyn - 22.03.2014 10:49

ожидание окончания по ДМА, намного меньше ожидания данных в пио и их последующего вычитывания.

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


RE: G1-ATA Devices - Wind - 22.03.2014 12:16

Быстрее не быстрее, а смысл в том что без прерываний это пустая трата времени. Лучше оставить PIO тогда уж. А модинг обработчиков не простой, но и не так чтобы слишком уж сложный. От внешних устройств у дрима события весят на 0x5f6904 регистре, этот регистр содержит статусы модема, сетевой карты и т.п. Т.е. модинг не простой да, но задача вполне себе решаемая. Все основные статусы весят на 0x5f6900 т.е. модинг не коснется работы в целом.


RE: G1-ATA Devices - SWAT - 22.03.2014 17:37

Дело в том что фактически по скорости, в PIO режиме мы получили сейчас только Mode 0 (3 MB/s), а Multiword DMA Mode 2 должна выдавать около 16 MB/s, так что разница ощутима, не важно с прерываниями или без.
Но, если заставить работать в PIO Mode 3 или даже 4 (если шина вообще поддерживает), вот тогда смысла не будет без прерываний делать DMA, ибо скорости там такие же получаются.


RE: G1-ATA Devices - cybdyn - 22.03.2014 17:38

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

обработчики и регистры тут не причём. это ясно что они както использоваться будут. в обработчике же надо чтото вызвать или записать в какуто переменную - что данные пришли, или уже считаны по дма.
что такое работа по прервапнию - это пришёл запрос на чтение , мы записали в реги ДМА нужные параметры, потом в реги АТА , и команду на чтение - и выходим из функции. далее - по прерыванию от дма - проц входит в обработчик, видим что данные считаны ..и что дальше???

во вторых не факт что все команды на чтение обязательно работaют асинхронно. может както передаётся параметр, чтобы не выходить из функции чтения пока не считаются данные или не будет ошибки.
либо есть отдельный сискол синхронизации завершения операций от привода.

без понимания как их встроить эти прерывания - приводит к тому что они живут своей жизнью,))) а приложение или ждёт или давно думает что всё прочитано)))


RE: G1-ATA Devices - SWAT - 22.03.2014 20:49

С сисколами проблем в общем то не будет, там все сделано так, чтобы был асинхрон или синхрон по желанию (3 сискола используется в комбинации).


RE: G1-ATA Devices - megavolt85 - 23.03.2014 04:02

SWAT вот вывод запуска
g1ata-ext2fs.elf (Click to View)
P.S. всё же дело было не в кабеле, вернул адаптер на ILX232D по трёх проводной схеме и перегрузился в винду


RE: G1-ATA Devices - SWAT - 23.03.2014 10:08

О ну хорошо, теперь тебе по удобней будет разработку вести, если сделаешь еще какой то автоматический хотсвап Serial <-> SPI Smile))
Откуда там такие ошибки конечно валятся не понятно, но это ладно. Записался файл то или нет? Попробуй еще пример с sd так же.


RE: G1-ATA Devices - megavolt85 - 23.03.2014 14:14

Файл не создался


RE: G1-ATA Devices - SWAT - 23.03.2014 17:18

Пробовал отформатировать вторую партицию на SD в EXT2:
Код:
mke2fs sd 1

Ошибок не выдает, форматирование завершается успешно. Раздел этот монтируется в DS без проблем, но файл записать не получается Sad Даже корневую директорию просто прочитать не получается.
Похоже придется баг-репорт писать для KOS...

megavolt85 может попробуешь на HDD это сделать? Надо убедится окончательно.


RE: G1-ATA Devices - OzOnE - 24.03.2014 06:32

@SWAT - Does this mean you got your G1 adapter working OK with an SD adapter now?

I have a lot of catching up to do. lol

I have my Dreamcast out again, and will be testing cybdyn's DCIO code this week.

I can ask Lawrence (BlueCrab) directly about any questions on the KOS IDE code.
He wrote the PIO code after I sent him a G1 adapter, so he should be able to fix any bugs (if he's not too busy.)

I'll really be trying to get into the DC stuff again now, as I'm just getting over a bad Flu.

OzOnE.


RE: G1-ATA Devices - SWAT - 24.03.2014 12:20

(24.03.2014 06:32)OzOnE писал(а):  @SWAT - Does this mean you got your G1 adapter working OK with an SD adapter now?

I have a lot of catching up to do. lol

I have my Dreamcast out again, and will be testing cybdyn's DCIO code this week.

I can ask Lawrence (BlueCrab) directly about any questions on the KOS IDE code.
He wrote the PIO code after I sent him a G1 adapter, so he should be able to fix any bugs (if he's not too busy.)

I'll really be trying to get into the DC stuff again now, as I'm just getting over a bad Flu.

SD and IDE works for read, but with write we have some strange problems on both devices.
This is similar to the problem in the file system, but both the file systems (FAT and EXT2) behave roughly the same.
I'm still not sure exactly what is the problem, I will try to find the reason for a while.
If it turns out that this is a problem in KOS, then I'll write to BlueCrab on dcemulation or IRC. I already asked him there to fix other bugs.


RE: G1-ATA Devices - cybdyn - 24.03.2014 13:35

chk ATA specification?))

anyway if READ works, it's enough for play games)))