Здравствуйте! Собрал недавно флешу на 64Кб Девайс собрал на МК Atmel ATTiny2313, пяти регистрах SN74HC164N, преобразователе уровней TTL RS232, и собственно памяти WinBond W24512AK-15, которую я снял со старой 486 мамки. Подрубается всё это безобразие к COM порту. Общение с флешой происходит следующим образом: Приём байта-команды (чтение или запись). Если чтение, то после след. 4х принятых байт(смещение) флеша пишет 4 байта данных в COM. Запись производится примерно таким же образом. Но так как девайс самодельный, то, естественно, никаких стандартных дров на него нет, а общаться с ним по Hyper Terminal'у уже надоело. Поэтому очень хотелось бы написать для него драйвер, но я никогда не писал драйвера для реальных устройств (только ring0 расширения для своих приложений). Хотелось бы, чтобы винда его видела как простой диск.
Поищи в инете книжку "Программирование драйверов Windows" В.П. Солдатов. Там есть про написание драйверов для железа. Или в магазинах поищи
Koshak Зачем же так сразу... Я давно мечтал собрать самопальный MP3 плеер, но знаний и средств не хватало, а тут воооо Здесь лежит исходник готового виртуального диска, он сохраняет/читает данные в файл, я думаю если убрать шифрование данных и заменить работу с файлом на работу с COM портом, то получится вполне рабочий вариант драйвера+GUI приложения. Правда монтировать придётся вручную
видел страничку со схемой и т.п. mp3 плеера на PIC сейчас поищу ссылку - наткнулся как-то на hackaday.com
Спасибо за ответы, книгу поищу в инете. А пока попробую разобраться с CrDisk Только вот как в COM порт писать, так же как и в user-mode - в файл \\.\COM1? И ещё, как можно реализовать поддержку PnP, то есть я вставляю флеш в COM, запускаю диспетчер устройств, и винда нахoдит девайс.
Как с файлом кажется (старнно, раньше об этом не задумывался) ZwCreateFile(); ZwWriteFile(); ZwReadFile(); Если хватит терпения, можно и прямо в порт. На счёт PnP, скорее не получится с этим драйвером, его надо переделывать на поддержку PnP+разбираться как системе дать понять, что вставили новый HDD... Ну тебе и карты в руки
ssx таких проектов (кустарный мп3) немерянно. только обычно размер получается солидный. вот тут размер как у обычного пм3шника: http://www.techdesign.be/projects/020/020.htm
Нет, я имел в виду PnP такой, как например у модема - его просто находит винда при поиске оборудования. Что-то же модем винде отвечает, что она его находит.
Ага. Dr.Golova Я уже обьяснил, что имею в виду. Просто хочу, чтобы винда знала, что на COM висит девайс. Модем же она детектит, хотя, как я вижу, он у меня висит на разьёме, который подозрительно похож на COM порт, хотя может я его с USB каким-то образом спутал??? Я вроде не писал про горячую замену? Или писал?
Да, вот что пишут "шутники" из Microsoft про PnP: 1.1 Features of Serial and Serenum This section describes the features of Serial and Serenum, the Microsoft® Windows® 2000 system drivers for serial devices. Serial implements the Serial service, and its executable image is serial.sys. Serial is used as: A function driver for legacy COM and Plug and Play COM ports Note that a COM port provides a 16550 UART-compatible interface. A lower-level device filter driver for a Plug and Play serial device that requires a 16550 UART-compatible interface An example of this configuration is a serial device on a PCMCIA card. Serial's operation as a filter driver is identical to its operation as a function driver. Serial features the following: Plug and Play, power management, and Windows Management Instrumentation (WMI) Power policy owner for a serial device stack that includes Serial Supports standalone COM ports and multiport boards Controls interrupts and communication with device hardware Serenum implements the Serenum service, and its executable image is serenum.sys. Serenum is an upper-level device filter driver that is used with serial port function drivers to enumerate the following serial devices on an RS-232 port: Plug and Play serial devices that comply with Plug and Play External COM Device Specification, Version 1.00, February 28, 1995 Pointer devices that comply with legacy mouse detection in Microsoft Windows NT® 4.0 and earlier versions The combined operation of Serial and Serenum provides the function of a Plug and Play bus driver for an RS-232 port. [/]Serenum supports Plug and Play and power management.[/b] Serenum does not support the Windows Driver Model, and should only be used with Windows 2000. Windows 2000 provides Serenum to support Serial and other serial port function drivers that need to enumerate an RS-232 port. Hardware vendors do not have to create their own enumerator for RS-232 ports. For example, a device driver can use Serenum to enumerate the serial devices that are attached to the individual RS-232 ports on a multiport device. Так что не так уж всё и плохо. ЗЫ: Спасбо SteelRat за сырцы crdisk Их я и возьму за основу.