реклама на сайте
подробности

 
 
> Своя программная обёртка USB stm32, Создание своего драйвера USB для STM32
linuxbergi
сообщение Aug 4 2017, 06:59
Сообщение #1





Группа: Участник
Сообщений: 12
Регистрация: 15-05-17
Пользователь №: 97 085



Работаю над собственным драйвером для USB в STM32 , что-то мало материала. 99 % как скомпилировать готовый пример. Кто занимался аналогичной задачей? В принципе значительная часть уже сделана.
Go to the top of the page
 
+Quote Post
4 страниц V  < 1 2 3 4 >  
Start new topic
Ответов (30 - 44)
AlexandrY
сообщение Aug 7 2017, 13:41
Сообщение #31


Ally
******

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



Цитата(Kabdim @ Aug 7 2017, 15:34) *
есть лицензия, которая запрещает использовать MQX где-то кроме фрискейловских процов.

MQX идет с лицензией разрешающей ее использование только на чипах от NXP.
Также нельзя публиковать исходники MQX от своего имени. Но модифицировать и делиться ими можно.
Go to the top of the page
 
+Quote Post
Kabdim
сообщение Aug 7 2017, 15:01
Сообщение #32


Знающий
****

Группа: Свой
Сообщений: 558
Регистрация: 26-11-14
Из: Зеленоград
Пользователь №: 83 842



The license agreement from NXP only permits distribution of the provided code in object form only, and only if that object code is integrated into a physical device that contains an NXP processor. Насчет делится загнули как-то. В общем не отрицая положительных качеств MQX стоит заметить что на нём стоит вендорлок.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Aug 7 2017, 15:45
Сообщение #33


Ally
******

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



Цитата(Kabdim @ Aug 7 2017, 18:01) *
The license agreement from NXP only permits distribution of the provided code in object form only, and only if that object code is integrated into a physical device that contains an NXP processor. Насчет делится загнули как-то. В общем не отрицая положительных качеств MQX стоит заметить что на нём стоит вендорлок.

Вы логику включите.
У них форум есть с обсуждением комьюнити версии MQX. Они там ее модифицируют как хотят. Как они это делают не делясь исходниками?
А также эта фраза говорит, что скомпилированные библиотеки под чипы NXP с MQX могут выкладываться свободно.
А привязка к узкому семейству чипов это даже хорошо, не будет ненужных веток и фрагментации.
Go to the top of the page
 
+Quote Post
Шаманъ
сообщение Aug 7 2017, 15:50
Сообщение #34


Знающий
****

Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839



Цитата(jcxz @ Aug 7 2017, 11:03) *
У меня тоже - почти всё своё rolleyes.gif Кроме RTOS разве что. Хотя и к ней тоже порт - свой, ну ещё кой-какие её корректировки.
А так и USB-device (когда нужен) - свой, и TCP-стек - свой, и графические библиотеки - тоже свои, о математике и прочих фильтрах и не говорю... laughing.gif

Ну и правильно sm.gif

Цитата
Это как я понимаю - массивы указателей на обработчики? Они у Вас во флешь или интерактивно в runtime-е в ОЗУ создаются?

Нет, макросы разворачиваются прямо в код из цепочки if/else и выховы функций без использования указателей.

Цитата
У меня тоже так же сделано. Только имена макросов другие rolleyes.gif

sm.gif

Цитата(AlexandrY @ Aug 7 2017, 13:11) *
Видите, вы даже толком не можете описать "своё"
Потому что документацию на него не делали, а API ваше фрагментарное и архаичное. Небось и полного тестирования не делали, и даже профайлинга.
Такого недокументированного всеми забытого добра на гитхабе тоннами лежит.

Ну вот еще один пуп вселенной, которому все должны - проходите мимо, я Вас не задерживаю. И да продолжайте хамить - сразу видно, что на другое не способны...
Go to the top of the page
 
+Quote Post
Kabdim
сообщение Aug 7 2017, 16:26
Сообщение #35


Знающий
****

Группа: Свой
Сообщений: 558
Регистрация: 26-11-14
Из: Зеленоград
Пользователь №: 83 842



Цитата(AlexandrY @ Aug 7 2017, 18:45) *
У них форум есть с обсуждением комьюнити версии MQX. Они там ее модифицируют как хотят. Как они это делают не делясь исходниками?

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

Ммм, давайте не будем называть недостатки достоинствами? sm.gif
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Aug 7 2017, 16:48
Сообщение #36


Ally
******

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



Цитата(Kabdim @ Aug 7 2017, 19:26) *
Это как с электриками ...

Ммм, давайте не будем называть недостатки достоинствами? sm.gif

При чем тут электрики если вы плохо поняли лицензию.
Вот у меня выложен стек USB.
Абсолютно лицензионно чисто.

А недостатком привязка возможно была до того как объявили о i.MX RT. А теперь это только достоинство. biggrin.gif

Цитата(Шаманъ @ Aug 7 2017, 18:50) *
Ну вот еще один пуп вселенной, которому все должны - проходите мимо, я Вас не задерживаю. И да продолжайте хамить - сразу видно, что на другое не способны...

Уважаемый, если вы тут хотите продавать, то что лежит бесплатно на каждом углу, то имейте совесть. И не флудите в форуме.
Go to the top of the page
 
+Quote Post
linuxbergi
сообщение Aug 7 2017, 17:51
Сообщение #37





Группа: Участник
Сообщений: 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 для следующей транзакции от хоста и т.д.



Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Шаманъ
сообщение Aug 7 2017, 18:34
Сообщение #38


Знающий
****

Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839



Цитата(AlexandrY @ Aug 7 2017, 19:48) *
Уважаемый, если вы тут хотите продавать, то что лежит бесплатно на каждом углу, то имейте совесть. И не флудите в форуме.

Уважаемый, тут нет покупателей, чтобы что-то продавать wink.gif
Да и кому продавать у меня есть, как пример, на применение моей RTOS были куплены эксклюзивные права вместе с поддержкой-сопровождением одной не нашей конторой, которая с ней выпускает девайсы тиражем несколько десятков тысяч в год (видимо на каждом углу у них не получилось найти laughing.gif ), так что вопрос продаж меня совсем не волнует, уж поверьте...

Сообщение отредактировал Шаманъ - Aug 7 2017, 18:36
Go to the top of the page
 
+Quote Post
linuxbergi
сообщение Aug 8 2017, 04:00
Сообщение #39





Группа: Участник
Сообщений: 12
Регистрация: 15-05-17
Пользователь №: 97 085



И ещё вопрос для специалистов. Могут ли быть вложенными управляющие передачи? Например, началась передача setup и не завершая её хост начинает новую? Из разных источников разные ответы, по-моему полная ерунда. То что хост может внезапно закончить начатаю передачу, это знаю. А вот вложенные передачи? Тогда нужно складывать контекст. Да и какой максимальный уровень вложенности? В "USB complete" написано что вроде как могут быть вложенные.
Go to the top of the page
 
+Quote Post
Kabdim
сообщение Aug 8 2017, 09:22
Сообщение #40


Знающий
****

Группа: Свой
Сообщений: 558
Регистрация: 26-11-14
Из: Зеленоград
Пользователь №: 83 842



Цитата(AlexandrY @ Aug 7 2017, 19:48) *
Абсолютно лицензионно чисто.

В то что вы так заблуждаетесь я охотно верю. biggrin.gif Но с учетом того что я вам привел разъяснения представителя правовладельца, который черным по белому написал что так лицензия не разрешает, на мой взгляд, ваша убежденность в собственной правоте явно сильнее чем должна бы быть. biggrin.gif
На этом позвольте откланяться.
Go to the top of the page
 
+Quote Post
AlexRayne
сообщение Aug 8 2017, 12:36
Сообщение #41


Местный
***

Группа: Участник
Сообщений: 319
Регистрация: 27-09-07
Пользователь №: 30 877



покурите библиотеки libopencm3, unicore-mx (клон) - может и не понадобится вам пилить свою обертку
Go to the top of the page
 
+Quote Post
prottoss
сообщение Aug 8 2017, 14:02
Сообщение #42


Гуру
******

Группа: Свой
Сообщений: 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" написано что вроде как могут быть вложенные.
На чем я учился - во вложении.
Вложенных передач нет. Есть стэйт машина, любой шаг влево-вправо - сброс.

Прикрепленные файлы
Прикрепленный файл  usb_in_a_nutshell.pdf ( 174.57 килобайт ) Кол-во скачиваний: 26
 


--------------------
Go to the top of the page
 
+Quote Post
ViKo
сообщение Aug 8 2017, 14:12
Сообщение #43


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Есть книга:
Михаил Гук. Шины PCI, USB и FireWare
В ней хорошо описана работа USB.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Aug 8 2017, 14:24
Сообщение #44


Гуру
******

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



В конечном счете примерная схема взаимодействия (у меня):
Обязанности драйвера USb периферии:
1. Обеспечение инициализации периферии USB устройства. Сюда не входит инициализация тактовых частот и портов ВВ. Этим занимаются целевые драйвера МК.
2. Обеспечение отключения периферии USB.
3. Обеспечить подключение устройства к шине. В основном это возможность отключить/подключить встроенный пулл-ап резистор (если имеется) и дополнительная инициализация модуля USB-
устройства (если требуется).
4. Вызов библиотеки верхнего уровня (для энумерации устройства и специфичных для класса вызовов) через ТРИ вызова (SETUP, DATA IN, DATA OUT).
5. Предоставлениеотдельного интерфейса для ЕР0.
4. Обеспечить корректную установку адреса устройства. В разных семействах МК есть нюансы при установке адреса устройства.
4. Предоставление приложению интерфейса прямого ввода вывода через конечную ЕР.
5. Возможность, если требуется, дополнительных обработчиков типа Resume, Suspend и т.п. и связи их с приложением.

Обязанности библиотеки:
1. Надежная стэйтмашина через три вызова от драйвера (SETUP, DATA IN, DATA OUT).
2. Возможность подключения обработчиков запросов от специфических классов.



--------------------
Go to the top of the page
 
+Quote Post
prottoss
сообщение Aug 8 2017, 16:31
Сообщение #45


Гуру
******

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



Цитата(AlexandrY @ Aug 7 2017, 22:48) *
При чем тут электрики если вы плохо поняли лицензию.
Вот у меня ... выложен стек USB
Это не стек. Это няшные хидеры biggrin.gif


--------------------
Go to the top of the page
 
+Quote Post

4 страниц V  < 1 2 3 4 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 10:14
Рейтинг@Mail.ru


Страница сгенерированна за 0.0153 секунд с 7
ELECTRONIX ©2004-2016