Дрова для самодельной флешки

Тема в разделе "WASM.WIN32", создана пользователем xdev86_, 26 фев 2006.

  1. xdev86_

    xdev86_ New Member

    Публикаций:
    0
    Регистрация:
    26 фев 2006
    Сообщения:
    13
    Здравствуйте!



    Собрал недавно флешу на 64Кб ;) Девайс собрал на МК Atmel ATTiny2313, пяти регистрах SN74HC164N, преобразователе уровней TTL RS232, и собственно памяти WinBond W24512AK-15, которую я снял со старой 486 мамки. Подрубается всё это безобразие к COM порту.



    Общение с флешой происходит следующим образом:

    Приём байта-команды (чтение или запись).

    Если чтение, то после след. 4х принятых байт(смещение) флеша пишет 4 байта данных в COM.

    Запись производится примерно таким же образом.



    Но так как девайс самодельный, то, естественно, никаких стандартных дров на него нет, а общаться с ним по Hyper Terminal'у уже надоело. Поэтому очень хотелось бы написать для него драйвер, но я никогда не писал драйвера для реальных устройств (только ring0 расширения для своих приложений). Хотелось бы, чтобы винда его видела как простой диск.
     
  2. Koshak

    Koshak New Member

    Публикаций:
    0
    Регистрация:
    21 фев 2006
    Сообщения:
    31
    Адрес:
    Russia
    Поищи в инете книжку "Программирование драйверов Windows" В.П. Солдатов.

    Там есть про написание драйверов для железа.

    Или в магазинах поищи :)
     
  3. SteelRat

    SteelRat New Member

    Публикаций:
    0
    Регистрация:
    26 авг 2004
    Сообщения:
    409
    Koshak Зачем же так сразу... Я давно мечтал собрать самопальный MP3 плеер, но знаний и средств не хватало, а тут воооо :)

    Здесь лежит исходник готового виртуального диска, он сохраняет/читает данные в файл, я думаю если убрать шифрование данных и заменить работу с файлом на работу с COM портом, то получится вполне рабочий вариант драйвера+GUI приложения. Правда монтировать придётся вручную :)
     
  4. ssx

    ssx Member

    Публикаций:
    0
    Регистрация:
    19 авг 2003
    Сообщения:
    336
    видел страничку со схемой и т.п. mp3 плеера на PIC :)

    сейчас поищу ссылку - наткнулся как-то на hackaday.com
     
  5. xdev86_

    xdev86_ New Member

    Публикаций:
    0
    Регистрация:
    26 фев 2006
    Сообщения:
    13
    Спасибо за ответы, книгу поищу в инете. А пока попробую разобраться с CrDisk :) Только вот как в COM порт писать, так же как и в user-mode - в файл \\.\COM1? И ещё, как можно реализовать поддержку PnP, то есть я вставляю флеш в COM, запускаю диспетчер устройств, и винда нахoдит девайс.
     
  6. SteelRat

    SteelRat New Member

    Публикаций:
    0
    Регистрация:
    26 авг 2004
    Сообщения:
    409
    Как с файлом кажется (старнно, раньше об этом не задумывался)

    ZwCreateFile();

    ZwWriteFile();

    ZwReadFile();

    Если хватит терпения, можно и прямо в порт.

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

    Ну тебе и карты в руки ;)
     
  7. requiem

    requiem New Member

    Публикаций:
    0
    Регистрация:
    4 сен 2005
    Сообщения:
    71
    ssx

    таких проектов (кустарный мп3) немерянно. только обычно размер получается солидный.

    вот тут размер как у обычного пм3шника:

    http://www.techdesign.be/projects/020/020.htm
     
  8. Dr.Golova

    Dr.Golova New Member

    Публикаций:
    0
    Регистрация:
    7 сен 2002
    Сообщения:
    348
    > реализовать поддержку PnP



    Ага, а еще горячую смену устройств на СОМ порту. Шутники аднако :)
     
  9. xdev86_

    xdev86_ New Member

    Публикаций:
    0
    Регистрация:
    26 фев 2006
    Сообщения:
    13
    Нет, я имел в виду PnP такой, как например у модема - его просто находит винда при поиске оборудования. Что-то же модем винде отвечает, что она его находит.
     
  10. SteelRat

    SteelRat New Member

    Публикаций:
    0
    Регистрация:
    26 авг 2004
    Сообщения:
    409
    Dr.Golova

    :)
     
  11. ssx

    ssx Member

    Публикаций:
    0
    Регистрация:
    19 авг 2003
    Сообщения:
    336
    как показывает опыт, com-порты замечательно выгорают от "горячей смены устройств" :)
     
  12. xdev86_

    xdev86_ New Member

    Публикаций:
    0
    Регистрация:
    26 фев 2006
    Сообщения:
    13
    Ага.

    Dr.Golova

    Я уже обьяснил, что имею в виду. Просто хочу, чтобы винда знала, что на COM висит девайс. Модем же она детектит, хотя, как я вижу, он у меня висит на разьёме, который подозрительно похож на COM порт, хотя может я его с USB каким-то образом спутал??? Я вроде не писал про горячую замену? Или писал?
     
  13. xdev86_

    xdev86_ New Member

    Публикаций:
    0
    Регистрация:
    26 фев 2006
    Сообщения:
    13
    Да, вот что пишут "шутники" из 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 :) Их я и возьму за основу.