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

 
 
4 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Своя программная обёртка 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
jcxz
сообщение Aug 4 2017, 07:02
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(linuxbergi @ Aug 4 2017, 09:59) *
Работаю над собственным драйвером для USB в STM32 , что-то мало материала. 99 % как скомпилировать готовый пример. Кто занимался аналогичной задачей? В принципе значительная часть уже сделана.

Что имеется в виду под "драйвером USB"? Виндовый драйвер для своего USB-девайса?
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Aug 4 2017, 08:59
Сообщение #3


Ally
******

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



Цитата(jcxz @ Aug 4 2017, 10:02) *
Что имеется в виду под "драйвером USB"? Виндовый драйвер для своего USB-девайса?

Наверно скорее под линух. biggrin.gif
Виндовый работает идеально.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Aug 4 2017, 09:48
Сообщение #4


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

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



Мне понятно, что имеется в виду драйвер в микроконтроллере. (Ни под что sm.gif )
Понимаю и поддерживаю желание топикстартера. Но помочь, увы, не могу.
Go to the top of the page
 
+Quote Post
Kabdim
сообщение Aug 4 2017, 10:00
Сообщение #5


Знающий
****

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



Тема пообщаться или о чем? sm.gif
Go to the top of the page
 
+Quote Post
Эдди
сообщение Aug 4 2017, 10:10
Сообщение #6


Знающий
****

Группа: Участник
Сообщений: 825
Регистрация: 16-04-15
Из: КЧР, Нижний Архыз
Пользователь №: 86 250



А в чем проблема? Через libudev + libusb все решается. Главное — чтобы systemd чертового не было на компьютере, а то поцтеринг та еще свинья, спокойно может очередную гадость подкинуть.
Go to the top of the page
 
+Quote Post
LightElf
сообщение Aug 4 2017, 10:17
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 180
Регистрация: 5-04-09
Пользователь №: 47 205



QUOTE (linuxbergi @ Aug 4 2017, 09:59) *
Работаю над собственным драйвером для USB в STM32 , что-то мало материала. 99 % как скомпилировать готовый пример. Кто занимался аналогичной задачей? В принципе значительная часть уже сделана.

Чем не устраивает кейловский пример?
Go to the top of the page
 
+Quote Post
jcxz
сообщение Aug 4 2017, 10:41
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(ViKo @ Aug 4 2017, 12:48) *
Мне понятно, что имеется в виду драйвер в микроконтроллере. (Ни под что sm.gif )

То, что находится в МК в этом случае, принято называть "стеком". Так исторически сложилось laughing.gif
Go to the top of the page
 
+Quote Post
prottoss
сообщение Aug 4 2017, 10:41
Сообщение #9


Гуру
******

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



Цитата(linuxbergi @ Aug 4 2017, 12:59) *
Работаю над собственным драйвером для USB в STM32 , что-то мало материала. 99 % как скомпилировать готовый пример. Кто занимался аналогичной задачей? В принципе значительная часть уже сделана.
Я занимался. Достаточно долгое время.
В итоге есть платформонезависимая библиотека. К ней подключаются файлы драйверов для различных МК. Один файл - один модуль и один заголовок.
Сейчас есть драйверы для AVR XMEGA, AT91, STM32 USB, STM32 OTG.
STM32 OTG дался труднее всех. Есть некоторые отличительные нюансы, к примеру, для F107, F407 и L4xx в плане инициализации Device Core. Это те, с которыми работал.


--------------------
Go to the top of the page
 
+Quote Post
ViKo
сообщение Aug 4 2017, 11:24
Сообщение #10


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

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



Цитата(jcxz @ Aug 4 2017, 13:41) *
То, что находится в МК в этом случае, принято называть "стеком". Так исторически сложилось laughing.gif

Сам Ка(е)йл называл такие вещи драйверами, еще и макроопределение ввел STDPERIPH_DRIVER.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Aug 4 2017, 12:00
Сообщение #11


Гуру
******

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



Цитата(jcxz @ Aug 4 2017, 16:41) *
То, что находится в МК в этом случае, принято называть "стеком". Так исторически сложилось laughing.gif
Под стеком, исторически, подразумевается оболочка и API к ней, которая знать не знает, на каком МК она выполняется. Все что ниже - драйвер.


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


Ally
******

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



Цитата(prottoss @ Aug 4 2017, 15:00) *
Под стеком, исторически, подразумевается оболочка и API к ней, которая знать не знает, на каком МК она выполняется. Все что ниже - драйвер.

Не, драйвер эта такая штука которая управляется менеджером драйверов и может быть динамически привязана и отвязана от процесса.
Т.е. физически набор функций со строго единообразным верхним интерфейсом для любой периферии.
У Keil-а отродясь такого не было.
Не все RTOS такое имеют.
Потому как в embedded это излишне, там нет нужды динамически менять и управлять драйверами.
А потому автор должен был написать по простому какой набор функций он хочет реализовать, а не туманить насчет драйвера. Эти функции там на пальцах пересчитать можно.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Aug 4 2017, 12:30
Сообщение #13


Гуру
******

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



Цитата(AlexandrY @ Aug 4 2017, 18:12) *
Не...
lwIP что по Вашему? Или FatFS?

Цитата(AlexandrY @ Aug 4 2017, 18:12) *
драйвер эта такая штука которая управляется менеджером драйверов и может быть динамически привязана и отвязана от процесса.
А на мой взгляд, драйвер это такая штука, которая знает как общаться с железом (или еще с чем то...) и предоставляет процессу (или приложению) уровнем выше более-менее стандартный API.


--------------------
Go to the top of the page
 
+Quote Post
alexunder
сообщение Aug 4 2017, 17:57
Сообщение #14


unexpected token
****

Группа: Свой
Сообщений: 899
Регистрация: 31-08-06
Из: Мехелен, Брюссель
Пользователь №: 19 987



Цитата(jcxz @ Aug 4 2017, 12:41) *
То, что находится в МК в этом случае, принято называть "стеком". Так исторически сложилось laughing.gif

Обычно это все таки называется библиотекой под МК, хотя иногда и стеком


--------------------
А у тебя SQUID, и значит, мы умрем.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Aug 4 2017, 18:35
Сообщение #15


Ally
******

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



Цитата(prottoss @ Aug 4 2017, 15:30) *
lwIP что по Вашему? Или FatFS?

FatFS, насколько знаю, даже с NAND не умеет работать.
А lwIP не умеет с СDC-ECM.
Это просто наборы функций которые кое-как с помощью косвенной адресации могут перенаправлять свои потоки данных.
Но всей подготовкой к перенаправлению юзер должен заниматься вручную.
Или мы сейчас все что взаимодействует через косвенную адресацию будем называть драйверами?

Я даже скажу, что использования термина "драйвер" крайне вредно для TC.
Вместо того чтобы написать всего две специализированные функции read_x и write_x и остальное разрулить прямым доступом к периферии без всякой унификации, он будет сочинять API, которое сам забудет через месяц.
Go to the top of the page
 
+Quote Post
Эдди
сообщение Aug 4 2017, 21:39
Сообщение #16


Знающий
****

Группа: Участник
Сообщений: 825
Регистрация: 16-04-15
Из: КЧР, Нижний Архыз
Пользователь №: 86 250



Вообще дурацкое это слово — "драйвер". Я только драйверы шаговых двигателей могу вспомнить. Где еще в природе это слово употребляется? На компе с железяками работают модули ядра (если их сразу в ядро не вмонолитили). На железяках крутятся прошивки. Где драйвера-то?
Go to the top of the page
 
+Quote Post
ViKo
сообщение Aug 5 2017, 06:01
Сообщение #17


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

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



Эдди, вы когда-нибудь ставили Виндовс на голый комп?
https://ru.m.wikipedia.org/wiki/Драйвер
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Aug 5 2017, 06:34
Сообщение #18


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (Эдди @ Aug 5 2017, 00:39) *
Где драйвера-то?
Может, здесь?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Эдди
сообщение Aug 5 2017, 06:41
Сообщение #19


Знающий
****

Группа: Участник
Сообщений: 825
Регистрация: 16-04-15
Из: КЧР, Нижний Архыз
Пользователь №: 86 250



Цитата(ViKo @ Aug 5 2017, 09:01) *
Эдди, вы когда-нибудь ставили Виндовс на голый комп?

Тьфу-тьфу, с этим говном дела не имею!
Цитата(Сергей Борщ @ Aug 5 2017, 09:34) *
Может, здесь?

Просто какой-то осел модуль ядра драйвером назвал.
Бывает. До сих пор встречаются ослы, которые директории/каталоги/справочники называют "папками". А мамок им не завезли случайно?

Сообщение отредактировал Эдди - Aug 5 2017, 06:42
Go to the top of the page
 
+Quote Post
mantech
сообщение Aug 5 2017, 06:46
Сообщение #20


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(ViKo @ Aug 5 2017, 09:01) *
Эдди, вы когда-нибудь ставили Виндовс на голый комп?


Это ортодоксальный фанатик, какая винда? О чем вы... Спросите еще, как диск С отформатировать biggrin.gif

Драйвер - всегда была программа, являющаяся мостом между аппаратным устр-вом уровня ядра и программой уровня пользователя. В МК таких уровней, как правило, нет, поэтому название "драйвер", как-то не совсем корректно.

Сообщение отредактировал mantech - Aug 5 2017, 06:52
Go to the top of the page
 
+Quote Post
ViKo
сообщение Aug 5 2017, 07:12
Сообщение #21


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

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



Цитата(mantech @ Aug 5 2017, 09:46) *
Драйвер - всегда была программа, являющаяся мостом между аппаратным устр-вом уровня ядра и программой уровня пользователя. В МК таких уровней, как правило, нет, поэтому название "драйвер", как-то не совсем корректно.

ОС часто есть. И приложение, использующее ОС. Вполне допустимо назвать "прокладку" между приложением и аппаратным ресурсом - драйвером. Можно и как-то иначе, не возражаю.
Go to the top of the page
 
+Quote Post
Шаманъ
сообщение Aug 5 2017, 11:05
Сообщение #22


Знающий
****

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



Цитата(linuxbergi @ Aug 4 2017, 09:59) *
Работаю над собственным драйвером для USB в STM32 , что-то мало материала. 99 % как скомпилировать готовый пример. Кто занимался аналогичной задачей? В принципе значительная часть уже сделана.

Если под драйвером понимать то, что в МК обеспечивает работу USB интерфейса, то у меня написано свое под STM32 (назовем USB стек+некая HAL прослойка, хотя с платформонезависимостью я особо не заморачивался). А в чем собственно вопрос?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Aug 5 2017, 12:40
Сообщение #23


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (Эдди @ Aug 5 2017, 09:41) *
Я, конечно, понимаю, что есть два мнения - ваше и неправильное Но давайте вы будете придерживаться культуры общения на форуме и ограничите свои сообщения литературным языком.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Aug 5 2017, 13:01
Сообщение #24


Ally
******

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



Цитата(Шаманъ @ Aug 5 2017, 14:05) *
Если под драйвером понимать то, что в МК обеспечивает работу USB интерфейса, то у меня написано свое под STM32 (назовем USB стек+некая HAL прослойка, хотя с платформонезависимостью я особо не заморачивался). А в чем собственно вопрос?

Ну так автор наверно хочет узнать что же входит или должно входить в состав "своего"
Расскажите что у вас там "своё".
Хост или дивайс вы сделали, или может OTG?
Покажите список вызовов вашего API между аппаратурой и фреймворком. Это ж не секретно?
А также между фреймворком и классами.
Или если нет у вас такого деления на уровни, то расскажите почему.
Покажите список классов которые вы реализовали.
Покажите как сделан адаптер к RTOS, как реентерабельность обеспечена и т.д. и т.п.


Go to the top of the page
 
+Quote Post
prottoss
сообщение Aug 5 2017, 13:18
Сообщение #25


Гуру
******

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



Цитата(AlexandrY @ Aug 5 2017, 19:01) *
Покажите...

Нате, глумитесь.

Прикрепленные файлы
Прикрепленный файл  stm32_usbd.rar ( 1.29 килобайт ) Кол-во скачиваний: 79
 


--------------------
Go to the top of the page
 
+Quote Post
Шаманъ
сообщение Aug 6 2017, 09:21
Сообщение #26


Знающий
****

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



Цитата(AlexandrY @ Aug 5 2017, 16:01) *
Ну так автор наверно хочет узнать что же входит или должно входить в состав "своего"
Расскажите что у вас там "своё".
Хост или дивайс вы сделали, или может OTG?

У меня свое все sm.gif, включая RTOS, графику, математику и т.д. Касательно USB реализован USB device, host/OTG мне не интересен, потому не реализовывался.

Цитата
Покажите список вызовов вашего API между аппаратурой и фреймворком. Это ж не секретно?
А также между фреймворком и классами.
Или если нет у вас такого деления на уровни, то расскажите почему.
Покажите список классов которые вы реализовали.

Реализованы CDC и аудио устройство, может быть сделаю еще Mass Storage. Деление на уровни есть - нижний уровень общается непосредственно с аппаратурой, ядро реализует обработку базовых запросов и обеспечивает обработку запросов классами, классы взаимодействуют с первыми двумя уровнями, полная изоляция не делалась. Ставилась задача сделать не универсального монстра (таких хватает), а маленький модуль под конкретные задачи. В итоге три VCP и аудио устройство (стерео in/out) у меня занимают:
- базовый модуль (HAL+ядро) 5.2кбайт флеша
- CDC класс (виртуальный ком порт) - 1119байт
- Аудио класс - 456байт флеша

API между классами и стеком несколько нетрадиционен по части стандартных запросов, они реализованы через "карты" обработчиков (по типу того, как сделана обработка событий в MFC/ATL/WTL). Поэтому у меня нет аццких switchей sm.gif Также все дескрипторы сделаны через макросы, так что нет необходимости подсчитывать их длины, порядок байт и прочую ерунду. Например строковые дескрипторы:
Код
STRINGS_TABLE(Strings)
{
   LANGUAGES(0x409),
   STRING(u"Oleg xxxxxxxxx"),  /* 1 = MANUFACTURER */
   STRING(u"xxxxt"),    /* 2 = PRODUCT */
   STRING(u"0001"),        /* 3 = SERIAL */
   STRING(u"xxxx RX A CAT Port"),  /* 4 = INTERFACE_0*/
   STRING(u"xxxx RX B CAT Port"),  /* 5 = INTERFACE_2*/
   STRING(u"xxxx OTRSP Port"),      /* 6 = INTERFACE_4*/
   STRING(u"xxxx Audio"),           /* 7 = */
   STRING(u"xxxx RX Audio"),        /* 8 = RX Audio Terminal */
   STRING(u"xxxx TX Audio")         /* 9 = TX Audio Terminal */
};


И их обработка:
Код
//Standard Request Map
BEGIN_REQUEST_MAP(StandardRequestMap)
   .................
   ON_GET_STRING_DESCRIPTOR(Strings)                
   .................
END_REQUEST_MAP()


Разные языки поддерживаются в таком же стиле sm.gif

Также и с другими запросами (типа выбора интерфейса, параметров CDC, параметров аудиодевайса и т.д., а также стандартные запросы дискрипторов устройства, конфига и т.п.).

Цитата
Покажите как сделан адаптер к RTOS, как реентерабельность обеспечена и т.д. и т.п.

Стек изначально рассчитан работу с моей RTOS, потому никаких никаких адаптеров не делалось. Реентабельность обеспечена обычными средствами RTOS - критическими секциями, семафорами и т.д. Без RTOS он не работает, почему так я уже объяснил выше.

P.S. Странный у Вас стиль общения - хотя бы слово волшебное добавили wink.gif, а то "покажите"... а Вы заплатите, а я покажу wink.gif. Если есть конкретный вопрос, ну что-то там не едет или что-то конкретное интересует, то спрашивайте - чем смогу - помогу, а просто так время тратить желания нет.

Сообщение отредактировал Шаманъ - Aug 6 2017, 09:57
Go to the top of the page
 
+Quote Post
jcxz
сообщение Aug 7 2017, 08:03
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Шаманъ @ Aug 6 2017, 12:21) *
У меня свое все sm.gif, включая RTOS, графику, математику и т.д. Касательно USB реализован USB device, host/OTG мне не интересен, потому не реализовывался.

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

Цитата(Шаманъ @ Aug 6 2017, 12:21) *
API между классами и стеком несколько нетрадиционен по части стандартных запросов, они реализованы через "карты" обработчиков (по типу того, как сделана обработка событий в MFC/ATL/WTL).

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

Цитата(Шаманъ @ Aug 6 2017, 12:21) *
Поэтому у меня нет аццких switchей sm.gif

"Аццкие" switch-и если они действительно аццкие, компилятор как правило превращает в эти же самые массивы указателей. Если возможно.

Цитата(Шаманъ @ Aug 6 2017, 12:21) *
Также все дескрипторы сделаны через макросы, так что нет необходимости подсчитывать их длины, порядок байт и прочую ерунду. Например строковые дескрипторы:

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

Цитата(Шаманъ @ Aug 6 2017, 12:21) *
Реентабельность обеспечена обычными средствами RTOS - критическими секциями, семафорами и т.д. Без RTOS он не работает, почему так я уже объяснил выше.

Я иногда делаю на callback-ах такое взаимодействие. Например: в TCP-стеке так сделан вызов обработчиков протоколов, обработчиков событий для сокетов и т.п.
Поэтому оно никак не привязано к ОС (или к её отсутствию вовсе).
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Aug 7 2017, 10:11
Сообщение #28


Ally
******

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



Цитата(Шаманъ @ Aug 6 2017, 12:21) *
У меня свое все sm.gif, включая RTOS, графику, математику и т.д. Касательно USB реализован USB device, host/OTG мне не интересен, потому не реализовывался.

P.S. Странный у Вас стиль общения - хотя бы слово волшебное добавили wink.gif, а то "покажите"... а Вы заплатите, а я покажу wink.gif.

Видите, вы даже толком не можете описать "своё"
Потому что документацию на него не делали, а API ваше фрагментарное и архаичное. Небось и полного тестирования не делали, и даже профайлинга.
Такого недокументированного всеми забытого добра на гитхабе тоннами лежит.

Я бы TC предложил не делать "своё", а отрефакторить в пределах разумного какой-либо хорошо документированный USB фреймворк.
Вот допустим в MQX есть отличная документация и полные исходники USB стека для Device, Host(EHCI, KHCI), OTG. Имеет реализации всех востребованных классов HID, CDC, MSD, Audio, Video, Composite, RNDIS
Десятки примеров законченных приложений. Полная интеграция в RTOS, файловую систему, TCP стек и т.д.

А все что "полностью своё" это будет как правило очень примитивно с урезанной функциональностью, не документировано и непереносимо даже на уровне компиляторов.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Aug 7 2017, 10:56
Сообщение #29


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(AlexandrY @ Aug 7 2017, 13:11) *
Я бы TC предложил не делать "своё", а отрефакторить в пределах разумного какой-либо хорошо документированный USB фреймворк.

Ага - вон тут в соседних темах товарищ на букву Д (не будем показывать пальцем wink.gif "рефакторит" всё и "рефакторит" чьи-то шедевры.
Да и так полно тут "рефакторщиков" которые только говнокодом из тырнета живут.
Чем больше смотришь всякие "примеры" тем меньше хочется их рефакторить или вообще как-то использовать. laughing.gif
Go to the top of the page
 
+Quote Post
Kabdim
сообщение Aug 7 2017, 12:34
Сообщение #30


Знающий
****

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



Цитата(AlexandrY @ Aug 7 2017, 13:11) *
Вот допустим в MQX

есть лицензия, которая запрещает использовать MQX где-то кроме фрискейловских процов.
Go to the top of the page
 
+Quote Post
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
Шаманъ
сообщение Aug 9 2017, 06:37
Сообщение #46


Знающий
****

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



Лучше всего все описано в документе usb_20.pdf который скачивается с сайта usb.org. В главе 9 машина состояний во всех подробностях, а в главе 8 ответы на вопросы про то как осуществляется передача данных.
Go to the top of the page
 
+Quote Post
linuxbergi
сообщение Aug 9 2017, 10:05
Сообщение #47





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



В своё время интересовался USB , даже опубликовал результат своих изысканий
https://yadi.sk/i/kQfoeUJ8iicDi
Чем плохи доки по стандартам? Они объективно очень громоздки в силу их специфики, там предусматриваются все варианты событий, какие только возможны. Например если смотреть стандарт по HID, то умопомрачительно, а кто знает, что такое custom hid (наиболее используемый на практике), тот рассмеётся. На практике можно многое отбросить, скостить углы.
Основу моего проекта составляют идеи предоставленные здесь:
http://mcu.goodboard.ru/viewtopic.php?id=40
Может модератор не удалит сей ценный материал?
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Aug 9 2017, 13:29
Сообщение #48


Ally
******

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



Цитата(linuxbergi @ Aug 9 2017, 13:05) *
В своё время интересовался USB , даже опубликовал результат своих изысканий

Вы идете совершенно неэффективным путем.
Если нужен эталон как правильно писать под USB в embedded то всегда смотрят у Micrium-а.
Он делает исходники специально так чтобы начинающие могли легче понять как все внутри устроено.
И только у Micrium-а документация действительно объясняет как работает их софт.
Прикрепленное изображение

Диаграмма выше как бы намекает, что вам до своего "драйвера USB" как до луны.

Прикрепленное изображение

А эта диаграмма показывает слои.
У Micrium-а драйверы действительно являются драйверами.
И как видно драйвер у них это даже не половина дела.

Справок где берут Micrium USB, документацию на него и какая у него лицензия не даю. laughing.gif
Go to the top of the page
 
+Quote Post
linuxbergi
сообщение Aug 10 2017, 06:36
Сообщение #49





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



За информацию и отклики благодарен всем, рискну выложить схему реализации, может кто-нибудь ещё подкинет идей.

В цикле мониторятся флаги событий. GLOBAL_SM - мониторит RESET, SUSPEND и пр. Группа TRN_SM собирает из отдельных транзакций запросы управления, мониторит флаги транзакций передач управления. После транзакции setup, выполняется парсинг пакета конфигурации (выделено голубым), остальные секции не реагируют, состояние автомата фиксируется в глобальных переменных. По транзакции IN выполняется соответственная секция кода, состояние фиксируется в гл. переменных. Транзакция setup общая для всех передач управления, а дальнейшая реализация зависит от парсинга конфигурационного пакета из этой самой транзакции setup. В секции setup устанавливается указатель на функцию реализующую конкретный запрос и далее эта функция вызывается каждый раз при выполнении последующих транзакций пока запрос не закончится выполняться. Думаю схема ясна. Обработчик транзакций передачи данных прост, по сравнению с управляющими, поэтому пока не рассматривается
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 07:29
Рейтинг@Mail.ru


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