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

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

Участник

Группа: Участник
Сообщений: 60
Регистрация: 25-08-17
Пользователь №: 98 970

|
По поводу быстродействия кода, написанного с помощью CubeMX, HAL, SPL, а также применения ОС в микроконтроллерах - хороший пример - управление электродвигателями. Вот интересная статья про это. Вот вторая - про отечественный микроконтроллер К1921ВК01Т от НИИЭТ и про решение задачи управления двигателем на нём. Если коротко, то Цитата В-четвертых, никаких операционных систем! Можно предвидеть, как у некоторых в голове крутится мысль «ну раз у вас такая сложная задача, поставьте нормальный микроконтроллер с Linux и пишите под него обычные приложения, обновляя ПО с флешки». Системы управления силовым оборудованием – системы очень жесткого реального времени. Не то что Linux, даже не все специализированные ОС реального времени подходят для таких задач. Например, прерывание АЦП по считыванию и усреднению аналоговых данных может вызываться с частотой до 100кГц. При этом оно будет содержать всего десяток-другой строк кода – сбор данных аналоговых каналов, пара проверок быстродействующих защит и выход – всё, больше ничего не успеть. Если поручить такое прерывание какому-нибудь планировщику задач ОС, то просто его собственное выполнение будет занимать больше ресурсов. Не говоря уже о том, что, в частности, для Linux вместо одной микросхемы МК на плату надо поставить еще две – внешнюю оперативную и флеш-память, отведя на них кучу драгоценных ножек кристалла, использовать шестислойную плату для правильной разводки, получить огромное время загрузки МК (иногда при сбое питания или срабатывании сторожевого таймера надо начать работу раньше, чем двигатель успел остановиться!), иметь проблемы с целостностью файловой системы и прочее. Цитата Также есть ряд продуктов, позволяющих «рисовать» программы непосредственно для микроконтроллеров. В том числе тот же Matlab умеет генерировать Си-код для МК именитых брендов на основе модели в Simulink. Якобы можно нарисовать и отладить нарисованную структуру системы управления на компьютере в модели, а потом загрузить в МК – и готово, поехали! И даже такие среды позволяют отлаживать нарисованные структуры управления прямо внутри МК, смотреть переменные и т.п., а на сайтах таких продуктов есть куча демо-проектов для самых сложных систем, «запрограммированных» таким образом. Но так как все реальные проекты до сих пор почему-то программируют «руками», то можно догадаться, что с «рисованием» что-то не так. Но тут даже сложно описать, что именно, когда не так – всё. Главный аргумент против – это отсутствие полного контроля над происходящим внутри МК. Вы нажимаете кнопку в такой среде «сделать хорошо» и надеетесь, что генератор кода сделает за вас всё остальное. Для каких-то простых систем, где производительности МК «за глаза», сроки разработки очень поджимают, а программировать на фирме, которая взялась за проект, никто не умеет… то да, наверное, можно попробовать «нарисовать» программу. Но если она не заработает как надо, или будет иметь какой-то очень специфический глюк, то отладить её уже не будет никакой возможности. А для сложной задачи, где даже при программировании руками с производительностью МК всегда проблемы, рисование не подходит просто по причине нехватки ресурсов – любой язык программирования, чем он более высокоуровневый (куда уж выше рисования), генерирует менее оптимальный машинный код. А низкоуровневые оптимизации, которые сделал бы программист на Си, такая система сделать не сможет (расчет блоков одной структуры с разным тактированием, использование закешированных значений синуса и косинуса, замена функций деления на умножение на заранее подготовленную величину, или совсем уж хитрые вещи типа таких и т.п.). ... Таким образом, приходится писать свой софт, и писать на Си. И отлаживать свой софт так или иначе надо, и надо на объекте. Наверное, к этому месту статьи все уже поняли, что отладить структуру управления можно только просмотром осциллограмм внутренних переменных, т.е. просмотром графиков во времени, как меняется та или иная переменная на Си – скажем, «выход вот того блока, пятого слева, одновременно с входами третьего справа». ... И сделать это можно только средствами самого микроконтроллера. Нельзя просто взять и поставить внешний быстрый интерфейс связи и посылать «наверх» значение какой-то переменной, так быстро, как только можно, а уже в системе верхнего уровня строить график. Потому что ни один интерфейс связи МК не успеет сделать это с той частотой, с которой протекают регулируемые переходные процессы. А если успеет, то все ресурсы МК уйдут на обслуживание этого интерфейса связи. Поэтому делают так – записывают осциллограмму в оперативную память МК, просто в массив. Понятно, что не всегда и не везде так жёстко со временем, но, просто, как один из реальных примеров. Причём не из области военной техники, управления оружием, типа маневрирующей гиперзвуковой боеголовки Ю-71 ракетного комплекса "Сармат" в атмосфере на скоростях 5-7 км/с, или случаев, подлежащих обязательной сертификации. Это обычная промышленная задача, решаемая для управления лифтом, троллейбусом, трамваем, электровозом, карьерным самосвалом или тепловозом с электрической передачей.
|
|
|
|
Сообщений в этой теме
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 makc Подолью масла в огонь: почему-то критика HAL исход... Feb 17 2018, 20: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 AlexandrY Цитата(makc @ Feb 17 2018, 22:51) важно н... Feb 18 2018, 07:26  haker_fox QUOTE (AlexandrY @ Feb 18 2018, 15:26) У ... Feb 19 2018, 02:00   AlexandrY Цитата(haker_fox @ Feb 19 2018, 04:00) Ра... Feb 19 2018, 17:01    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    Эдди Цитата(AlexandrY @ Feb 19 2018, 20:01) ра... Feb 21 2018, 04:47     mantech Цитата(Эдди @ Feb 21 2018, 07:47) Все хор... Feb 22 2018, 11:39      Эдди Цитата(mantech @ Feb 22 2018, 14:39) И чт... Feb 22 2018, 13:21       mantech Цитата(Эдди @ Feb 22 2018, 16:21) Банальн... Feb 22 2018, 18:50       Quasar Цитата(Эдди @ Feb 22 2018, 16:21) // а от... Feb 22 2018, 20:27        pitt Цитата(Quasar @ Feb 22 2018, 15:27) Есть ... Feb 23 2018, 12:29         Quasar Цитата(pitt @ Feb 23 2018, 15:29) А еще т... Feb 23 2018, 19:55          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 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 >
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|