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

Драйвер - это не обязательно компонент ПО для ПК.
А я как раз подумал именно об этом.

пришлось потратить несколько дней на написание и отладку своего варианта.
Если есть возможность, можно поделиться для старта?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если есть возможность, можно поделиться для старта?

Для старта.

Может поможет. В исходниках много отладочной информации касательно работы USB.

Правда, все для STM32F103. Но с минимальными "допиливаниями" (инициализация GPIO, NVIC) должно работать и на STM32F4.

usb_cdc_complex.zip

usb_hid_template.zip

stm32f103t4.txt

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С самой шиной никогда не работал. Язык Си знаю более менее, но до профи далеко, поэтому разобраться с библиотеками без помощи пока не могу. Работа с устройством со стороны хоста это уже другой вопрос и следующий этап.

На форуме st.com запомнилось следующее (в моем переводе): "Я считал , что хорошо знаю язык С, Но после ознакомления с билиотекой STM32_USB-Host-Device_Lib я понял , что этот язык я совершенно не знаю..." :crying:

 

Без комментариев. Скажу про свой опыт использования этой библиотеки и USB - движка STM. Мне нужно было именно разобраться в исходниках USB Device'ов, поставляемых с этой библиотекой. Опыт работы с шиной и понимание того, как она работает, имелось - я писал свои реализации Device'ов для HID и Mass-Storage для NXP и Atmel, а также писал свою реализацию хоста для Atmel ARM9, т.е., я знал, что делаю, почему и зачем. Так вот, движок от STM и оная библиотека буквально вынесли мне мозги. Ничего сложнее и иррациональнее ни до, ни после этого я не видел. Плюс отвратительно написанная и неполная документация от STM способна довести до психушки кого угодно (не знаю, может, сейчас они ее поправили).

 

Абсолютно согласен с этим мнением!

Мне пришлось сильно модернизировать Host из этой библиотеки для работы с др. классами USB-устройств (не HID и MSC), др.типов передач и нескольких конфигураций/интерфейсов. "Врагу не пожелаешь" :biggrin:

Потому хочется предупредить Вас, что этим можно заниматься имея большой запас времени и терпения!

 

К перечисленным недостаткам добавлю:

1. Отвратительная документация! Практически отсутствует достаточное описание API. Все приходится искать в коде. А про его качество уже много сказали....

2. Это не библиотека USB-стандарта в обычном понимании!!!! А только Очень ограниченная реализация только 2 классов USB устройств - HID и MSC. И для конкретной схемотехники оценочных плат. Любой шаг в сторону и головные боли вам обеспечены!

 

Из достоинств:

1. Бесплатная

2. Все-таки она рабочая

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Могу еще добавить - совершенно сознательно запутанная так, чтобы сложнее было разобраться.

 

Но, если это четко понимать, то, все равно, полезная. Большую часть описаний харда можно почерпнуть только из нее, поскольку иные описания на ST отсутствуют.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

.... Т.к. скорость не нужна большая и не хочется иметь кучу виртуальный com портов, решено было изучить класс USB HID Device. Поэтому есть несколько вопросов:

....

2. Какие именно файлы(исходники и хедеры) нужно подключать к проекту из библиотеки для этого класса устройств?

3. Есть ли толковое описание библиотеки USB?

По 2 вопросу. Надо открыть пример из этой библиотеки в среде (я в Keil открывал), для своего процессора и для своего класса USB. Компильнуть, увидеть что все компелится и потом посмотреть в кейле, какие файлы с и h подлключены именно к данному примеру. Потом только эти файлы надо поключать к своему проекту.

По 3 вопросу. Есть какое-то описание от STM, называется UM1021 http://www.st.com/st-web-ui/static/active/...rchtype=keyword

 

Примеры от STM по части USB VCP c небольшой недоработкой, там надо добавлять кусок кода, чтобы не зависнуть в этом USB коде при определенных условиях. Для HID тоже слышал о проблемах. Как-то оно работает, но до оптимальной работы надо допиливать. Да и это не совсем библиотека, это пример с добавкой всякого ненужного кода для моргания свтодиодом и т.д. Весь этот мусор потом надо вычищать.

Изменено пользователем vptr

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Могу еще добавить - совершенно сознательно запутанная так, чтобы сложнее было разобраться.

 

У меня иногда складывается ощушение, что производители контроллеров и производители демоплат и программисты, что пишут примеры(которые бесплатно распространяются) и производители платных решений -- это вся большая мафия ). Одни пишут что покупайте наши контроллеры -- для них есть бесплатные примеры. Другие, видимо, специально так коряво пишут эти примеры, чтобы покупались платные решения. :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ничего сложнее и иррациональнее ни до, ни после этого я не видел. Плюс отвратительно написанная и неполная документация от STM способна довести до психушки кого угодно (не знаю, может, сейчас они ее поправили).

Ещё час назад думал, что психушка обеспечена. Два дня поднимал CDC VCP.

Порт заработал, но осадочек остался... Такого отвратительного кода я не видел давно.

При чём раньше плевался, помнится, на StdPeriph Library, на её стиль, нотацию, код.

Ну никак не укладываются программные решения ST в какие-то удобные, локоничные формы...

 

Теперь волнует вопрос. Есть ли альтернативы StdPeriph Library и STM32_USB_Device_Library для stm32f4???

Хочется понять USB-стек, и не хочется видеть STM32_USB_Device_Library. Плюс хочется комфорта.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ещё час назад думал, что психушка обеспечена. Два дня поднимал CDC VCP.

Порт заработал, но осадочек остался... Такого отвратительного кода я не видел давно.

При чём раньше плевался, помнится, на StdPeriph Library, на её стиль, нотацию, код.

Ну никак не укладываются программные решения ST в какие-то удобные, локоничные формы...

 

Теперь волнует вопрос. Есть ли альтернативы StdPeriph Library и STM32_USB_Device_Library для stm32f4???

Хочется понять USB-стек, и не хочется видеть STM32_USB_Device_Library. Плюс хочется комфорта.

Первое впечатление обманчиво. Если поставить себе цель использовать STLib, то со временем черт получается не таким страшным как его принято малевать. С учетом нынешних объемов памяти и мегагерцев использование такого универсального средства как STLib в некоторых случаях можно оправдать. В своих проектах я ее не использую. Один раз на работе для достаточно нетривиального контроллера ради эксперимента решил попробовать - вроде работает и все довольны, и сопровождаемость возросла, и с камня на камень легко прыгнули (с F103 на F107), и FreeRTOS с uIP легко запустились. Просто не надо думать, что использование этой библиотеки освобождает Вас от чтения документации)) Скорее наоборот: библиотека, примеры от ST и документация дополняют друг друга. Повторюсь, сам эту библиотеку не использую, но без нее и примеров при запуске некоторых блоков (например, Ethernet с кучей магических констант) сидел бы над документацией и плевался ооочень долго. Мой диагноз: библиотеке быть! И хорошо, что она такая "плохая" - тем меньше соблазн ее использовать))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Прыгнуть с F103 на F107 легко, в 107 не нужен транзистор без которого в 103 не обойтись. Также со временем ушли от написания своих драйверов, под WIN(xp/7).

Но неприятность с USB, после 2006 года остается, когда нужно платить за большой пул. VID, PID свое берут.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Первое впечатление обманчиво. Если поставить себе цель использовать STLib, то со временем черт получается не таким страшным как его принято малевать.

...

В своих проектах я ее не использую.

...

И хорошо, что она такая "плохая" - тем меньше соблазн ее использовать))

Ну, собственно, хоть какая-то STLib лучше чем вообще её отсутствие.

Главная притензия, кстати, не к её производительности. А к её форме. Код с использованием либы выглядит мягко сказать неприглядным, сложным для прочтения. Вообще, это только они догадались объединить и верблюжью и венгерскую нотации, культурные программисты, как правило, так не делают. В результате разные куски кода получаются гарантированно в разных нотациях. Что глаз не радует. Это лишь вершина айсберга под названием "стиль библиотеки".

Если не секрет, чем пользуетесь Вы? Очень хотелось бы помахать ручкой STLib-е, если появится рациональная альтернатива (в плане переносимости и поддержки её сообществами).

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если не секрет, чем пользуетесь Вы? Очень хотелось бы помахать ручкой STLib-е, если появится рациональная альтернатива (в плане переносимости и поддержки её сообществами).

Я пользуюсь продукцией STM32F практически с самого ее рождения. Было время, когда STLib распространялась в виде либы и заголовочных файлов к ней (т.е. исходников не было или я их не нашел). Так вот в этой либе была ошибка, которая не позволяла использовать внешний кварц на 12МГц, а было фиксированное значение 8МГц (или я не нашел как это побороть). В это время мне не осталось ничего другого как начать писать свою собственную библиотеку. Несколько раз менял ее идеологию, в итоге пришел к заголовочному файлу со всеми регистрами и битами в периферии + комплект из .c и .h фалов для выполнения той или иной задачи (терминал на основе UART, ИК-приемник кодов, EMAC-уровень для Ethernet и т.п.)

Переносимость и поддержка только в своем окружении разработчиков, в сообществах поддержка нулевая))

Ибо задачу ставил сделать надежно-работающее изделие в условиях минимизации ресурсов МК. Т.е. в одни и те же ресурсы "впихнуть" как можно больше функционала.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я пользуюсь продукцией STM32F практически с самого ее рождения. Было время, когда STLib распространялась в виде либы и заголовочных файлов к ней (т.е. исходников не было или я их не нашел). Так вот в этой либе была ошибка, которая не позволяла использовать внешний кварц на 12МГц, а было фиксированное значение 8МГц (или я не нашел как это побороть). В это время мне не осталось ничего другого как начать писать свою собственную библиотеку. Несколько раз менял ее идеологию, в итоге пришел к заголовочному файлу со всеми регистрами и битами в периферии + комплект из .c и .h фалов для выполнения той или иной задачи (терминал на основе UART, ИК-приемник кодов, EMAC-уровень для Ethernet и т.п.)

Переносимость и поддержка только в своем окружении разработчиков, в сообществах поддержка нулевая))

Ибо задачу ставил сделать надежно-работающее изделие в условиях минимизации ресурсов МК. Т.е. в одни и те же ресурсы "впихнуть" как можно больше функционала.

Если вы произвели удобный и уже отлаженный продукт - почему его не популяризируете? Кто бы и что не говорил про велосипедописание - это полезное дело, т.к. в результате рождаются разные альтернативы имеющимся продуктам. А потом бывает и последователи находятся!

Если ваш вариант в спортивной форме - выкладывайте, я бы с удовольствием изучил!

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если вы произвели удобный и уже отлаженный продукт - почему его не популяризируете?

Тут все просто: я коммерческая организация, это не увеличит мои доходы, скорее наоборот...

Опытом делюсь с удовольствием, а наработками... увы))

Да, и продуктом это назвать сложно. Опять же нет хорошей документации (кроме описаний doxygen).

Скорее, конструктор, позволяющий за 1-3 дня поднимать средней тяжести проект, с дальнейшей недельной отладкой.

При наличии 100+ реализованных более-менее схожих проектов любой разработчик может придти к такому решению (а не продукту).

Главное решится "изобретать свой велосипед".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хих стандартное заблуждение)... скрывая наработки вы как раз ничего не приобретаете. Кроме вас есть еще много людей кто тоже поднял USB на этих процессорах. А вот раскрыв их вы можете получить, ревизию вашего кода, большее число тестировщиков, почет уважение, сообщество программистов, имя и так далее... Да прямых денег вам никто не даст, а косвенно может много сохранить.

К примеру превратить 1-3 дня на подъем + недельная отладка, в просто 1 день, но это не ваш случай...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...