Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32СubeMX и подобные
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Страницы: 1, 2, 3, 4, 5
картошка
STDlib для STM32 более менее приемлемое решение и понятное, к тому же не глючное. У HAL хорошая задумка и архитектура - но использовать эту индусскую реализацию просто не советую. Всё позже накроется медным тазом и потеряете лицо. Два выхода: тщательное изучение периферии внутренних модулей или выдергивание волос из носа, когда начинаются проблемы.
Из опыта: у atmel и stm похоже одни и те же индусы на поддержке сидят. Самый простой внешний интерфейс как UART и с тем не умеют правильно работать (не могут сбрасывать флаги ошибок периферии, то есть не читают документацию). HAL от идус-STM это килобайты кода в контексте прерывания и понаставленные собственные грабли, с которыми сами авторы не могут разобраться. Разрешают срабатывания прерывания когда их об этом не просишь ну и т.д.
Подход к прерываниям обусловлен старой архитектурой, когда она проэктировалась еще для 7-9 армы. Вместо выгоды в применении нового NVIC контроллера, который встроен в систему в CORTEX ядрах - HALL делает доунгрейт этой системы до скоростей уровня 7DMPI ядра + немеряно ненужного кода и времени нахождения в прерывании.

С atmelом то же самое сейчас, непонятно кто пишет поддержку. Банальный uart, нет даже правильного чтения данных, который НАСТОЯТЕЛЬНО рекомендован производителями микросхем.
haker_fox
QUOTE (haker_fox @ Feb 20 2018, 16:08) *
Мне всегда нравятся ваши подробные и развёрнутые ответы! Прочел. Надо обдумать))))

Подумал, посмотрел код. У меня создалось ощущение, что вы не стесняетесь писать сразу в регистры периферии.
Эдди
Цитата(AlexandrY @ Feb 19 2018, 20:01) *

Все хорошо, кроме двух грубых ошибок: 1) комментарии на русском языке, 2) использование "магических чисел" вместо макросов или перечислений.
картошка
Цитата(sadat @ Feb 14 2018, 18:30) *
Использую куб как визуализацию ... Затем не оптимальные процедуры переписываю так, как мне удобнее.
Да и там этого кода совсем немного, чтобы изучить самостоятельно.


Это шо шутка какая-то ? Собственное неглючное написание процедур кхала (со всеми реализациями прототипов) займёт куда меньше времени чем время и аккуратность выкорчёвывания килобайтов ненужного и глючного кода в КОНТЕКСТЕ ПРЕРЫВАНИЙ еще и завязанного с ихними статусными состояниями ?! Или вы не знаете что там по UART, I2C всё написано ногами. Ничего себе "немного кода". Следующую версию кхалла когда они выпустят, снова будете искать что ненужно и выкорчёвывать ? Детский сад.
juvf
Цитата(phenixs @ Feb 14 2018, 07:36) *
Все-таки стоит ли применять подобные вещи ...
При написании больших проектов ... ?
Однозначно стоит!

Цитата(golf2109 @ Feb 19 2018, 14:12) *
Дла реализации промышленного проекта 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 - все работает отлично, и самое главное радуют затраты времени на конфигурацию и последующие ремапы выводов.
+1, ППКС.

Цитата(AHTOXA @ Feb 14 2018, 18:42) *
SPL по сравнению с HAL - это просто образец понятности.
Я не заметил особой разницы в нагромождениях HAL, SPL, LL. Документация от ST по мне, так достаточно понятная. Вожусь с TI-RTOS, CCS, cortex m3 от TI - вот это жуть!!! Вот это сплошное нагромождение и глюк на глюке. На фоне продуктов TI, продукты ST - это свет во тьме. Не сочтите за рекламу.
mantech
Цитата(Эдди @ 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й все зависло намертво... Вот и решил потом все писать сам.
Эдди
Цитата(mantech @ Feb 22 2018, 14:39) *
И что в этом плохого?

Банальное неуважение к окружающим. Неужели сложно на английском комментарии писать? Пусть он будет кривым, зато 100% людей, читающих код, поймут, что там в комментариях.

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


Не ищите проблемы на "ровном месте". Никогда не замечал проблем с русскими комментами ни сам ни те люди, кому писал проги. Причем русский все равно приходится использовать и в самой программе, например для меню...

ЗЫ. Для иностранцев проги не писал laughing.gif
Эдди
Если исходники скрыты подальше от позора (как, например, у мелкомягких, одинэсников и прочей ), то хоть на марсианском пишите. Но если выкладываете на гитхаб, лучше соблюдать нормы и писать на международном языке. Заодно и придерживаться какого-либо более-менее общепринятого стиля форматирования исходников.
Quasar
Цитата(Эдди @ 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) Если у вас жесткие требования по потреблению.
Эдди
3) если есть совесть.
AlexandrY
Цитата(Эдди @ Feb 22 2018, 22:00) *
Если исходники скрыты подальше от позора (как, например, у мелкомягких, одинэсников и прочей ), то хоть на марсианском пишите. Но если выкладываете на гитхаб, лучше соблюдать нормы и писать на международном языке. Заодно и придерживаться какого-либо более-менее общепринятого стиля форматирования исходников.

GitHub по сути - это история ошибок.
Отсутствие возможности сразу создавать проекты на национальных языках не моя ошибка, а ошибка GitHub-а. laughing.gif
Думаю они скоро ее исправят.

И вам советую не симулировать в своих текстах английские комментарии, а нормально писать их на языке который лучше знаете.
HardEgor
Цитата(AlexandrY @ Feb 23 2018, 16:49) *
И вам советую не симулировать в своих текстах английские комментарии, а нормально писать их на языке который лучше знаете.

Хех, я частенько открываю свои старые или чужие проекты в Keil, и если там русский текст, то начинается перебор кодировок - ANSI? UTF? Win1251? А на английском никаких проблем.
Есть и обратная сторона - с английского не все могут правильно перевести.
Quasar
Цитата(AlexandrY @ Feb 23 2018, 12:49) *
И вам советую не симулировать в своих текстах английские комментарии, а нормально писать их на языке который лучше знаете.


Иногда, комментарии на русском языке могут быть обязательным требованием заказчика/работодателя.

Цитата(HardEgor @ Feb 23 2018, 14:06) *
...ANSI? UTF? Win1251? А на английском никаких проблем.


Поэтому я всегда стараюсь писать комменты на инглише. Эта путаница с кодировками сильно утомляет. Особенно когда одни и те же исходники редактируются в разных операционках (Win <-> macOS/Linux).

[off]
Цитата( @ Feb 23 2018, 00:10) *
3) если есть совесть.


Вы уж как-нибудь определитесь, люди используют в работе HAL потому что у них совести нет, или потому что "ничего сложнее примеров от ST не делали". А то выглядит это все как какой-то подростковый максимализм. Вы наверное еще винду не любите, потому чтА "маздай"?
[/off]
Эдди
Цитата(AlexandrY @ Feb 23 2018, 12:49) *
И вам советую не симулировать в своих текстах английские комментарии, а нормально писать их на языке который лучше знаете.

Мой рунглиш и китайцы, и англикосы нормально прочитают. А что они с вашим рашкинским будут делать?
pitt
Цитата(Quasar @ Feb 22 2018, 15:27) *
Есть мнение, что те, кто отрицательно пишет про HAL не умеют работать с чужым кодом или очень любят охотится на блох там, где нужно охотиться на медведя.
...
От HAL очевидно придется уйти только тем, у кого:
1) Дикая серия и камень взят впритык, ибо на больших сериях каждый доллар на счету;
2) Если у вас жесткие требования по потреблению.

А еще тогда, когда надо чтобы работало всегда, например, safety critical. Так, к слову, некоторые очень любят исполхзовать Linux, чтобы, например, лампочкой поморгать... Выбор инструментария и ответственность эа результаты его применение целиком лежит на разработчике. Нельзя запретить желающим писать с кубическим акцентом...
SSerge
Цитата(Эдди @ Feb 23 2018, 19:09) *
Мой рунглиш и китайцы, и англикосы нормально прочитают. А что они с вашим рашкинским будут делать?

Вот щас всё брошу и начну думать как же китайцы будут мои программы читать?
Если оно им действительно надо пусть приходят с мешком юаней и вежливо спрашивают - "Что уважаемый лаовай хотел сказать своим комментарием в строке 1234?".
Ну, или пусть гуглом переводят.
AlexandrY
Цитата(Эдди @ Feb 23 2018, 14:09) *
Мой рунглиш и китайцы, и англикосы нормально прочитают. А что они с вашим рашкинским будут делать?

Взглянул я на ваш github.
У вас там просто нечего читать. У вас фактически нет коментов. То ли вы их не научились еще писать, то ли тяжко писать их на неродном языке.
С такими текстами вы не заинтересуете ни англоговорящих, ни русскоговорящих. 01.gif

Эдди
Я не комментирую то, что не нуждается в комментариях.
Если функция со свистом влезает на одну страницу кода, а аргументов у нее один-два, комментарии можно и не писать. Как и вещам вроде "два+два=четыре".
Остальное комментирую вполне достаточно.
P.S. И не надо на мой быдлокод смотреть! Я не программист.
rudy_b
На самом деле, именно для процессоров ST, HAL просто совершенно необходима, особенно начинающим.

Это связано с тем, что их периферия сделана совершенно безобразно и, практически, не описана (I2C, RTC - это просто кошмар какой-то, DMA тоже хороший подарок и т.д.). Как она на самом деле работает, и как преодолеть ее ошибки можно понять только одновременно глядя в исходники HAL, RefMan и DS.

Можно, конечно использовать уже адаптированные RTOS, но на не слишком сложных задачах как-то не хочется.
mantech
Цитата(HardEgor @ Feb 23 2018, 14:06) *
Хех, я частенько открываю свои старые или чужие проекты в Keil, и если там русский текст, то начинается перебор кодировок - ANSI? UTF? Win1251? А на английском никаких проблем.
Есть и обратная сторона - с английского не все могут правильно перевести.


Видал еще и индивидуумов, которые осилили только буквы и пишут на ужасном транслите smile3046.gif
Quasar
Цитата(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'а, полагая (почему-то?), что ваш быдло код лучше "индусского", вы просто разбазариваете время и деньги, отвлекаясь от основной задачи.
mantech
Цитата(Quasar @ Feb 23 2018, 22:55) *
Какой-нибудь управляемый L2 коммутатор D-link или soho роутер от них же, ни разу не лампочкой поморгать, но в нем скорее всего обычный линукс. И там это решение вполне оправдано, так как там не стоит задачи в спец. сертификации. А вот на бортовом вычислителе боинга 737 вы линукс не встретите, и не потому, что он сильно сложнее, а потому, что сделав вычислитель на линукс вы упашетесь его сертифицировать и доказывать что оно надежно. Потому что в настоящем safety critical надо доказывать, а не просто трындеть.


Далеко не всегда вопрос в сертификации. Например, делал в свое время вендинговую систему, требования - повышенная надежность, пришлось писать все с нуля, старался по минимуму использовать сторонние либы, особенно те, в которых плохо понимаю их принцип работы или они слишком замудрены, используют кучи всяких аллокаторов памяти и пр. В таких задачах мне не требуется какая-то сертификация, но собственные регламенты проверок и нагрузочного тестирования пришлось исполнять. Я б не смог так сделать на том же линуксе, т.к. не понимаю многое из его работы, но на кубах подобное тоже б делать не стал.
AlexandrY
Цитата(Quasar @ Feb 22 2018, 22:27) *
Есть мнение, что те, кто отрицательно пишет про HAL не умеют работать с чужым кодом или очень любят охотится на блох там, где нужно охотиться на медведя.

Например, у меня есть ряд проектов, в которых на STM32F4 крутится DMR стек (стек цифровой радиосвязи) с вокодером, TCP/IP стек и USB в режиме виртуального COM порта.
От HAL очевидно придется уйти только тем, у кого:
1) Дикая серия и камень взят впритык, ибо на больших сериях каждый доллар на счету;
2) Если у вас жесткие требования по потреблению.

DRM довольно примитивный протокол. Гораздо проще того же Bluetooth или ZigBee. Работали небось по UART-у с чипом реализующем два первых уровня или вообще весь стек.
TCP стек и USB теперь есть в любой демке любого производителя микроконтроллеров.
Я даже не глядя скажу что это у вас был lwIP.
У вас и задач наверно было две три.

Вам на самом деле почти не нужна периферия. Поэтому извините, но мне кажется вы недостаточно в теме.

Quasar
Цитата(AlexandrY @ Feb 24 2018, 11:51) *
DRM довольно примитивный протокол. Гораздо проще того же Bluetooth или ZigBee. Работали небось по UART-у с чипом реализующем два первых уровня или вообще весь стек.
TCP стек и USB теперь есть в любой демке любого производителя микроконтроллеров.
Я даже не глядя скажу что это у вас был lwIP.
У вас и задач наверно было две три.

Вам на самом деле почти не нужна периферия. Поэтому извините, но мне кажется вы недостаточно в теме.


Иногда лучше жевать, а не раздавать советы по проектированию...

Во-первых, речь шла о DMR, а не о DRM;
Во-вторых, если вам человек пишет о том, что на процессоре "крутится DMR стек", это значит, что он там крутится (на процессоре), а не на каком-то специализированном ASIC'е, общающемся по UART'у c хостом. Реализованы там уровни начиная от phy. В сам процессор вводятся либо квадратуры с бэйсбенда, либо сигнал после ЧМ (зависит от версии железки);
В-третьих, по поводу стеков USB и lwIP, да, они есть в любой демке, но это не означает, что их нельзя использовать в проектах (стек USB и стек lwIP). Я работал когда-то в одной конторе, в которой зачем-то писали свой стек. Устройства, которые выпускала контора были мягко говоря так себе, потому что все были заняты изучением RFC и бдениями за Wireshark'ом, отлаживая стек, а об оконечном функционале (за который клиенты и платили деньги) вспоминали редко.

Цитата
Далеко не всегда вопрос в сертификации. Например, делал в свое время вендинговую систему, требования - повышенная надежность, пришлось писать все с нуля, старался по минимуму использовать сторонние либы, особенно те, в которых плохо понимаю их принцип работы или они слишком замудрены, используют кучи всяких аллокаторов памяти и пр.


Проекты бывают разные, со своими тонкостями, но почему-то многие здесь, наплевав на тонкости, раздают идиотские советы типа "Cube и HAL" это для мигания лампочкой. Это просто признак низкого профессионализма, я так считаю.

AlexandrY
Цитата(Quasar @ Feb 24 2018, 11:32) *
Проекты бывают разные, со своими тонкостями, но почему-то многие здесь, наплевав на тонкости, раздают идиотские советы типа "Cube и HAL" это для мигания лампочкой. Это просто признак низкого профессионализма, я так считаю.

Да ладно то к мелочам придираться, я ж искал по "DMR stack" . Примитивная 4-FSK модуляция. Там демодулятор не больше сотни строк.
lwIP конечно можно использовать, но достался он вам в виде рабочей демки. Сомнительная заслуга что он у вас работает на STM32.
Где собственно приложение плотно работающее с периферией?



Quasar
Цитата(AlexandrY @ Feb 24 2018, 17:45) *
Да ладно то к мелочам придираться, я ж искал по "DMR stack" . Примитивная 4-FSK модуляция. Там демодулятор не больше сотни строк.


Какие у вас прекрасные познания. Да, весь протокол это примитивная 4FSK... Пять минут в гугле и все готово.

Цитата(AlexandrY @ Feb 24 2018, 17:45) *
lwIP конечно можно использовать, но достался он вам в виде рабочей демки. Сомнительная заслуга что он у вас работает на STM32.


Заслугами дети в ясельках меряются. А именно в этом треде, взрослые (как я полагаю) люди, обсуждают оптимальные пути решения технических задач. По поводу плотности использования периферии, я выше написал. Учить вас читать я не собираюсь.

Упомянутому мною выше D-Link'у все коммутаторы и роутеры, видимо, достаются в виде работающей демки linux'а.

pitt
Цитата(Quasar @ Feb 23 2018, 14:55) *
А лампочкой поморгать это safety critical? Как вообще лампочка связана с safety critical? Вообще удивительно какой бардак у многих в голове.

Ok, зайдем с другой стороны, как вы подтверждаете safety critical? Ваш софт проходит сертификацию на DO-178B, например, или вы просто по "пацанский зуб даете"?

Какой-нибудь управляемый L2 коммутатор D-link или soho роутер от них же, ни разу не лампочкой поморгать, но в нем скорее всего обычный линукс. И там это решение вполне оправдано, так как там не стоит задачи в спец. сертификации. А вот на бортовом вычислителе боинга 737 вы линукс не встретите, и не потому, что он сильно сложнее, а потому, что сделав вычислитель на линукс вы упашетесь его сертифицировать и доказывать что оно надежно. Потому что в настоящем safety critical надо доказывать, а не просто трындеть.

Если проект подразумевает safety critical с соответствующей сертификацией, то он подразумевает и соответствующее количество трудочасов и денег на него. В рамках этого проекта, естественно, разумно выделить группу для написания надежной замены ST'шному HAL'у. С которой потом, можно будет пройти все сертификации. А когда у вас задача спроектировать железку без доп. требований по надежности, а вы все равно тратите время на перепись HAL'а, полагая (почему-то?), что ваш быдло код лучше "индусского", вы просто разбазариваете время и деньги, отвлекаясь от основной задачи.

Следую мудрым советам:
“Never argue with an idiot. They will drag you down to their level and beat you with experience.”
― Mark Twain
Quasar
Цитата(pitt @ Feb 24 2018, 18:18) *
Следую мудрым советам:
“Never argue with an idiot. They will drag you down to their level and beat you with experience.”
― Mark Twain


Да-да. При этом, судя по вашим последним сообщениям на форуме, вы считаете нужным влезать в обсуждения с одним единственным советом "не использовать Cube, HAL, SPL". Какие еще цитаты приведете по этому поводу?

Professor Chaos
По поводу быстродействия кода, написанного с помощью CubeMX, HAL, SPL, а также применения ОС в микроконтроллерах - хороший пример - управление электродвигателями. Вот интересная статья про это. Вот вторая - про отечественный микроконтроллер К1921ВК01Т от НИИЭТ и про решение задачи управления двигателем на нём.
Если коротко, то
Цитата
В-четвертых, никаких операционных систем! Можно предвидеть, как у некоторых в голове крутится мысль «ну раз у вас такая сложная задача, поставьте нормальный микроконтроллер с Linux и пишите под него обычные приложения, обновляя ПО с флешки». Системы управления силовым оборудованием – системы очень жесткого реального времени. Не то что Linux, даже не все специализированные ОС реального времени подходят для таких задач. Например, прерывание АЦП по считыванию и усреднению аналоговых данных может вызываться с частотой до 100кГц. При этом оно будет содержать всего десяток-другой строк кода – сбор данных аналоговых каналов, пара проверок быстродействующих защит и выход – всё, больше ничего не успеть. Если поручить такое прерывание какому-нибудь планировщику задач ОС, то просто его собственное выполнение будет занимать больше ресурсов. Не говоря уже о том, что, в частности, для Linux вместо одной микросхемы МК на плату надо поставить еще две – внешнюю оперативную и флеш-память, отведя на них кучу драгоценных ножек кристалла, использовать шестислойную плату для правильной разводки, получить огромное время загрузки МК (иногда при сбое питания или срабатывании сторожевого таймера надо начать работу раньше, чем двигатель успел остановиться!), иметь проблемы с целостностью файловой системы и прочее.

Цитата
Также есть ряд продуктов, позволяющих «рисовать» программы непосредственно для микроконтроллеров. В том числе тот же Matlab умеет генерировать Си-код для МК именитых брендов на основе модели в Simulink. Якобы можно нарисовать и отладить нарисованную структуру системы управления на компьютере в модели, а потом загрузить в МК – и готово, поехали! И даже такие среды позволяют отлаживать нарисованные структуры управления прямо внутри МК, смотреть переменные и т.п., а на сайтах таких продуктов есть куча демо-проектов для самых сложных систем, «запрограммированных» таким образом. Но так как все реальные проекты до сих пор почему-то программируют «руками», то можно догадаться, что с «рисованием» что-то не так. Но тут даже сложно описать, что именно, когда не так – всё. Главный аргумент против – это отсутствие полного контроля над происходящим внутри МК. Вы нажимаете кнопку в такой среде «сделать хорошо» и надеетесь, что генератор кода сделает за вас всё остальное. Для каких-то простых систем, где производительности МК «за глаза», сроки разработки очень поджимают, а программировать на фирме, которая взялась за проект, никто не умеет… то да, наверное, можно попробовать «нарисовать» программу. Но если она не заработает как надо, или будет иметь какой-то очень специфический глюк, то отладить её уже не будет никакой возможности. А для сложной задачи, где даже при программировании руками с производительностью МК всегда проблемы, рисование не подходит просто по причине нехватки ресурсов – любой язык программирования, чем он более высокоуровневый (куда уж выше рисования), генерирует менее оптимальный машинный код. А низкоуровневые оптимизации, которые сделал бы программист на Си, такая система сделать не сможет (расчет блоков одной структуры с разным тактированием, использование закешированных значений синуса и косинуса, замена функций деления на умножение на заранее подготовленную величину, или совсем уж хитрые вещи типа таких и т.п.).
...
Таким образом, приходится писать свой софт, и писать на Си. И отлаживать свой софт так или иначе надо, и надо на объекте. Наверное, к этому месту статьи все уже поняли, что отладить структуру управления можно только просмотром осциллограмм внутренних переменных, т.е. просмотром графиков во времени, как меняется та или иная переменная на Си – скажем, «выход вот того блока, пятого слева, одновременно с входами третьего справа».
...
И сделать это можно только средствами самого микроконтроллера. Нельзя просто взять и поставить внешний быстрый интерфейс связи и посылать «наверх» значение какой-то переменной, так быстро, как только можно, а уже в системе верхнего уровня строить график. Потому что ни один интерфейс связи МК не успеет сделать это с той частотой, с которой протекают регулируемые переходные процессы. А если успеет, то все ресурсы МК уйдут на обслуживание этого интерфейса связи. Поэтому делают так – записывают осциллограмму в оперативную память МК, просто в массив.

Понятно, что не всегда и не везде так жёстко со временем, но, просто, как один из реальных примеров. Причём не из области военной техники, управления оружием, типа маневрирующей гиперзвуковой боеголовки Ю-71 ракетного комплекса "Сармат" в атмосфере на скоростях 5-7 км/с, или случаев, подлежащих обязательной сертификации. Это обычная промышленная задача, решаемая для управления лифтом, троллейбусом, трамваем, электровозом, карьерным самосвалом или тепловозом с электрической передачей.
AlexandrY
Цитата(Professor Chaos @ Feb 25 2018, 15:38) *
... - хороший пример - управление электродвигателями.
вторая - про отечественный микроконтроллер К1921ВК01Т от НИИЭТ и про решение задачи управления двигателем на нём...

У меня приличных слов нет про эту статью..
Сплошное нагромождение мифов.
Quasar
Цитата
Это обычная промышленная задача, решаемая для управления лифтом, троллейбусом, трамваем, электровозом, карьерным самосвалом или тепловозом с электрической передачей.


А вы уверены, что это «обычное» ПО, и не подлежит сертификации?


Aleksandr Baranov

Цитата
В-четвертых, никаких операционных систем! Можно предвидеть, как у некоторых в голове крутится мысль «ну раз у вас такая сложная задача, поставьте нормальный микроконтроллер с Linux и пишите под него обычные приложения, обновляя ПО с флешки». Системы управления силовым оборудованием – системы очень жесткого реального времени. Не то что Linux, даже не все специализированные ОС реального времени подходят для таких задач. Например, прерывание АЦП по считыванию и усреднению аналоговых данных может вызываться с частотой до 100кГц. При этом оно будет содержать всего десяток-другой строк кода – сбор данных аналоговых каналов, пара проверок быстродействующих защит и выход – всё, больше ничего не успеть. Если поручить такое прерывание какому-нибудь планировщику задач ОС, то просто его собственное выполнение будет занимать больше ресурсов. Не говоря уже о том, что, в частности, для Linux вместо одной микросхемы МК на плату надо поставить еще две – внешнюю оперативную и флеш-память, отведя на них кучу драгоценных ножек кристалла, использовать шестислойную плату для правильной разводки, получить огромное время загрузки МК (иногда при сбое питания или срабатывании сторожевого таймера надо начать работу раньше, чем двигатель успел остановиться!), иметь проблемы с целостностью файловой системы и прочее.



Off topic: https://pikabu.ru/story/sovetskie_inzhenery...ezhdali_2414570
Professor Chaos
Как-то делал проект в фирме, занимающейся театральным оборудованием. Я там был в качестве схемотехника. Были ещё трое технарей - два конструктора и программист. Там решались задачи сценической механики - подъём сцены, её поворот, движение лебёдки, движение софитов и т.п. По разговорам с ними я понял, что никакой сертификации КД и ПО там нет и в помине. Более того, сертифицировать, по-сути там нечего. Т.к. на сертификацию направляется полный комплект КД, включая ЭД, ПД, если она есть. Ничего такого там просто нет. Нет учтённого комплекта КД. Требования ЕСКД и ЕСПД там игнорируются, нормоконтроль отсутствует. ГОСТы по разработке, регламентирующие этапы разработки, количество партий приборов и объёмы испытаний - нет, не слышали. Вернее слышали и знаем, но сознательно игнорируем - это слишком долго и дорого. Т.е. случись чего - концов не найдёшь. Ни программ, ни схем. Они где-то у кого-то на компьютерах и неизвестно насколько соответствуют реальному железу. А если увольняется ключевой разработчик - то и этого может не остаться.
pitt
Цитата(Quasar @ Feb 24 2018, 13:08) *
Да-да. При этом, судя по вашим последним сообщениям на форуме, вы считаете нужным влезать в обсуждения с одним единственным советом "не использовать Cube, HAL, SPL". Какие еще цитаты приведете по этому поводу?

Я считаю полезным высказывать свое мнение. Прислушиваться к нему или нет личное дело каждого. А вот и подходящая цитата:"You can lead a horse to water, but you can't make it drink".
Quasar
Цитата(Professor Chaos @ Feb 25 2018, 17:37) *
Как-то делал проект в фирме, занимающейся театральным оборудованием.



Как вы ловко привели сначала в аргументации "лифты, троллейбусы, трамваи, электровозы, самосвалы", а потом продолжили софитами... Я тут не являюсь экспертом, но мне кажется, что ПО для важных узлов подобного рода техники пишется несколько более серьезно, чем ПО к приводам софитов и поворотных сцен, и все-таки имеет какую-то сертификацию на надежность, принятую в соответствующей отрасли.






Цитата(pitt @ Feb 25 2018, 19:03) *
Я считаю полезным высказывать свое мнение.


А любого, кто аргументировано возражает вашему мнению, вы считаете нужным назвать идиотом. Лечитесь, мой вам совет.
pitt
Цитата(Quasar @ Feb 25 2018, 12:58) *
А любого, кто аргументировано возражает вашему мнению, вы считаете нужным назвать идиотом. Лечитесь, мой вам совет.

Аргументы у каждого свои. А далее, см. приведенную выше цитату Марка Твена.
Professor Chaos
Цитата(Quasar @ Feb 25 2018, 20:58) *
мне кажется, что ПО для важных узлов подобного рода техники пишется несколько более серьезно, чем ПО к приводам софитов и поворотных сцен, и все-таки имеет какую-то сертификацию на надежность, принятую в соответствующей отрасли.

Но технические стороны вопроса от этого не меняются. В любом случае, это задача управления электродвигателем. Что для электромобиля, что для лифта, что для сцены.
AlexandrY
Цитата(Professor Chaos @ Feb 25 2018, 23:05) *
Но технические стороны вопроса от этого не меняются. В любом случае, это задача управления электродвигателем. Что для электромобиля, что для лифта, что для сцены.

Но вы хоть различаете BLDC двигатель от скажем AC или шаговика и в курсе что у них могут быть принципиально разные алгоритмы управления?
И задачи там могут на порядок отличаться по сложности.
Давайте ближе к конкретике если есть что сказать.
juvf
Цитата(Quasar @ Feb 25 2018, 22:58) *
но мне кажется, что ПО для важных узлов подобного рода техники пишется несколько более серьезно, чем ПО к приводам софитов и поворотных сцен
Абсолютно одинакового. Что ПО для авиации (как для гражданской, так и для военной), что ПО для автоматической поливки комнатных цветов - пишется абсолютно одинакового. Или кто-то для военной авиации использует годный софт, а для гражданской глючный? Кто-то для кухонных весов использует заведомо глючный компилятор? Или в коде для гражданской авиации можно на ноль делить?
AlexandrY
Цитата(juvf @ Feb 26 2018, 06:37) *
Абсолютно одинакового. Что ПО для авиации (как для гражданской, так и для военной), что ПО для автоматической поливки комнатных цветов - пишется абсолютно одинакового. Или кто-то для военной авиации использует годный софт, а для гражданской глючный? Кто-то для кухонных весов использует заведомо глючный компилятор? Или в коде для гражданской авиации можно на ноль делить?

Тут логика вас подводит.
После всего что люди узнали о когнитивных искаженях софт просто не может писаться одинаково.
Скажем в промышленности обычный софт можете писать на чем угодно,
а софт отвечающий за безопасность и цепи безопасности строго пишется в графической нотации функциональными блоками и обязательно должнен проходить инспекцию и квалификацию.
makc
Цитата(juvf @ Feb 26 2018, 07:37) *
Абсолютно одинакового. Что ПО для авиации (как для гражданской, так и для военной), что ПО для автоматической поливки комнатных цветов - пишется абсолютно одинакового. Или кто-то для военной авиации использует годный софт, а для гражданской глючный? Кто-то для кухонных весов использует заведомо глючный компилятор? Или в коде для гражданской авиации можно на ноль делить?


Почитайте про тот же MISRA C и вспомните, что сейчас ПО на МК управляет в том числе и тормозами в автомобилях, причем зачастую немаленьких. Поэтому ответ на Ваш вопрос прост: сложность и подходы к разработке и тестированию зависят от критичности сбоя. Просто так никто не будет писать кучу юнит-тестов и гонять программы через разные анализаторы, не будет проводить множество дорогих испытаний, не будет исследовать влияние аппаратных отказов на работу ПО и т.п.
juvf
Цитата(AlexandrY @ Feb 26 2018, 10:01) *
Скажем в промышленности обычный софт можете писать на чем угодно,
а софт отвечающий за безопасность и цепи безопасности строго пишется в графической нотации функциональными блоками и обязательно должнен проходить инспекцию и квалификацию.
Это наверно вы думаете что так есть, или что так должно быть. Или вы так пишете. Я пишу любой код как для космоса.... хоть для систем посадки, хоть для бытовой техники. И на предприятиях, где я принимаю участие в разработках, пишут максимально ответственно. Я тут не спорю, просто констатирую факт.

Цитата
Просто так никто не будет писать кучу юнит-тестов и гонять программы через разные анализаторы, не будет проводить множество дорогих испытаний, не будет исследовать влияние аппаратных отказов на работу ПО и т.п.
Да, согласен, просто так ни кто этого делать не будет. Но если вы пишете ПО - вы обязаны это сделать. Для любого ПО. Эти тесты и испытания не такие уж и дорогостоящие. Если это зарядной устройство для аккумулятора - то какие там могут быть дорогие испытания? Если пойдет устройство в массы и софт начнет глючить - это гибель производителю. Если это система посадки - тут тесты не дороже... тут само устройство больше, соответственно и тестов больше, включая облёты. И ПО пишется, что для бытовухи, что для систем жизнеобеспечения одинакового, с применением одинаковых IDE, компиляторов, библиотек.... Если кто-то считает что иначе - я вас разочарую.
Quasar
Цитата(juvf @ Feb 26 2018, 08:29) *
И ПО пишется, что для бытовухи, что для систем жизнеобеспечения одинакового, с применением одинаковых IDE, компиляторов, библиотек.... Если кто-то считает что иначе - я вас разочарую.


Видите ли, то, какие IDE используются для разработки критически-важных приложений, не является предметом данного обсуждения. Повторим еще раз:

- Был высказан тезис, что HAL, SPL, Cube, Linux это все для мигания лампочкой, в сложных приложениях надо писать все самому, потому что не известно, чего там индусы "накодили". Далее, мною и еще рядом участников был задан вопрос: "а с чего вы взяли, что ваш быдло код, лучше индусского в перечисленных выше фреймворках? Вы его как-то сертифицируете или просто "зуб даете"?";

- Судя по написанному в дальнейшем в этой ветке, никто ничего не сертифицируют, а просто уверен, что он пишет код лучше индусов из СТ;

- В добавок ко всему, у меня возник уточняющий вопрос, а почему в домашних/офисных роутерах чаще всего крутится Линуксе, а на Боинг 737 линукс можно встретить разве что в развлекательной системе для пассажиров? Решать навигационные задачи и управлять элеронами с тягой куда как проще какой-нибудь rasberry pi было )). Я предполагаю, что для важных приложений, нужна сертификация, принятая в соответствующей отрасли. Написав код в соответствии со стандартом, легче потом будет его сертифицировать, линукс никогда не подразумевал какой-либо сертификации, поэтому его и не используют в важных приложениях, и это никак не связано со сложностью проекта (лампочкой там мигают или двумя).


В одних проектах достаточно с представителем заказчика проверить, работает ли устройство или нет, не зависает ли со временем или под влиянием очевидных факторов, а в других, надо доказывать надежность, проходя соответствующую сертификацию. Разговор о ВЕЛИКОЙ надежности своего кода, всех, кто его никак не сертифицирует это просто шум, сказка детям на ночь. Поэтому там, где поставленной задачей заранее, никак не ограничивается использование HAL, SPL, Cube, Linux (сертификация, или ограничения по производительности/быстродействию, или потреблению) - их вполне можно использовать.


AlexandrY
Цитата(juvf @ Feb 26 2018, 07:29) *
Это наверно вы думаете что так есть, или что так должно быть. Или вы так пишете. Я пишу любой код как для космоса.... хоть для систем посадки, хоть для бытовой техники. И на предприятиях, где я принимаю участие в разработках, пишут максимально ответственно. Я тут не спорю, просто констатирую факт.

И ПО пишется, что для бытовухи, что для систем жизнеобеспечения одинакового, с применением одинаковых IDE, компиляторов, библиотек.... Если кто-то считает что иначе - я вас разочарую.

К чему этот пафосный "разрыв шаблонов"?
Логика тут обратная. Если вы для всего используете один и тот же подход, то значит вы не программировали системы отвественные за безопасность.
Я же говорю, в любой среде программирования промконтроллеров будет отдельная часть в которой делают ответственные приложения. Там будет свой язык и свои сертифицированные либы.
И никто единолично их не разрабатывает, всегда есть проверка сторонних экспертов. Потому как никто не хочет единоличной ответсвенности.

А в космос могут запускать что угодно. Даже студенты из нашего универа свой спутник запустили сделанный из PI и ардуино, и может быть даже с системой торможения и посадки. Поскольку у них там лимит времени на орбите. biggrin.gif
А американцы на МКС уже годами держат глючного робота.
Упоминание космоса - это нынче не о чем.

Цитата(Quasar @ Feb 26 2018, 08:53) *
Поэтому там, где поставленной задачей заранее, никак не ограничивается использование HAL, SPL, Cube, Linux (сертификация, или ограничения по производительности/быстродействию, или потреблению) - их вполне можно использовать.

Более того если вы неопытный разработчик, то HAL для вас единственный выход. Только с ним вы можете что-то быстро запустить.

А насчет надежности и безглючности согласен.
Не стоит приписывать HAL-у какую-то особенную глючность. Его все-таки солидная толпа проверяет.
HAL просто неэффективен.
Quasar
Цитата(AlexandrY @ Feb 26 2018, 10:17) *
Более того если вы неопытный разработчик, то HAL для вас единственный выход. Только с ним вы можете что-то быстро запустить.

А насчет надежности и безглючности согласен.
Не стоит приписывать HAL-у какую-то особенную глючность. Его все-таки солидная толпа проверяет.


HAL это вообще первое, что увидит начинающий в теме. Поэтому по нему и дофига вопросов на форумах, типа "НИ ЧЕГО НЕ РАБОТАЕТ ПАМАГИТЕ". У не окрепших умов создается впечатление, что это неработающее "Г...", вон же сколько тем по нему! Я сколько использую HAL, ни разу не сталкивался с чем-то, для чего нужна была бы помощь зала.

Цитата(AlexandrY @ Feb 26 2018, 10:17) *
HAL просто неэффективен.

Linux тоже не эффективен, память жрет, мипсы тратит, четырехслойку с BGA требует, но его популярность на планете порой пугает.

AlexandrY
Цитата(Quasar @ Feb 26 2018, 09:27) *
Linux тоже не эффективен, память жрет, мипсы тратит, четырехслойку с BGA требует, но его популярность на планете порой пугает.

Только не надо уводить тему в сторону.
Линукс огромен. Взять и переписать его полностью с нуля, но чтобы сверху работали все сторонние приложения никто не может.
А c HAL-ом нормальная практика.
Каждый профессионал сталкивается рано или поздно с необходимостью выкинуть HAL и заменить на свой более эффективный код.
Quasar
Цитата(AlexandrY @ Feb 26 2018, 10:41) *
Только не надо уводить тему в сторону.
Линукс огромен. Взять и переписать его полностью с нуля, но чтобы сверху работали все сторонние приложения никто не может.
А c HAL-ом нормальная практика.
Каждый профессионал сталкивается рано или поздно с необходимостью выкинуть HAL и заменить на свой более эффективный код.


По поводу каждого, вспомнилось:
Цитата
Второе по значимости событие в жизни каждого мужчины — это день, когда он покупает яхту, а самое великое событие в его жизни — тот день, когда он ее продает.

Д. Трамп.


Я лишь столкнулся с необходимостью расширить HAL, дабы обеспечить поддержку нескольких плат (с разным набором микросхем) одной прошивкой.
juvf
Цитата(Quasar @ Feb 26 2018, 11:53) *
я так не считаю. я в этой теме писал, что стоит куб использовать в больших проектах. Я тоже не понимаю, почему кто-то "фу, калокуб"? А где там кал? Да, хал (впрочем как и спл) громоздкая. Но это != глючная. Есть конкретный глюк в hal?

Я не считаю свой код лучше индусского, ровно как и хуже, поэтому я не брезгую HAL/SPL. Более того, я считаю, что популярная РТОС стабильнее самописного loop. Но не смотря на то, что используется, хал/спл/лл/свойКод /ртос - в любом случае нужно тестировать конечное ПО. Если индусский код кривой, то кривизна обнаружиться сразу.

Цитата
почему в домашних/офисных роутерах чаще всего крутится Линуксе, а на Боинг 737 линукс можно встретить разве что в развлекательной системе для пассажиров? ...........линукс ................. не используют в важных приложениях...........
я на боинге не работаю, но в смежной отрасли работаю. Могу от первого лица сказать - линукс (и не только) используется в авиации, сплошь и рядом. И купленный в составе с роутером, и в составе промышленной микроЭВМ, и свои сборки линукса из исходников.

Цитата
Я предполагаю, что для важных приложений, нужна сертификация, принятая в соответствующей отрасли.
Я не предполагаю, я говорю. Сертификацию проходим в соответствии с требованиями всего изделия (например: "изделие должно обеспечивать выходной импульс шириной 3.5 мкс ±0.1" - а как вы это делаете? хал или спл, ртос или луп, верилог или си - это вообще всем до лампочки). Отдельно ПО не сертифицируется.

Цитата
Написав код в соответствии со стандартом
Нет таких стандартов. Может такой стандарт и есть, если есть дайте пруфлинк.

Цитата
вы не программировали системы отвественные за безопасность
Вы свечку держали?
Цитата
в любой среде программирования промконтроллеров будет отдельная часть в которой делают ответственные приложения. Там будет свой язык и свои сертифицированные либы.
Не знаю о чем вы говорите, возможно у вас на предприятии так и есть. Свой язык? Это как? В автомобильном контроллере, ту часть кода, что управляет обдувом ног будете писать на си, а управление тормозами на особом языке? Мы всё пишем на Си/С++.

Вы мне доказываете как делается в нашей отрасли и на наших предприятиях? Я вам не хочу доказывать за всех и за вас, я говорю за себя и за ту отрасль в которой я работаю - нет ни каких сертифицированных либ и чего-то отдельно особоважного. Важно всё.

Цитата
У не окрепших умов создается впечатление, что это неработающее "Г..."
чаще у неокрепших умов создается впечатление, что у них руки не из плеч. А вот у профессионалов динозавров-консерваторов, те да.... те несправившись с инитом в хале, выпиливают его и чуть-ли не свой стартап на асме пишут, со словами "тут без хала всё просто, лучше выучить и всё написать самому, хал - отстой/глючный/громоздкий/индусский".


ps
Цитата
Я предполагаю .... мне кажется
я своё мнение высказал про куб/хал. Я влез в дискуссию, чтоб развеить подобные мифы. Может быть в боинге так и есть, управление вентиляцией не тщательно тестируют, а работу закрылок более тщательно, но на предприятиях, которые разрабатывают системы, связанные с жизнью, картина немного другая. Пишут ПО, тестируют, сертифицируют. Особыми либами и особыми инструментами не пользуются. Используют и спл, и хал, и линукс. Находят глюки в купленных корках альтеры - переписывают на свои. Находят дыры в ПО у ti - переписывают и т.д. .... Отдельно ПО не сертифицируется, сертифицируется весь комплекс.
Есть мифы, что для чистого звука, нужен особый USB кабель. И есть мифы, что важное ПО как-то по особому пишется, без хал, на специальном языке. Одинаково всё пишется.

pps все мои высказывания - только касательно встроенного ПО, где и используется HAL. Что касается сертификации и тестирования системного и прикладного ПО, которое продается/поставляется как ПО без железа (всякие астра-линуксы) - тут я молчу.
AlexandrY
Цитата(juvf @ Feb 26 2018, 10:55) *
Свой язык? Это как? В автомобильном контроллере, ту часть кода, что управляет обдувом ног будете писать на си, а управление тормозами на особом языке?

Да именно так.
Это все станкостроение, промышленная автоматизация.
Если вы об этом не знаете, то что у вас там за отрасль такая?
Если говорите за свою отрасль то назовите хоть ее, а то только наводите тень на плетень.
Все одинаково важным быть не может.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.