|
Своя программная обёртка USB stm32, Создание своего драйвера USB для STM32 |
|
|
|
Aug 4 2017, 06:59
|
Группа: Участник
Сообщений: 12
Регистрация: 15-05-17
Пользователь №: 97 085

|
Работаю над собственным драйвером для USB в STM32 , что-то мало материала. 99 % как скомпилировать готовый пример. Кто занимался аналогичной задачей? В принципе значительная часть уже сделана.
|
|
|
|
|
 |
Ответов
(30 - 44)
|
Aug 7 2017, 15:50
|
Знающий
   
Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839

|
Цитата(jcxz @ Aug 7 2017, 11:03)  У меня тоже - почти всё своё  Кроме RTOS разве что. Хотя и к ней тоже порт - свой, ну ещё кой-какие её корректировки. А так и USB-device (когда нужен) - свой, и TCP-стек - свой, и графические библиотеки - тоже свои, о математике и прочих фильтрах и не говорю...  Ну и правильно  Цитата Это как я понимаю - массивы указателей на обработчики? Они у Вас во флешь или интерактивно в runtime-е в ОЗУ создаются? Нет, макросы разворачиваются прямо в код из цепочки if/else и выховы функций без использования указателей. Цитата У меня тоже так же сделано. Только имена макросов другие   Цитата(AlexandrY @ Aug 7 2017, 13:11)  Видите, вы даже толком не можете описать "своё" Потому что документацию на него не делали, а API ваше фрагментарное и архаичное. Небось и полного тестирования не делали, и даже профайлинга. Такого недокументированного всеми забытого добра на гитхабе тоннами лежит. Ну вот еще один пуп вселенной, которому все должны - проходите мимо, я Вас не задерживаю. И да продолжайте хамить - сразу видно, что на другое не способны...
|
|
|
|
|
Aug 7 2017, 16:26
|
Знающий
   
Группа: Свой
Сообщений: 558
Регистрация: 26-11-14
Из: Зеленоград
Пользователь №: 83 842

|
Цитата(AlexandrY @ Aug 7 2017, 18:45)  У них форум есть с обсуждением комьюнити версии MQX. Они там ее модифицируют как хотят. Как они это делают не делясь исходниками? То что они не собираются наказывать своё комюнити, в тех случаях когда они считают нарушения незначительными это одно. А вы, к примеру, выкладывая что-то завязанное на MQX на тот же гитхаб - нарушаете лицензию, это другое. Поймите нет второго сорта лицензионной чистоты, когда вы почти "соблюдаете" лицензию. Либо ваш продукт белый в плане лицензий, либо он их нарушает и вы находитесь из-за этого в зоне риска. Это как с электриками которые нарушают ТБ - не все сталкиваются с последствиями своих нарушений, но это не значит что так поступать правильно. Цитата(AlexandrY @ Aug 7 2017, 18:45)  А привязка к узкому семейству чипов это даже хорошо, не будет ненужных веток и фрагментации. Ммм, давайте не будем называть недостатки достоинствами?
|
|
|
|
|
Aug 7 2017, 16:48
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(Kabdim @ Aug 7 2017, 19:26)  Это как с электриками ... Ммм, давайте не будем называть недостатки достоинствами?  При чем тут электрики если вы плохо поняли лицензию. Вот у меня выложен стек USB. Абсолютно лицензионно чисто. А недостатком привязка возможно была до того как объявили о i.MX RT. А теперь это только достоинство.  Цитата(Шаманъ @ Aug 7 2017, 18:50)  Ну вот еще один пуп вселенной, которому все должны - проходите мимо, я Вас не задерживаю. И да продолжайте хамить - сразу видно, что на другое не способны... Уважаемый, если вы тут хотите продавать, то что лежит бесплатно на каждом углу, то имейте совесть. И не флудите в форуме.
|
|
|
|
|
Aug 7 2017, 17:51
|
Группа: Участник
Сообщений: 12
Регистрация: 15-05-17
Пользователь №: 97 085

|
Цитата(prottoss @ Aug 5 2017, 14:18)  Нате, глумитесь. Премного благодарен! Многая лета. В книге 'Making Embedded systems' описывается шаблон программирования МК под названием 'драйвер', ну это так. Залез в USB-FS-Device_Lib_V4 и ужаснулся, мрачное нагромождение файлов и не понятно по какому принципу. Меня интересовало как можно подойти к проблеме. Общая схема, два конечных автомата, один автомат отвечает за переходы между состояниями USB устройства, а второй за сборку управляющих запросов из отдельных транзакций. После сборки сообщения , передаётся первому автомату и служит событием, которое может изменить его состояние. Когда смоделировать поведение устройства оказывается затруднительным одним автоматом, то оказывается просто смоделировать несколькими конечными автоматами, взаимодействующими друг с другом передачей сообщений.  Но при ближайшем рассмотрении выяснилось, что обработку управляющих запросов от хоста невозможно представить одним конечным автоматом. Схема сложней. После выполнения транзакции SETUP нужно раскодировать конфигурационный пакет. По результатам расшифровки выбирается один из некоторого множества конечных автоматов, отражающий запрос. Ниже граф переходов для запроса GET_DESCRIPTOR c несколькими стадиями данных. Транзакции выполняются аппаратурой автоматически, по результатам выполнения выставляют флаги. Хост инициирует тр. setup, из сост. I переходит в S, готовит буфер USB для следующей транзакции от хоста и т.д.
Эскизы прикрепленных изображений
|
|
|
|
|
Aug 7 2017, 18:34
|
Знающий
   
Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839

|
Цитата(AlexandrY @ Aug 7 2017, 19:48)  Уважаемый, если вы тут хотите продавать, то что лежит бесплатно на каждом углу, то имейте совесть. И не флудите в форуме. Уважаемый, тут нет покупателей, чтобы что-то продавать Да и кому продавать у меня есть, как пример, на применение моей RTOS были куплены эксклюзивные права вместе с поддержкой-сопровождением одной не нашей конторой, которая с ней выпускает девайсы тиражем несколько десятков тысяч в год (видимо на каждом углу у них не получилось найти  ), так что вопрос продаж меня совсем не волнует, уж поверьте...
Сообщение отредактировал Шаманъ - Aug 7 2017, 18:36
|
|
|
|
|
Aug 8 2017, 04:00
|
Группа: Участник
Сообщений: 12
Регистрация: 15-05-17
Пользователь №: 97 085

|
И ещё вопрос для специалистов. Могут ли быть вложенными управляющие передачи? Например, началась передача setup и не завершая её хост начинает новую? Из разных источников разные ответы, по-моему полная ерунда. То что хост может внезапно закончить начатаю передачу, это знаю. А вот вложенные передачи? Тогда нужно складывать контекст. Да и какой максимальный уровень вложенности? В "USB complete" написано что вроде как могут быть вложенные.
|
|
|
|
|
Aug 8 2017, 14:02
|

Гуру
     
Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659

|
Цитата(AlexandrY @ Aug 7 2017, 22:48)  При чем тут... Я попрошу Вас, как модератора, не флудить в ветке! Вы не одного поста по теме не написали... Как обычно, в прочем. Цитата(linuxbergi @ Aug 7 2017, 23:51)  Но при ближайшем рассмотрении выяснилось, что обработку управляющих запросов от хоста невозможно представить одним конечным автоматом. Схема сложней... Заблуждаетесь. Совершенно один конечный автомат. У меня описан вот так: Код /* Control transfer states */ typedef enum __USBD_CTRL_STATE { USBD_CTRL_STAGE_SETUP, /* SETUP packet */ USBD_CTRL_STAGE_DATA_OUT, /* OUT data packet */ USBD_CTRL_STAGE_DATA_IN, /* IN data packet */ USBD_CTRL_HANDSHAKE_ZLP_IN, /* The handshake IN ZLP packet was sent */ USBD_CTRL_WAIT_HANDSHAKE_ZLP_OUT, /* Wait a OUT ZLP packet */ USBD_CTRL_STALL_REQ, /* STALL enabled on IN & OUT packet */ } USBD_CTRL_STATE, *P_USBD_CTRL_STATE; Цитата(linuxbergi @ Aug 8 2017, 10:00)  И ещё вопрос для специалистов. Могут ли быть вложенными управляющие передачи? Например, началась передача setup и не завершая её хост начинает новую? Из разных источников разные ответы, по-моему полная ерунда. То что хост может внезапно закончить начатаю передачу, это знаю. А вот вложенные передачи? Тогда нужно складывать контекст. Да и какой максимальный уровень вложенности? В "USB complete" написано что вроде как могут быть вложенные. На чем я учился - во вложении. Вложенных передач нет. Есть стэйт машина, любой шаг влево-вправо - сброс.
--------------------
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|