Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

QUESTION: STMCubemx generated project #3

Open
oleg84 opened this issue Jun 2, 2016 · 13 comments
Open

QUESTION: STMCubemx generated project #3

oleg84 opened this issue Jun 2, 2016 · 13 comments

Comments

@oleg84
Copy link

oleg84 commented Jun 2, 2016

I see that you IDE project is custom-made. Have you considered embedding your work to Cubemx-generated project so that it can be easily integrated to projects that use FreeRTOS, for example. Cubemx does have pre-configured FreeRTOS.

@oleg84
Copy link
Author

oleg84 commented Jun 2, 2016

Можно по-русски обсуждать :)

@fetisov
Copy link
Owner

fetisov commented Jun 3, 2016

Добрый день, Олег.
Признаться честно, не сталкивался ещё с CubeMX.
Но по мере появления времени - планировал библиотеку интегрировать в
известные открытые проекты.
Это не должно оказаться сложным делом.

2016-06-02 19:57 GMT+03:00 Oleg Yakovenko [email protected]:

Можно по-русски обсуждать :)


You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
#3 (comment), or mute
the thread
https://github.com/notifications/unsubscribe/AD28UiyccObE0TlFuTRdxQr9FSOml4A2ks5qHwuHgaJpZM4Isw7f
.

@oleg84
Copy link
Author

oleg84 commented Jun 3, 2016

Спасибо за быстрый ответ. :)
С CubeMX рекомендую познакомиться, очень крутая штука. (Насколько я понял из ваших исходников, вы пользовались библиотеками от STM более старой версии.)

Может быть сможете подсказать, как лучше спортировать? Вопрос такой:
Файлы с @author MCD Application Team немного раскиданы по проекту. Вижу, что std-periph, usb-core, usb-files полностью от STM, но есть еще несколько в других директориях. Может быть существует какой-нибудь отдельный файл (пока не нашел), в котором содержится некий уровень абстракции от библиотеки STM?

Заранее спасибо.

@fetisov
Copy link
Owner

fetisov commented Jun 5, 2016

Добрый вечер, Олег.
С CubeMX обязательно познакомлюсь, спасибо за совет.
Всё верно, в проекте использована библиотека stdperiph.
Примерно могу объяснить способ распределения файлов:

  1. В директории rndis-stm32 хранятся файлы, непосредственно определяющие интерфейс RNDIS: конфигурация устройства, дескрипторы и ядро класса (usbd_rndis_core). Для портирования под другие платформы следует изменять именно их.
  2. В директории usb-core хранятся принципиально неизменяемые пользователем файлы, описывающие usb-стек фирмы ST
  3. Есть также каталог usb-files. Это то что потенциально может изменяться в зависимости от нужд проекта. Вроде инициализации usb входов (в файле bsp) и пользовательские функции, выполняющиеся по разным событиям usb-устройства (файл usr).
    Про уровень абстракции вопрос не уверен, что правильно понял. Абстрактный уровень обеспечивает usb-стек ST путём предоставления пользователю возможность написать свой класс. Собственно что и было сделано:
  • файл usbd_rndis_core.h экспортирует структуру с обратными вызовами класса
    USBD_Class_cb_TypeDef usbd_rndis_cb;
  • файл usbd_rndis_core.c реализовывает необходимые для rndis вызовы:
USBD_Class_cb_TypeDef usbd_rndis_cb =
{
  usbd_rndis_init,
  usbd_rndis_deinit,
  usbd_rndis_setup,
  NULL,
  usbd_rndis_ep0_recv,
  usbd_rndis_data_in,
  usbd_rndis_data_out,
  usbd_rndis_sof,
  rndis_iso_in_incomplete,
  rndis_iso_out_incomplete,
  usbd_rndis_get_cfg
};

Каждое поле - имя вызываемой функции в теле класса.
Такая концепция написания USBD-драйверов у STM.
У CubeMX пока не знакомился, но, подозреваю, что концепция в целом сходная.
Посоветовал бы начать с подготовки проекта с кастомным usb-классом, ну и далее по порядку будем разбираться.

@oleg84
Copy link
Author

oleg84 commented Jun 6, 2016

Проект я уже подготовил (с cubeMX это не занимает много времени, там все генерируется и работает сразу). (Единственное, там почему-то нет совсем кастомного usb-класса, есть только custom HID. Пока взял как самый близкий — CDC). Добавил в проект все файлы из вашего проекта, кроме тех, которые от STM. Теперь пытаюсь найти соответствие между старым и новым API: хоть они и похожи, но различия есть. Более простой путь пока не придумался :)
Проблема в том, что много переименований. Например USBD_DEVICE переименован в USBD_DescriptorsTypeDef

Про уровень абстракции, я имел в виду абстракцию от библиотеки STM. Чтобы, грубо говоря, можно было подменить библиотеку на любую другую, исправив только этот уровень, не трогая остальной код.

Еще вопрос созрел: нашел работу с таймерами в time.h. Правильно я понимаю, что при использовании FreeRTOS, лучше использовать таймера, которые предоставляет ОС?

@oleg84
Copy link
Author

oleg84 commented Jun 6, 2016

Вот, пока такой проект получается. Нужно файл открыть в cubemx и нажать project->generate code.
stm32f4-discovery.zip

@svenfm
Copy link

svenfm commented Jun 11, 2021

Hi everyone,
I'm currently implementing the lrndis stack on a STM32L4 using the CubeMX generated USB CDC as template. The device is recognized as RNDIS device but data communication is possible.

Have you managed to implement the lrndis stack based on CubeMX USB files? Or any hints what the problem could be?

@andarm
Copy link

andarm commented Sep 14, 2021

Hi everyone,
I'm currently implementing the lrndis stack on a STM32L4 using the CubeMX generated USB CDC as template. The device is recognized as RNDIS device but data communication is possible.

Have you managed to implement the lrndis stack based on CubeMX USB files? Or any hints what the problem could be?
@svenfm I got the same issue . Did you have got the answer now?

@svenfm
Copy link

svenfm commented Sep 16, 2021

Hi @andarm,
Couldn't figure out what the problem is. Task is on hold currently.

@emmehan
Copy link

emmehan commented Nov 24, 2021

Hi @andarm, @svenfm,

I have more or less integrated the RNDIS stack on a STM32H7 using the ST USB-Device library with the RNDIS-CDC class.
Data communication is working for me after some adjustments.
If you are still interested just ping me, then I will go ahead and publish my project for you guys once I have some spare time.

@ericQiang
Copy link

@JonasHeim Hi, I'm working on STM32F407+RNDIS, can you share your project? thanks.

@rodtstabile
Copy link

Hi Jonas, I am working on stm32H7 with Nucleo board can you share your project.

@AndyW999
Copy link

Hi Jonas

I would be extremely interested as I am working on an STM32F4 project for this.

Thanks

Andy.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants