|
STM32СubeMX и подобные |
|
|
|
Feb 14 2018, 02:36
|
Частый гость
 
Группа: Участник
Сообщений: 85
Регистрация: 20-09-15
Пользователь №: 88 488

|
Хотел собрать мнения специалистов, на примере STM32CubeMX. Все-таки стоит ли применять подобные вещи или это для домохозяек? При написании больших проектов на чистых С, С++ падает скорость разработки, но пока проверишь используемые ветки HAL, получается тоже не быстро. Есть ли подводные камни и сложности "ручной" сборки например RTOS, в Cube довольно быстро, но качество неизвестно. Может применение библиотек производителей, пусть не совсем хороших, не так уж плохо? Очень интересно мнение тех, кто имеет практический опыт по этой теме.
|
|
|
|
|
 |
Ответов
|
Feb 17 2018, 20:51
|

Гуру
     
Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904

|
Подолью масла в огонь: почему-то критика HAL исходит из того, что собственный код "через регистры" не содержит ошибок априори. Однако в это поверить невозможно, т.к. его создают тоже люди. Итого: получается альтернативный велосипед, возможно несколько более компактный и реализованный иначе, но выполняющий те же функции. В чем же принципиальное его достоинство? Свое?
Лично мое скромное мнение по этому вопросу: важно не только что именно применяется (какая библиотека), но и каким образом. Как построен процесс интеграции генерируемых/данных исходников, тестирование готового продукта и т.п. Ибо итоговый результат определяется не столько используемыми библиотеками/языками программирования, а тем кто их использует и как. HAL, как и любая готовая библиотека, позволяет несколько сэкономить время при аккуратном и грамотном подходе. При этом, переходя в практическую плоскость, было бы логичным организовать репозиторий на том же github с исправлениями тех проблем, которые оригинальные разработчики почему-то обходят стороной.
--------------------
BR, Makc В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
|
|
|
|
|
Feb 18 2018, 07:26
|

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

|
Цитата(makc @ Feb 17 2018, 22:51)  важно не только что именно применяется (какая библиотека), но и каким образом. Само определение HAL (hardware abstraction layer) указывает на его слабость. Как можно абстрагировать hardware если мы выбираем его за его уникальность? Т.е. как минимум в некотрых случаях HAL в принципе будет неприемлем если хотим использовать периферию инновационным способом. Каким бы образом вы HAL не применяли он однозначно вас изолирует от кучи полезной функциональности конкретной периферии. В embedded изоляцию от железа надо ограничивать BSP (board support package) и PSP (platform support package) Но даже эти вещи слишком абстрагированы от железа. Изоляция в виде HAL удобна видимо начинающим и неопытным программистам. Поскольку у них от мануалов по периферии в несколько тысяч страниц возникают нехорошие чувства. Их можно понять. По опыту скажу, чтобы приспособиться под информационную экосистему производитекля (структура, состав, стиль мануалов и т.д.) нужно несколько лет. У кого нет столько времени, понятно, альтенативы HAL-у не имеет. Когда я стал очень давно применять RTOS я понял, что ни один HAL и даже BSP мне не подходят. На уровне HAL нигде не используются сервисы RTOS. Максимум могут предложить самому написать свои функции синхронизации. Отсутствие асинхронности на уровне доступа к периферии рушит всю идеологию RTOS и принципы планирования. Иногда BSP очень сильно интегрирован в RTOS, например так обстоит в MQX. Тогда мне пришлось большими усилями вырвать из лап BSP управление DMA чтобы использовать его так как мне надо. Но еще много периферии осталось под властью BSP: USB, SDIO, Ethernet Но только потому что у них у всех есть собственный механизм DMA.
|
|
|
|
|
Feb 19 2018, 17:01
|

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

|
Цитата(haker_fox @ Feb 19 2018, 04:00)  Расскажите, пожалуйста, как вы обращаетесь к железу в своём коде? Всё-равно же какая-то абстракция есть? Ну, например, в коде терминала (консоли) вы же не обращаетесь к регистру данных последовательного порта или ethernet'а напрямую? И как вы поступите, если вам код нужно портировать с kinetis на stm32? У меня не абстракции, а минималистичные наборы функций, только для целевой задачи. Абстракция - это некое обобщение, исключение несущественного. Но откуда авторы HAL знают что для вас несущественно? Они свою абстракцию рождают при разработке своих демок. Абстракция как бы должна вести к лаконичности, но API HAL-ов наоборот раздуто до неприличия. Это от того, что им еще хотят придать видимость универсальности. Но что небоевые инженеры в офисе ST могут знать об универсальности? Вот когда говорят, что успешно применили HAL, там с GUI от segger-а, UART-ами, SPI, Ethernet и проч., то я почти не сомневаюсь что сделано это было на базе демок от ST. Малейшее отклонение от демки в сторону увеличения пропукной способности, более жесткого реального времени, увеличения количества одновременно работающих интерфейсов и следует разочарование. Поскольку оказывается, что надо штудировать сразу два огромных пакета документов: мануал по программированию семейства и мануал на HAL. Как только вы патчите HAL, то становитесь его заложником. На новые версии уже так просто не сможете перейти и принять участие во всеобщем веселье. Но остается необходимость детально изучать кучу абсолютно избыточных текстов вылавливая в них скрытые зависимости чтобы просто сделать минимальные изменения. Между тем на самом деле функции работы с периферией можно сделать очень короткими и предельно прозрачными. Например, работа с АЦП в моем пректе универсального модуля Ну а переход на другую платформу меня меньше всего заботит. Я уже перешел с STM32 на Kinetis и не вижу поводов переходить обратно. Я ж сравнивал их не один год и дружил я с ST много лет. Все прикладное интресное для ST с легкостью переносится на Kinetis, но вот сказать обратное нельзя.
|
|
|
|
|
Feb 22 2018, 11:39
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(Эдди @ Feb 21 2018, 07:47)  Все хорошо, кроме двух грубых ошибок: 1) комментарии на русском языке И что в этом плохого? Цитата(juvf @ Feb 22 2018, 11:41)  Дла реализации промышленного проекта STM32F769BI & LCD screen 7" 800x480 FreeRTOS, STemWin, FATFS, SDIO, FMC 32 bit, LTDC 24 bit, DMA2D, 3xUART, I2C, CAN, RTC, QSPI, ETM, SPI, FS USB - испоьзовался CubeMX для конфигурации всей периферии и настройки FreeRTOS и FATFS - все работает отлично, и самое главное радуют затраты времени на конфигурацию и последующие ремапы выводов. На счет затрат по времени - согласен, а вот на счет остального - не факт. Как-то делал пробный проект на MQX и их демо, взятых за основу. Так вот, все вроде работало, я обрадовался, пока не решил "поиграться" с усб-флешкой, воткнул ее, вытащил, и так раза 3, почему 3? Потому что на 4й все зависло намертво... Вот и решил потом все писать сам.
|
|
|
|
|
Feb 22 2018, 13:21
|
Знающий
   
Группа: Участник
Сообщений: 825
Регистрация: 16-04-15
Из: КЧР, Нижний Архыз
Пользователь №: 86 250

|
Цитата(mantech @ Feb 22 2018, 14:39)  И что в этом плохого? Банальное неуважение к окружающим. Неужели сложно на английском комментарии писать? Пусть он будет кривым, зато 100% людей, читающих код, поймут, что там в комментариях. // а отписывающиеся тут в пользу [censored], похоже, кроме мигания светодиодов и "примеров от ST" ничего не делали, иначе поняли бы, что быстрей написать "на голом CMSIS", чем ковыряться в кривом коде кала...
|
|
|
|
|
Feb 22 2018, 20:27
|

Местный
  
Группа: Свой
Сообщений: 257
Регистрация: 2-12-06
Из: Default City
Пользователь №: 23 021

|
Цитата(Эдди @ Feb 22 2018, 16:21)  // а отписывающиеся тут в пользу [censored], похоже, кроме мигания светодиодов и "примеров от ST" ничего не делали, иначе поняли бы, что быстрей написать "на голом CMSIS", чем ковыряться в кривом коде кала... Есть мнение, что те, кто отрицательно пишет про HAL не умеют работать с чужым кодом или очень любят охотится на блох там, где нужно охотиться на медведя. Например, у меня есть ряд проектов, в которых на STM32F4 крутится DMR стек (стек цифровой радиосвязи) с вокодером, TCP/IP стек и USB в режиме виртуального COM порта. Все это крутится на одной из популярных легковесных ОС. DMR стек реализовывал я, совместно с еще одним разработчиком - специалистом по ЦОС и помехоустойчивому кодированию. От процессора необходима реализация базовых функция, типа принять поток по SPI/I2S/I2C, встроенный EMAC, таймеры, USB phy. СТшный HAL с вышеописанными функциями вполне справляется. Основная сложность таких проектов - в прикладной логике (стеки протоколов, обработка сигналов и т.п.), и деньги платятся за это. Если не стоит задачи жесткой оптимизации (на диком масс-продашене такое вполне возможно), колупаться с изучением конкретного камня не имеет никакого смысла, ну будет софтовый оверхед, ну выберете камень посильнее и все. Словить какие-то тяжелые баги, например в HAL'овском драйвере SPI или I2C достаточно тяжело, оно либо работает, либо нет. Намного важнее, сосредоточиться на тех задачах, которые собственно и требуют решения в ходе разработки. А судя по тому, как все тут переживают за код в HAL'е, который, как и любой другой код, естественно имеет ряд недостатков, создается впечатление, что люди дальше дерганья GPIO и работе с SPI не уходят в своих трудах. От HAL очевидно придется уйти только тем, у кого: 1) Дикая серия и камень взят впритык, ибо на больших сериях каждый доллар на счету; 2) Если у вас жесткие требования по потреблению.
|
|
|
|
|
Feb 23 2018, 12:29
|
Местный
  
Группа: Участник
Сообщений: 328
Регистрация: 1-06-06
Из: USA
Пользователь №: 17 672

|
Цитата(Quasar @ Feb 22 2018, 15:27)  Есть мнение, что те, кто отрицательно пишет про HAL не умеют работать с чужым кодом или очень любят охотится на блох там, где нужно охотиться на медведя. ... От HAL очевидно придется уйти только тем, у кого: 1) Дикая серия и камень взят впритык, ибо на больших сериях каждый доллар на счету; 2) Если у вас жесткие требования по потреблению. А еще тогда, когда надо чтобы работало всегда, например, safety critical. Так, к слову, некоторые очень любят исполхзовать Linux, чтобы, например, лампочкой поморгать... Выбор инструментария и ответственность эа результаты его применение целиком лежит на разработчике. Нельзя запретить желающим писать с кубическим акцентом...
--------------------
|
|
|
|
|
Feb 23 2018, 19:55
|

Местный
  
Группа: Свой
Сообщений: 257
Регистрация: 2-12-06
Из: Default City
Пользователь №: 23 021

|
Цитата(pitt @ Feb 23 2018, 15:29)  А еще тогда, когда надо чтобы работало всегда, например, safety critical. Так, к слову, некоторые очень любят исполхзовать Linux, чтобы, например, лампочкой поморгать... Выбор инструментария и ответственность эа результаты его применение целиком лежит на разработчике. Нельзя запретить желающим писать с кубическим акцентом... А лампочкой поморгать это safety critical? Как вообще лампочка связана с safety critical? Вообще удивительно какой бардак у многих в голове. Ok, зайдем с другой стороны, как вы подтверждаете safety critical? Ваш софт проходит сертификацию на DO-178B, например, или вы просто по "пацанский зуб даете"? Какой-нибудь управляемый L2 коммутатор D-link или soho роутер от них же, ни разу не лампочкой поморгать, но в нем скорее всего обычный линукс. И там это решение вполне оправдано, так как там не стоит задачи в спец. сертификации. А вот на бортовом вычислителе боинга 737 вы линукс не встретите, и не потому, что он сильно сложнее, а потому, что сделав вычислитель на линукс вы упашетесь его сертифицировать и доказывать что оно надежно. Потому что в настоящем safety critical надо доказывать, а не просто трындеть. Если проект подразумевает safety critical с соответствующей сертификацией, то он подразумевает и соответствующее количество трудочасов и денег на него. В рамках этого проекта, естественно, разумно выделить группу для написания надежной замены ST'шному HAL'у. С которой потом, можно будет пройти все сертификации. А когда у вас задача спроектировать железку без доп. требований по надежности, а вы все равно тратите время на перепись HAL'а, полагая (почему-то?), что ваш быдло код лучше "индусского", вы просто разбазариваете время и деньги, отвлекаясь от основной задачи.
|
|
|
|
Сообщений в этой теме
phenixs STM32СubeMX и подобные Feb 14 2018, 02:36 haker_fox QUOTE (phenixs @ Feb 14 2018, 10:36) Очен... Feb 14 2018, 02:54 phenixs Давно уже, гуру рекомендовали не использовать чужи... Feb 14 2018, 03:03 haker_fox QUOTE (phenixs @ Feb 14 2018, 11:03) пере... Feb 14 2018, 04:23 kolobok0 Цитата(phenixs @ Feb 14 2018, 06:03) ...к... Feb 14 2018, 15:46 AlexandrY Цитата(phenixs @ Feb 14 2018, 05:03) Хоче... Feb 17 2018, 13:06 pitt Документация ко всем STM32, с которыми мне приходи... Feb 14 2018, 04:24 scifi Цитата(pitt @ Feb 14 2018, 07:24) Докумен... Feb 14 2018, 04:31  pitt Цитата(scifi @ Feb 13 2018, 23:31) Люто м... Feb 14 2018, 12:31   scifi Цитата(pitt @ Feb 14 2018, 15:31) Рекомен... Feb 14 2018, 12:36    pitt Цитата(scifi @ Feb 14 2018, 07:36) Не над... Feb 14 2018, 15:30 phenixs Вот, ключевые слова - если вас и ваших клиентов на... Feb 14 2018, 04:33 Quasar Цитата(phenixs @ Feb 14 2018, 07:33) ... ... Feb 14 2018, 04:47 phenixs Возможно не стоит содержать свой штат и писать дра... Feb 14 2018, 04:52 Quasar Цитата(phenixs @ Feb 14 2018, 07:52) Возм... Feb 14 2018, 06:37  phenixs Цитата(Quasar @ Feb 14 2018, 09:37) Не со... Feb 14 2018, 06:47 Jenya7 Категорически против CubeMX. Уж лучше SPL - намног... Feb 14 2018, 07:12 -AZ- Цитата(Jenya7 @ Feb 14 2018, 10:12) Катег... Feb 14 2018, 08:51  Jenya7 Цитата(-AZ- @ Feb 14 2018, 13:5... Feb 14 2018, 11:44   -AZ- Цитата(Jenya7 @ Feb 14 2018, 14:44) Мой с... Feb 14 2018, 11:55 amiller С каждым днём на форуме всё больше вопросов по Cub... Feb 14 2018, 07:38 0men применяю HAL, код из куба только для первого ознак... Feb 14 2018, 09:28 Connor По крайней мере никто не будет спорить что CubeMx ... Feb 14 2018, 09:39 AHTOXA Цитата(Connor @ Feb 14 2018, 14:39) По кр... Feb 14 2018, 13:42 -AZ- Но как разработчик, вы отвечаете за код чем то...
... Feb 14 2018, 10:55 Connor Цитата(-AZ- @ Feb 14 2018, 05:5... Feb 14 2018, 11:25  -AZ- Цитата(Connor @ Feb 14 2018, 14:25) Ну то... Feb 14 2018, 11:32 sadat Использую куб как визуализацию распиновки и первич... Feb 14 2018, 15:30 -AZ- Цитата(sadat @ Feb 14 2018, 18:30) Исполь... Feb 14 2018, 16:12 картошка Цитата(sadat @ Feb 14 2018, 18:30) Исполь... Feb 21 2018, 07:43 mcheb ЦитатаИспользую куб как визуализацию распиновки и ... Feb 14 2018, 15:54 Aleksandr Baranov -AZ-. Мне кажется, не стоит задавать таких вопросо... Feb 14 2018, 20:36 -AZ- Цитата(Aleksandr Baranov @ Feb 14 2018, 23... Feb 15 2018, 00:59 halfdoom Куб действительно удобен для начального раскидыван... Feb 15 2018, 11:15 pitt Цитата(halfdoom @ Feb 15 2018, 06:15) Куб... Feb 15 2018, 13:19 Allregia Цитата(halfdoom @ Feb 15 2018, 12:15) Куб... Feb 17 2018, 12:30 -AZ- А не лучше ли инициализацию подглядывать в SPL ?
И... Feb 17 2018, 10:19 leocat Цитата(-AZ- @ Feb 17 2018, 10:1... Feb 17 2018, 19:03 Baser Цитата(-AZ- @ Feb 17 2018, 12:1... Feb 17 2018, 20:12  leocat Цитата(Baser @ Feb 17 2018, 20:12) ...
Бо... Feb 18 2018, 03:31   Baser Цитата(leocat @ Feb 18 2018, 05:31) Не пу... Feb 18 2018, 19:43 -AZ- Вы совершенно правы, речь в разрезе HAL драйверов... Feb 17 2018, 14:51 halfdoom Цитата(makc @ Feb 17 2018, 23:51) почему-... Feb 18 2018, 05:10  makc Цитата(halfdoom @ Feb 18 2018, 08:10) Нем... Feb 19 2018, 13:56   halfdoom Цитата(makc @ Feb 19 2018, 16:56) Вы хоти... Feb 20 2018, 08:34    haker_fox QUOTE (AlexandrY @ Feb 20 2018, 01:01) но... Feb 20 2018, 08:08     haker_fox QUOTE (haker_fox @ Feb 20 2018, 16:08) Мн... Feb 21 2018, 01:04       mantech Цитата(Эдди @ Feb 22 2018, 16:21) Банальн... Feb 22 2018, 18:50          mantech Цитата(Quasar @ Feb 23 2018, 22:55) Какой... Feb 24 2018, 07:07          pitt Цитата(Quasar @ Feb 23 2018, 14:55) А лам... Feb 24 2018, 15:18           Quasar Цитата(pitt @ Feb 24 2018, 18:18) Следую ... Feb 24 2018, 18:08            pitt Цитата(Quasar @ Feb 24 2018, 13:08) Да-да... Feb 25 2018, 16:03        AlexandrY Цитата(Quasar @ Feb 22 2018, 22:27) Есть ... Feb 24 2018, 08:51         Quasar Цитата(AlexandrY @ Feb 24 2018, 11:51) DR... Feb 24 2018, 09:32          AlexandrY Цитата(Quasar @ Feb 24 2018, 11:32) Проек... Feb 24 2018, 14:45           Quasar Цитата(AlexandrY @ Feb 24 2018, 17:45) Да... Feb 24 2018, 15:13 golf2109 Дла реализации промышленного проекта STM32F769BI ... Feb 19 2018, 09:12 картошка STDlib для STM32 более менее приемлемое решение и ... Feb 20 2018, 12:01 juvf Цитата(phenixs @ Feb 14 2018, 07:36) Все-... Feb 22 2018, 08:41 Эдди Если исходники скрыты подальше от позора (как, нап... Feb 22 2018, 20:00 AlexandrY Цитата(Эдди @ Feb 22 2018, 22:00) Если ис... Feb 23 2018, 09:49  HardEgor Цитата(AlexandrY @ Feb 23 2018, 16:49) И ... Feb 23 2018, 11:06   mantech Цитата(HardEgor @ Feb 23 2018, 14:06) Хех... Feb 23 2018, 18:50  Эдди Цитата(AlexandrY @ Feb 23 2018, 12:49) И ... Feb 23 2018, 12:09   SSerge Цитата(Эдди @ Feb 23 2018, 19:09) Мой рун... Feb 23 2018, 12:44   AlexandrY Цитата(Эдди @ Feb 23 2018, 14:09) Мой рун... Feb 23 2018, 12:49 Эдди 3) если есть совесть. Feb 22 2018, 21:10 Quasar Цитата(AlexandrY @ Feb 23 2018, 12:49) И ... Feb 23 2018, 11:52 Эдди Я не комментирую то, что не нуждается в комментари... Feb 23 2018, 12:54 rudy_b На самом деле, именно для процессоров ST, HAL прос... Feb 23 2018, 14:03 Professor Chaos По поводу быстродействия кода, написанного с помощ... Feb 25 2018, 13:38 AlexandrY Цитата(Professor Chaos @ Feb 25 2018, 15... Feb 25 2018, 13:56 Quasar ЦитатаЭто обычная промышленная задача, решаемая дл... Feb 25 2018, 14:11 Aleksandr Baranov ЦитатаВ-четвертых, никаких операционных систем... Feb 25 2018, 14:26 Professor Chaos Как-то делал проект в фирме, занимающейся театраль... Feb 25 2018, 14:37 Quasar Цитата(Professor Chaos @ Feb 25 2018, 17... Feb 25 2018, 17:58  pitt Цитата(Quasar @ Feb 25 2018, 12:58) А люб... Feb 25 2018, 19:36  Professor Chaos Цитата(Quasar @ Feb 25 2018, 20:58) мне к... Feb 25 2018, 21:05   AlexandrY Цитата(Professor Chaos @ Feb 25 2018, 23... Feb 25 2018, 21:31  juvf Цитата(Quasar @ Feb 25 2018, 22:58) но мн... Feb 26 2018, 04:37   AlexandrY Цитата(juvf @ Feb 26 2018, 06:37) Абсолют... Feb 26 2018, 05:01    juvf Цитата(AlexandrY @ Feb 26 2018, 10:01) Ск... Feb 26 2018, 05:29     Quasar Цитата(juvf @ Feb 26 2018, 08:29) И ПО пи... Feb 26 2018, 06:53      juvf Цитата(Quasar @ Feb 26 2018, 11:53) я так... Feb 26 2018, 08:55       AlexandrY Цитата(juvf @ Feb 26 2018, 10:55) Свой яз... Feb 26 2018, 09:28     AlexandrY Цитата(juvf @ Feb 26 2018, 07:29) Это нав... Feb 26 2018, 07:17      Quasar Цитата(AlexandrY @ Feb 26 2018, 10:17) Бо... Feb 26 2018, 07:27       AlexandrY Цитата(Quasar @ Feb 26 2018, 09:27) Linux... Feb 26 2018, 07:41        Quasar Цитата(AlexandrY @ Feb 26 2018, 10:41) То... Feb 26 2018, 07:49   makc Цитата(juvf @ Feb 26 2018, 07:37) Абсолют... Feb 26 2018, 05:01
3 страниц
1 2 3 >
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0
|
|
|