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

 
 
> Своя программная обёртка 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
 
Start new topic
Ответов
Шаманъ
сообщение Aug 5 2017, 11:05
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 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
AlexandrY
сообщение Aug 5 2017, 13:01
Сообщение #3


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
Шаманъ
сообщение Aug 6 2017, 09:21
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 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
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 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

Сообщений в этой теме
- linuxbergi   Своя программная обёртка USB stm32   Aug 4 2017, 06:59
- - jcxz   Цитата(linuxbergi @ Aug 4 2017, 09:59) Ра...   Aug 4 2017, 07:02
|- - AlexandrY   Цитата(jcxz @ Aug 4 2017, 10:02) Что имее...   Aug 4 2017, 08:59
- - ViKo   Мне понятно, что имеется в виду драйвер в микрокон...   Aug 4 2017, 09:48
|- - jcxz   Цитата(ViKo @ Aug 4 2017, 12:48) Мне поня...   Aug 4 2017, 10:41
|- - ViKo   Цитата(jcxz @ Aug 4 2017, 13:41) То, что ...   Aug 4 2017, 11:24
|- - prottoss   Цитата(jcxz @ Aug 4 2017, 16:41) То, что ...   Aug 4 2017, 12:00
||- - AlexandrY   Цитата(prottoss @ Aug 4 2017, 15:00) Под ...   Aug 4 2017, 12:12
||- - prottoss   Цитата(AlexandrY @ Aug 4 2017, 18:12) Не....   Aug 4 2017, 12:30
||- - AlexandrY   Цитата(prottoss @ Aug 4 2017, 15:30) lwIP...   Aug 4 2017, 18:35
|- - alexunder   Цитата(jcxz @ Aug 4 2017, 12:41) То, что ...   Aug 4 2017, 17:57
- - Kabdim   Тема пообщаться или о чем?   Aug 4 2017, 10:00
- - Эдди   А в чем проблема? Через libudev + libusb все решае...   Aug 4 2017, 10:10
- - LightElf   QUOTE (linuxbergi @ Aug 4 2017, 09:59) Ра...   Aug 4 2017, 10:17
- - prottoss   Цитата(linuxbergi @ Aug 4 2017, 12:59) Ра...   Aug 4 2017, 10:41
- - Эдди   Вообще дурацкое это слово — "драйвер". Я...   Aug 4 2017, 21:39
|- - Сергей Борщ   QUOTE (Эдди @ Aug 5 2017, 00:39) Где драй...   Aug 5 2017, 06:34
- - ViKo   Эдди, вы когда-нибудь ставили Виндовс на голый ком...   Aug 5 2017, 06:01
|- - Эдди   Цитата(ViKo @ Aug 5 2017, 09:01) Эдди, вы...   Aug 5 2017, 06:41
||- - Сергей Борщ   QUOTE (Эдди @ Aug 5 2017, 09:41) Я, конеч...   Aug 5 2017, 12:40
|- - mantech   Цитата(ViKo @ Aug 5 2017, 09:01) Эдди, вы...   Aug 5 2017, 06:46
|- - ViKo   Цитата(mantech @ Aug 5 2017, 09:46) Драйв...   Aug 5 2017, 07:12
|- - prottoss   Цитата(AlexandrY @ Aug 5 2017, 19:01) Пок...   Aug 5 2017, 13:18
||- - linuxbergi   Цитата(prottoss @ Aug 5 2017, 14:18) Нате...   Aug 7 2017, 17:51
|- - AlexandrY   Цитата(Шаманъ @ Aug 6 2017, 12:21) У меня...   Aug 7 2017, 10:11
|- - jcxz   Цитата(AlexandrY @ Aug 7 2017, 13:11) Я б...   Aug 7 2017, 10:56
|- - Kabdim   Цитата(AlexandrY @ Aug 7 2017, 13:11) Вот...   Aug 7 2017, 12:34
|- - AlexandrY   Цитата(Kabdim @ Aug 7 2017, 15:34) есть л...   Aug 7 2017, 13:41
- - Kabdim   The license agreement from NXP only permits distri...   Aug 7 2017, 15:01
|- - AlexandrY   Цитата(Kabdim @ Aug 7 2017, 18:01) The li...   Aug 7 2017, 15:45
|- - Kabdim   Цитата(AlexandrY @ Aug 7 2017, 18:45) У н...   Aug 7 2017, 16:26
|- - AlexandrY   Цитата(Kabdim @ Aug 7 2017, 19:26) Это ка...   Aug 7 2017, 16:48
|- - Шаманъ   Цитата(AlexandrY @ Aug 7 2017, 19:48) Ува...   Aug 7 2017, 18:34
|- - Kabdim   Цитата(AlexandrY @ Aug 7 2017, 19:48) Абс...   Aug 8 2017, 09:22
|- - prottoss   Цитата(AlexandrY @ Aug 7 2017, 22:48) При...   Aug 8 2017, 14:02
|- - prottoss   Цитата(AlexandrY @ Aug 7 2017, 22:48) При...   Aug 8 2017, 16:31
- - Шаманъ   Цитата(jcxz @ Aug 7 2017, 11:03) У меня т...   Aug 7 2017, 15:50
- - linuxbergi   И ещё вопрос для специалистов. Могут ли быть вложе...   Aug 8 2017, 04:00
- - AlexRayne   покурите библиотеки libopencm3, unicore-mx (клон) ...   Aug 8 2017, 12:36
- - ViKo   Есть книга: Михаил Гук. Шины PCI, USB и FireWare В...   Aug 8 2017, 14:12
- - prottoss   В конечном счете примерная схема взаимодействия (у...   Aug 8 2017, 14:24
- - Шаманъ   Лучше всего все описано в документе usb_20.pdf кот...   Aug 9 2017, 06:37
- - linuxbergi   В своё время интересовался USB , даже опубликовал ...   Aug 9 2017, 10:05
|- - AlexandrY   Цитата(linuxbergi @ Aug 9 2017, 13:05) В ...   Aug 9 2017, 13:29
- - linuxbergi   За информацию и отклики благодарен всем, рискну вы...   Aug 10 2017, 06:36


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

 


RSS Текстовая версия Сейчас: 30th July 2025 - 12:45
Рейтинг@Mail.ru


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