· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ZEN —› DMA для CD-RW

Посл.отвђт Сообщенiе


Дата: Мар 20, 2004 10:48:30

Я писал программку для записи CD-RW дисков. Для передачи данных я не использовал DMA, а пересылал их через процессор:
... rep outsw ... (этот режим вроде как называют PIO). Так у меня возникла проблема: выше 4-ой скорости писать диски не получается. Вот не знаю ограничение ли это режима PIO? Компьютер новый: Celeron 2.5 ГГц, поэтому как то странно. То есть у меня вопрос: Могу ли я в режиме PIO писать диски например на 24 скорости если я например что то поменяю. Или мне придется использовать DMA. В случае если потребуется DMA,
подкиньте мне пожалуйста документацию, а то я что то ничего достаточно исчерпывающего для написания программы не нашел. Встречал какие то упоминания о PCI IDE, может надо использовать его, а то как я понял обычный контроллер DMA здесь использовать не получится. Кто в этом разбирается, расскажите пожалуйста, а то я уже похоже запутался с этим вопросом.


Дата: Мар 20, 2004 11:02:36

Если я правильно помню, 4SPEED CD=150*4=600Mb/S, а PIO MODE4 = 16,7Mb/s.
Наверное дело в другом, может медленный режим PIO используется. Кстати далеко не все резаки DMA поддерживают.


Дата: Мар 20, 2004 21:11:52 · Поправил: HeDiN

> 4SPEED CD=150*4=600Mb/S <

Наверное,правильно 4х=150кб/с*4=600кб/с.


Дата: Мар 20, 2004 21:57:41

Icebp
Поделитесь ссылкой как производить запись на болванки. Если возможно на русском.


Дата: Мар 21, 2004 22:14:32

У меня сейчас под рукой только свой старый исходник для записи CD-RW (последняя версия на домашнем компьютере), поэтому я пока здесь выкладываю старую версию. В ней есть некоторые недочеты, например в процедуре send_ATAPI для посылки ATAPI-пакетов следует посылать данные по-другому: mov cx,num_of_bytes; rep outsw. Ну а смысл работы с CD-RW
следующий: посылается ATAPI-пакет процедурой send_ATAPI, длина его 12 байт. Примеры пакетов: write_sec - запись секторов, clean - очистить диск CD-RW, close_track/session - закрыть трек/сессию, tray_in/out - задвинуть/извлечь трей и.т.д. При этом рекомендуется после посылки каждого управляющего пакета посылать пакет из 12 нулей (пакет blank) чтобы не было ошибок. Кстати посмотрите еще мой ответ в теме "Где найти спецификацию для работы с CD-ROM" (кажется так она называлась). Ну и наконец просьба: помогите мне кто-нибудь с DMA пожалуйста.

238394520__cdr_da.asm


Дата: Мар 21, 2004 22:30:12

IcebpНу и наконец просьба: помогите мне кто-нибудь с DMA пожалуйста
Я с DMA не занимался, но точно знаю одно - устройство должно работать через PIO на все скорости - может быть надо "rep movsd". А, и у некоторых CD-RW дисках есть лимит на скорость записи - может устройство определяет етот лимит автоматично.


Дата: Мар 24, 2004 18:28:20

Johnfound, с outsd у меня не работает, а когда пытаюсь писать с outsw например на 8-ой скорости, то он пишет с перерывами, то есть так как будто скорость поступления на него данных меньше 8-ой и ему приходится останавливаться, при этом скорость записи получается примерно 5-ой -- 6-ой. Вот у меня и возник вопрос: в чем же тут дело?
Как мне победить эту проблему?


Дата: Мар 24, 2004 19:06:26

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


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.094