Я решил, что проект дошел до той степени готовности, когда можно рассказать о нем уважаемому сообществу.
Тема ATA/ATAPI давно меня интересовала, хотелось понять, как оно работает изнутри, да и чувствовалось, что есть потребность в подобном устройстве. Особенно для эмуляции ATAPI.
Основной идеей при разработке была универсальность. Я хотел создать такое сочетание железа и софта, чтобы одним устройством можно было покрыть все возникающие задачи и требования:
- Эмуляция ATA НЖМД произвольного объема, поддержка CHS/LBA адресации.
- Эмуляция ATAPI CD-ROM. Поддержка аналогового вывода для AUDIO дорожек.
- Эмуляция прочих ATAPI устройств, в частности Iomega ZIP.
- Поддержка режимов передачи: PIO/DMA/UDMA.
- Возможность работы в режиме хоста: накопитель подключается к эмулятору. Для снятия дампов идентификаторов, просмотра секторов, копирования в образ.
- Носитель для образов: SD карта. Отсутствие необходимости конвертировать образы в спецформат.
- USB-интерфейс для настройки и вывода отладочной консоли.
- Возможность подключения I2C OLED экрана для отображения статуса устройства.
- Минимум три кнопки для оперативного выбора образа, настроек.
- Возможность работы как с очень старыми, так и с современными компьютерами и устройствами.
Особенностью устройства является гибкость в работе с идентификационными данными. При наличии дампов “IDENTIFY DEVICE” для ATA или “IDENTIFY PACKET DEVICE”, “INQUIRY”, “MODE SENSE” для ATAPI устройств, эмулятор выглядит для компьютера именно тем устройством, с которого сняты дампы. Устройство поддерживает несколько профилей эмуляции с возможностью переключения между ними на лету.
Для соответствия информации в ATA ID конкретному образу, при его загрузке производится изменение параметров, отвечающих за объем накопителя. Также изменяются параметры, отвечающие за режим передачи данных PIO/DMA/UDMA для приведения их в соответствие возможностям эмулятора.
Для ATAPI ZIP100 реализованы vendor specific команды получения ID дискеты. На данный момент работает только чтение и запись в заранее подготовленные 100Мб RAW образы. Образы монтируются как виртуальный диск в Windows.
Тестирование на соответствие стандартам ATA/ATAPI производилось с помощью утилиты ATACT (www.ata-atapi.com). Неоднократные часовые прогоны ошибок не выявили.
Устройство проверялось на компьютерах:
- 386 c ISA Multi-I/O картой как в качестве основного диска, так и CD-ROM/ZIP100 с подключением к IDE порту звуковой платы.
- Pentium/AMD-K6 Socket 7 в различных режимах.
- Core i5 c USB-IDE адаптером в режиме ATA HDD и ATAPI CD-ROM.
Вопросы:
- Нужна ли поддержка SPDIF-выхода аудио данных?
- Насколько нужна поддержка UDMA и высокоскоростных режимов PIO/DMA?
- Нужна ли поддержка выбора образа из самой хост-системы? Например, с помощью программы для DOS/Windows, получающей список образов с SD карты и позволяющей его выбрать.
- Нужна ли поддержка одновременной работы в Master и Slave режиме с возможностью эмуляции разных приводов? Сейчас поддерживается только одно устройство Master-only.
В комплекте только полностью спаянное и проверенное устройство без доп. модуля I2S DAC PCM5102, который можно купить на али или в интернет-магазинах.
После появления финальной версии прототип будет бесплатно заменен (по желанию).
Буду рад вопросам и предложениям.