Jump to content

    
Sign in to follow this  
AleksBak

Пример кода USBX CDC ACM для ThreadX

Recommended Posts

21 minutes ago, Chudik said:

Ага. И на хабре появилась статья для новичков в RTOS. Т.е. и для меня :) Давно искал хорошую RTOS и чтобы можно было железку в кубике настраивать

https://habr.com/ru/company/quarta/blog/514084/

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

Share this post


Link to post
Share on other sites
21 minutes ago, AlexandrY said:

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

Я так понимаю, что у него была задача показать, что в кубике можно не только FreeRTOS подключать. Ну и привлечь новичков типа меня к использованию этой системы. Может в компании обнаружили доступность системы для всех с учётом того, что похоже для МК 5 компаний лицензия собирается быть бесплатной, стали её изучать и заодно сделать уроки. В конце концов, такие статьи ещё и неплохая реклама. Скажем, для компании, которая не имеет ресурсов для разработки FW, а надо.

Для меня, как сказал выше, большим плюсом было соединение RTOS+CubeMX+ родной HAL от ST. Т.е. система даёт возможность традиционно обращаться к периферии

Плюс хорошая временная детерминированность, привет FreeRTOS.  И добила меня сертификация DO-178.  

А можно вкратце об уникальности системы? Чтобы знать, раз я на неё реально подсаживаюсь.

Share this post


Link to post
Share on other sites
1 час назад, Chudik сказал:

Я так понимаю, что у него была задача показать, что в кубике можно не только FreeRTOS подключать.

И что он натворил? Взял и полностью внедрил этот CubeMX в код системы и устройства. И теперь этот CubeMX на 100% можно сказать сросся со всеми компонентами и не так-то просто его теперь оттуда выкорчевать.

Share this post


Link to post
Share on other sites
4 hours ago, AleksBak said:

И что он натворил? Взял и полностью внедрил этот CubeMX в код системы и устройства. И теперь этот CubeMX на 100% можно сказать сросся со всеми компонентами и не так-то просто его теперь оттуда выкорчевать.

Не любите HAL - не используйте. Берите LL или в регистры руками.

Всё, что написано в статье на хабре применимо хоть к чему.

IAR/Keil/голый gcc/...

Share this post


Link to post
Share on other sites
10 hours ago, Chudik said:

Для меня, как сказал выше, большим плюсом было соединение RTOS+CubeMX+ родной HAL от ST. Т.е. система даёт возможность традиционно обращаться к периферии

Плюс хорошая временная детерминированность, привет FreeRTOS.  И добила меня сертификация DO-178.  

А можно вкратце об уникальности системы? Чтобы знать, раз я на неё реально подсаживаюсь.

На самом деле я не видел RTOS в которые нельзя было бы впихнуть некий уровень абстракции периферии третьей стороны.
Но это всегда выливается в проблему поддержки.
Впиливание неродного HAL-а (а для ThreadX нужен специальный HAL), которым здесь является HAL от ST приведет к деградации свойств RTOS и ее детерминированности. 
Например для Synergy сделан HAL заточенный под ThreadX и там реально никаких проблем с периферией. Взлетает абсолютно все и как надо с первого раза. 
А для STM я бы оставался на FreeRTOS. 
Ну может быть µC/OS.
µC/OS, кстати, идеальный вариант для новичков, там буквально разжевано как строить приложения с RTOS, какие объекты синхронизации использовать.
Все прикладные протоколы типа FTP, Telnet, HTTP и проч. имеют поддержку SSL, а у ThreadX такого нет. 

А уникальность ThreadX в том что она уникально интегрирована с Synergy и это решение свободно и  отрыто. 
Другие оси не предлагают такого уровня интеграции с периферией чипов. 

Короче говоря, я думаю Azure на STM с HAL-ом будет ни чем не лучше чем mbed, µC/OS или Zephyr с тем же HAL-ом.

Но может я чет не знаю про CubeMX.
Скажем вы видели в CubeMX ту самую поддержку  THREADX MODULES?
Автрр статьи на хабре их разрекламировал, а потом как-то забыл.
Между тем эти THREADX MODULES требуют плотной интеграции с MPU, а это серьезная вещь. У Synergy такого нет. 

Share this post


Link to post
Share on other sites
7 hours ago, x893 said:

Не любите HAL - не используйте. Берите LL или в регистры руками.

Согласен. Использование кубика не означает, что после первичной настройки периферии нельзя использовать какой угодно интерфейс. Единственно ST предупреждает, что лучше использовать во всё коде одинаково.

 

2 hours ago, AlexandrY said:

я не видел RTOS в которые нельзя было бы впихнуть некий уровень абстракции периферии третьей стороны.
Но это всегда выливается в проблему поддержки.

Так-то оно так. Но когда я пытался поиграться с ChibiOS, которая мне очень понравилась, то в общении с автором было сказано, что никаких сторонних HAL, только его личный. Иначе будет крах системы. Здесь вроде как использование HAL от ST не возбраняется.

 

2 hours ago, AlexandrY said:

Например для Synergy сделан HAL заточенный под ThreadX

Я не знаю, что такое Synergy. Но я пока не видел ни одной оболочки для настройки периферии, близкой по возможностям к CubeMXю Если в TheadX будет свой HAL, который работает лучше, чем от ST, никто не ограничивает переключиться на него после инициализации.

 

2 hours ago, AlexandrY said:

для STM я бы оставался на FreeRTOS. 

Однозначно нет. Есть опыт.

2 hours ago, AlexandrY said:

вы видели в CubeMX ту самую поддержку  THREADX MODULES?

Нет. Там вообще ничего кроме FreeRTOS ничего нет. И это меня сильно угнетало.

 

2 hours ago, AlexandrY said:

Автрр статьи на хабре их разрекламировал, а потом как-то забыл.

Он не забыл, это первая статья из задуманной серии. И она вышла буквально пару недель назад.

Я очень надеюсь, что следующая будет по GUIX

Share this post


Link to post
Share on other sites
On 8/16/2020 at 1:47 AM, Chudik said:

Я не знаю, что такое Synergy. Но я пока не видел ни одной оболочки для настройки периферии, близкой по возможностям к CubeMX. 
Если в TheadX будет свой HAL, который работает лучше, чем от ST, никто не ограничивает переключиться на него после инициализации.

Он не забыл, это первая статья из задуманной серии. И она вышла буквально пару недель назад.

Я очень надеюсь, что следующая будет по GUIX

Конфигураторы типа  CubeMX есть как минимум у Renesas, NXP, Infineon. Это из тех что я рассматривал. CubeMX  не есть некий феномен. 
Сейчас посмотрел что нового в CubeMX. И да, они вообще не знают про Azure RTOS.

Т.е. их middleware никак не интегрируется в Azure. А Azure RTOS ничего не знает от таком чуде как Cude IDE.
А скажем менеджер загрузочных модулей  в Azure сделан только под IAR. Перетаскивать его в Cude IDE будет довольно больно. Потому автор и помалкивает. 
Парочка примитивных примеров Azure RTOS использующих HAL от ST будет слабой пормощью. Нагенеренное в CubeMX  все равно туда автоматически не вставить. 
А вот Synergy вставляет любую периферию в любой комбинации прямо в ThreadX со своим HAL-ом. 
Визуальный конфигуратор Synergy гораздо мощнее в этом плане чем CubeMX. 

Кстати, GUIX не имеет набора драйверов для разных типов дисплеев и дисплейных интерфейсов. 
А вот µC/OS имеет очень большой выбор таковых. 
Думаю следующая статья автора с хабра про GUIX будет просто обсасывать готовый пример из 
Azure_RTOS_6.0_STM32L4+-DISCO_STM32CubeIDE_Samples_2020_08_10.zip и не даст никаких ответов по поводу интеграции с разными дисплеями и разработке драйверов под них.  


 
    

Share this post


Link to post
Share on other sites
On 8/17/2020 at 1:05 AM, AlexandrY said:

типа  CubeMX есть как минимум у Renesas, NXP, Infineon. Это из тех что я рассматривал. CubeMX  не есть некий феномен. 

Не феномен, но я работал с конфигураторами для TI (MSP439 и какой-то из последних ARM для работы под Линуксом), там только назначение пинов и небольшая помощь, что какие можно использовать вместо занятых. CubeMX помогает настроить дерево клоков, исправляет ошибки, сигнализирует если параметры, выставляемые для одной периферии конфликтуют с другой периферией. Может другие конфигураторы тоже это умеют, не знаю. У меня не было времени исследовать кучу других процессоров. Перешёл с MSP430 на STM32. Понравилось то, что errata чуть ли не на порядок меньше, чем у MSP, у которых errata растёт с каждым новым поколением и пока не вижу смысла перескакивать на другие процессоры. На новой работе вот только используют DSPic... :negative:, но не мне его программировать. Так что пофиг. :biggrin:

On 8/17/2020 at 1:05 AM, AlexandrY said:

Сейчас посмотрел что нового в CubeMX. И да, они вообще не знают про Azure RTOS.

Т.е. их middleware никак не интегрируется в Azure. А Azure RTOS ничего не знает от таком чуде как Cude IDE.

И бог с ним. Чем меня устроила статья на хабре - показала, как встроить и как запустить.

On 8/17/2020 at 1:05 AM, AlexandrY said:

 GUIX не имеет набора драйверов для разных типов дисплеев и дисплейных интерфейсов. 

И слава богу. :-) Можно написать свой на базе того, что даёт производитель с учётом конфигурации своего проекта, а не стандартного, рассчитанного на готовые платы. У меня вот два дисплея и EEPROM сидят на одной шине SPI. Какая Synergy это поддержит? :biggrin:

 

On 8/17/2020 at 1:05 AM, AlexandrY said:

Думаю следующая статья автора с хабра про GUIX будет просто обсасывать готовый пример из

Отлично. У меня как раз L4 :dance4: Правда, без +. Но там отличий немного. Собственно, только .ld поменять.

Но только я не увидел там примера GUIX. Только NETX для IoT

И, кстати, своего HAL у ThreadX нет, что является огромным плюсом этой системы.

Share this post


Link to post
Share on other sites
7 часов назад, Chudik сказал:

А вот в Azure_RTOS_6.0.2_STM32F746G-DISCO_STM32CubeIDE_Samples_2020_08_18.zip  GUIX действительно есть.

А у Вас эта дискавери имеется (746-ая)? Или какой у Вас дисплей/на какой плате?

Может отделить бы уже часть постов от этой темы т.к. они пошли больше по самой ОС и ее компонентам?

Share this post


Link to post
Share on other sites
On 8/29/2020 at 9:58 PM, Chudik said:

И слава богу. :-) Можно написать свой на базе того, что даёт производитель с учётом конфигурации своего проекта, а не стандартного, рассчитанного на готовые платы. У меня вот два дисплея и EEPROM сидят на одной шине SPI. Какая Synergy это поддержит? :biggrin:

И, кстати, своего HAL у ThreadX нет, что является огромным плюсом этой системы.

В Synergy драйвера довольно продуманные. 
Они, во-первых, тесно интегрируют между собой связанную периферию. Скажем DMA,  контроллер прерываний и SPI или I2S или I2C.
Связи между ними настраиваются в графической среде. Там можно выбирать номера каналов, планировать размеры буферов, приоритеты,  подменять одну периферию другой и т.д.
В драйверах Synergy есть понятие драйвера шины.
Это, например, когда на SPI  сидит пара дисплеев, FLASH память, инерциальный модуль, контроллер BLDC и RF модуль.
И ко всему этому идут обращения из разных задач. 
Вы, как понял, писали такое вручную. В Synergy это уже есть готовое.
Каждой периферии открывается логический канал на шине как будто другой периферии там нет, совершенно прозрачно и без головной боли об объектах синхронизации, критических секциях и проч. 
Потом в Synergy есть уже встроеные в RTOS бинарные драйвера периферии к которой вам никогда не дадут документации и где вы сами драйвер не напишите. Это и аппаратный криптографический модуль и модуль видеообработки и т.д.
И да, в Synergy для ThreadX есть не просто примитивный HAL, а стеки программного обеспечения, которые можно  наращивать и расшаривать между собой.
Это концепция до которой в CubeMX еще не доросли.  

Одна беда. Пару месяцев назад IAR отказался бесплатно давать для Synergy свой компилятор и теперь хотя за него 900$,
А в доступных народу выпусках IAR Embedded Workbench нет поддержки серии микроконтроллеров Synergy. 
Видать IAR учуял спрос и большие деньги и решил немного состричь.
Так что как-то уже опасаюсь предлагать Synergy.  

Share this post


Link to post
Share on other sites
14 hours ago, AleksBak said:

А у Вас эта дискавери имеется (746-ая)?

Нет, но это непринципиально. У меня нет и той Дискавери, на которой автор с хабра показывал пример установки. Для себя использовал ту, что у меня есть на L476 с соответствующими изменениями. Сейчас меняю этот учебный проект, слегка усложнив задачу. Просто для того, чтобы получше освоиться.

14 hours ago, AleksBak said:

Или какой у Вас дисплей/на какой плате?

Кастомная плата, на которой стоят два 5" OLED дисплея 256х64 на одной шине SPI. Ни на одной продающейся eval board такого нет и вряд ли будет. :yes: Так что точно придётся делать полностью своё. Главное - понять суть работы с GUIX. Самое близкое из примеров, наверное, будет спидометр, возможно, какие-то моменты можно будет взять и из medical. 

 

14 hours ago, AleksBak said:

Может отделить бы уже часть постов от этой темы

Это, наверное, вопрос к модераторам. Наверняка есть такая возможность.

-----------------------------------------------

39 minutes ago, AlexandrY said:

тесно интегрируют между собой связанную периферию. Скажем DMA,  контроллер прерываний и SPI или I2S или I2C.

Это я и так умею. 

41 minutes ago, AlexandrY said:

Связи между ними настраиваются в графической среде. Там можно выбирать номера каналов, планировать размеры буферов, приоритеты,  подменять одну периферию другой и т.д.

Лишний уровень абстракции. Не уверен, что это необходимо. 

43 minutes ago, AlexandrY said:

Пару месяцев назад IAR отказался бесплатно давать для Synergy свой компилятор

И на этом можно закончить. :biggrin:

Share this post


Link to post
Share on other sites
10 hours ago, Chudik said:

Это я и так умею. 

Лишний уровень абстракции. Не уверен, что это необходимо. 

И на этом можно закончить. :biggrin:

Вопрос не в умении.
И речь не об  уровене абстракции, а об уровене архитектуры. От архитектуры не убежишь.
Так или иначе все хотят архитектуры, где все разбито по слоям и по модулям. 

Закончить можно, но вопрос не решается.
Azure RTOS как она представлена Microsoft-ом все же голая.  Она юзабельна только если иметь адаптированный аппаратный уровень.  
И Synergy на сегодня единственная открытая платформа такой уровень предлагающая. 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this