Перейти к содержанию
    

Седой

Свой
  • Постов

    247
  • Зарегистрирован

  • Посещение

Весь контент Седой


  1. Нет. Похожая тема уже обсуждалась http://electronix.ru/forum/index.php?showt...=43434&st=0
  2. A WinUSB? http://msdn2.microsoft.com/en-us/library/aa476426.aspx http://www.microsoft.com/whdc/device/conne...nUsb_HowTo.mspx По поводу CyAPI.lib в BDS - ошибки скорее всего связаны с особенностями реализации кучи в различных версиях. В принципе можно сделать в BCB6 или в VC dll c экпортируемыми функциями - обертками методов классoв и применять в любом компиляторе.
  3. Сейчас готовим к продажам такое устройство. Подробности в личку.
  4. Обращаемся к первоисточнику О device setup class и device interface class (вам нужен device interface class ) - http://msdn2.microsoft.com/en-us/library/ms791677.aspx О GUID стандартных устройств - http://msdn2.microsoft.com/en-us/library/bb663138.aspx Для получение строки для открытия драйвера с помощью CreateFile - http://msdn2.microsoft.com/en-us/library/ms791129.aspx http://msdn2.microsoft.com/en-us/library/ms792901.aspx http://msdn2.microsoft.com/en-us/library/ms793116.aspx Пример использования http://msdn2.microsoft.com/en-us/library/aa476413.aspx еще http://msdn2.microsoft.com/en-us/library/b...769(VS.85).aspx
  5. Хотя сам производитель NET2890 (plxtech) пишет в datasheet про этот вывод - "It is intended for debugging purposes only". С точки зрения доставабельности и надежности - PIC18FX455/X550 -развязка - внешний USB приемопередатчик (например ISP110X от NXP или MAX3454 от Maxim) получше будет (ИМХО). Возможно также с помощью двух приемопередатчиков и собственно развязку сделать можно.
  6. Оказываем услуги по разработке драйверов для Windows систем (от NT4 до Vista). Также сопутствующее API - dll,ocx,.net. Помощь в разработке firmware вашего устройства (или разработка полностью ).
  7. Выглядит неплохо, только изюминка в выходе USBOE у NET2890, а не в IL710 (вместо них можно использовать развязки от AD, TI, Silabs). И для развязки готового устройства не применимо.
  8. Посмотрите в Тритоне - вроде MCP2551 есть - http://www.trt.ru/Stock.php?Manf=3
  9. Как в программе тестирования определяется экземпляр устройства, с которым она должна работать?
  10. Я бы поставил другой. PCA82C251 - из серии первого поколения приемопередатчиков от NXP, TJAXXXX - более новые. Кроме NXP есть большая серия передатчиков у TI. С доставабельностью проблем нет (например Компел).
  11. Это делает приемопередатчик, например TJA1040, TJA1050, MCP2551 и т.д (см. Dominant TimeOut).
  12. Попытаюсь оказать вам посильную помощь, но сначаля вопросы: 1. "Стандартный USBBulk.sys" - драйвер из DDK bulkusb.sys или из DriverStudio usbbulk.sys ? 2. Какой программой для тестирования пользуетесь? 3. В секции [DrivertFiles.Inf] указан atmel.inf? Откуда и для чего этот файл?
  13. Возможно, поможет http://projects.caxapa.ru/index.html?ID=78
  14. Ответ: это невозможно. PS. Советую ознакомиться с основами Win32 ( процессы, потоки, окна, сообщения, взаимодействие user и kernel и т.д). PS2. Сообщения таймера имееют самый низкий приоритет обработки, даже ниже чем WM_PAINT.
  15. Совершенно верно. Хост анализирует первые 8 байт, чтобы определить размер пакета для EP0, и транзакция состоит из одного пакета. (Минимальный размер пакета 8 байт).
  16. По моему нужно сделать FAQ по USB и занести туда первым описание порядка энумерации. Цитата из "USB in a Nutshell" www.beyondlogic.org : Enumeration is the process of determining what device has just been connected to the bus and what parameters it requires such as power consumption, number and type of endpoint(s), class of product etc. The host will then assign the device an address and enable a configuration allowing the device to transfer data on the bus. A fairly generic enumeration process is detailed in section 9.1.2 of the USB specification. However when writing USB firmware for the first time, it is handy to know exactly how the host responds during enumeration, rather than the general enumeration process detailed in the specification. A common Windows enumeration involves the following steps, 1. The host or hub detects the connection of a new device via the device's pull up resistors on the data pair. The host waits for at least 100ms allowing for the plug to be inserted fully and for power to stabilise on the device. 2. Host issues a reset placing the device is the default state. The device may now respond to the default address zero. 3. The MS Windows host asks for the first 64 bytes of the Device Descriptor. 4. After receiving the first 8 bytes of the Device Descriptor, it immediately issues another bus reset. 5. The host now issues a Set Address command, placing the device in the addressed state. 6. The host asks for the entire 18 bytes of the Device Descriptor. 7. It then asks for 9 bytes of the Configuration Descriptor to determine the overall size. 8. The host asks for 255 bytes of the Configuration Descriptor. 9. Host asks for any String Descriptors if they were specified. At the end of Step 9, Windows will ask for a driver for your device. It is then common to see it request all the descriptors again before it issues a Set Configuration request. The above enumeration process is common to Windows 2000, Windows XP and Windows 98 SE. Step 4 often confuses people writing firmware for the first time. The Host asks for the first 64 bytes of the device descriptor, so when the host resets your device after it receives the first 8 bytes, it is only natural to think there is something wrong with your device descriptor or how your firmware handles the request. However as many will tell you, if you keep persisting by implementing the Set Address Command it will pay off by asking for a full 18 bytes of device descriptor next.
  17. Да нет, такие же требования как у Вас.
  18. Из опыта: допустим проверили 2KB достаточно - нагрузили систему сторонними задачами , как только могли. На тачке разработчика все прекрасно работает, на других тачках в конторе тоже, отдаем знакомым геймерам - тоже работает. В конечное устройство ставим минимум 32KB. К сожалению Windows не realtime система, живет собственной жизнью, да и пользователи имеют свойство использовать ее по собственному разумению.
  19. IO-манагер вы не обходили. Я уже здесь сообщал, как (ИМХО) правильно нужно сделать (в том числе и обойти IO-манагер). 1. Реализовать процедуру запрос-ответ в одном CONTROL_IO в драйвере, чтобы свести к минимуму обращения из приложения в драйвер и обратно. ( у вас 4, а получится 2) 2. Применять в драйвере асинхронные обращения к нижележащему драйверу, функции завершения которых работают в DISPATCH_IRQL. (EzUsb использует синхронные, которые выполняются в контексте ваших потоков, и ждет срабатывания Event от дравера шины) PS. Можно также повысить приоритет потоков, но это не рекомендуется.
  20. Это для всех драйверов так. EzUsb - отличный пример драйвера c исходниками , тем более есть исходники для DriverStudio. Использовали при разработке своих. Проблема еще та. Дело в том, что Microsoft довольно смутно ( даже мутно) документирует свой планировщик потоков. Для однопроцессорной системы некоторые вещи проходили - забыл поставить SpinLock на возможно разделяемых данных и черт с ним, на многопроцессорной системе это уже не прокатывает. Много ли было раньше у разработчиков драйверов доступных для для теста многопроцессорных машин? Посмотрите в исходнике того же EzUsb (лучше из DriverStudio, в нем нагляднее) на реализацию поллинга Interrupt Ep. Сделайте похожее для считываения во внутренний буфер драйвера для Bulk. Буфер сделайте побольше. А из приложения через DeviceIoControl считывание данных из него (см. исходник serial.sys в том же DDK или DriverStudio). И не будете связываться с потоками. У вас получится постоянно готовый для приема из устройства канал передачи данных. Если есть данные - устройство пишет их в него, нет - пишет пакет нулевой длины.
  21. Откуда Вы это взяли. В первый раз слышу, а по исходнику не вижу. Если Вы имеете в виду MAX_TRANSFER_SIZE = 64 kb, то это к скорости никакого отношения не имеет. Если Вам нужно за один раз передавать больше, что мешает изменить это значение? http://support.microsoft.com/default.aspx?...b;en-us;Q832430
  22. Судя по логу, Вы что-то не так сделали.
  23. Для EzUsb можно только через использование раздельных потоков чтения и записи, запуская чтение раньше записи.
  24. По CyUSB ничего сказать не могу, нет исходников. Попробуйте EzUsb. Это вы спросите у Microsoft и Cypress. PS. Какую версию SuiteUSB используете?
×
×
  • Создать...