реклама на сайте
подробности

 
 
4 страниц V  « < 2 3 4  
Reply to this topicStart new topic
> STM32СubeMX и подобные
golf2109
сообщение Feb 19 2018, 09:12
Сообщение #46


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 15-04-10
Из: Kiev
Пользователь №: 56 654



Дла реализации промышленного проекта 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 - все работает отлично, и самое главное радуют затраты времени на конфигурацию и последующие ремапы выводов.
Go to the top of the page
 
+Quote Post
makc
сообщение Feb 19 2018, 13:56
Сообщение #47


Гуру
******

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



Цитата(halfdoom @ Feb 18 2018, 08:10) *
Немного не так. HAL можно использовать в проектах, где цена ошибки не велика и быстродействие не критично. Если же приходится инспектировать каждую строчку чужого, далеко не всегда оптимального кода, то действительно, проще написать обертку в рамках своего фреймворка.


Вы хотите сказать, что разрабатываете прошивки исключительно с полным соблюдением MISRA C? Включая их статический анализатор?

Если нет, то любой код содержит ошибки. При исполнении любого кода что-то может пойти не так (некорректная обработка внешних условий и исключительных ситуаций). Поэтому я не вижу почему HAL нельзя использовать в проектах, где цена ошибки велика и быстродействие критично (профилировку и оптимизацию никто не отменял. Я пытаюсь сказать, что в случае правильного использования HAL будет хорошо работать правило 20/80 (закон Парето). А потом, правильно его применив, потратить оставшееся время (80%) на отладку и тонкую доводку. Возможно, с патчами в коде HAL.



Цитата(AlexandrY @ Feb 18 2018, 10:26) *
Само определение HAL (hardware abstraction layer) указывает на его слабость.
Как можно абстрагировать hardware если мы выбираем его за его уникальность?


Есть типовые периферийный блоки для решения вполне стандартных задач (таймеры, контроллеры SPI/I2C и т.п.). Да, они отличаются функциональными особенностями и регистрами, но в целом они очень похожи и с прикладной точки зрения вполне могут быть взаимозаменяемы. Поэтому я не вижу тут никакой слабости.

Более того, HAL для разных семейств SMT32 немного отличается по API. Это можно расценить, как попытку уйти от слабости. wink.gif

Цитата
Т.е. как минимум в некотрых случаях HAL в принципе будет неприемлем если хотим использовать периферию инновационным способом.
Каким бы образом вы HAL не применяли он однозначно вас изолирует от кучи полезной функциональности конкретной периферии.


Пардон, но я нигде не утверждал, что HAL покрывает возможности периферии на 100%. Также не говорил, что не нужно знать возможности и особенности этой периферии. Это все знать нужно, но на это и есть процесс тонкой доводки после того, как большая часть функционала была реализована.

Повторюсь выражаясь иначе: чтобы грамотно применять HAL нужно знать и понимать, как работает железо и периферия отдельно взятого контроллера. HAL не может заменить это понимание, что и показывают многие неудачные попытки его применения новичками. Но для опытного разработчика он может позволить сэкономить время на разработку базового функционала, с точной доводкой под частную задачу, с дополнительной оптимизацией. Ценой является определенный оверхед, но если объем флеша позволяет, то почему бы и нет?


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Feb 19 2018, 17:01
Сообщение #48


Ally
******

Группа: Модераторы
Сообщений: 5 659
Регистрация: 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, но вот сказать обратное нельзя.

Go to the top of the page
 
+Quote Post
haker_fox
сообщение Вчера, 08:08
Сообщение #49


Познающий...
******

Группа: Свой
Сообщений: 2 706
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (AlexandrY @ Feb 20 2018, 01:01) *
но вот сказать обратное нельзя.

Мне всегда нравятся ваши подробные и развёрнутые ответы! Прочел. Надо обдумать))))


--------------------
Желаю всем гармонии с самими собой!
Go to the top of the page
 
+Quote Post
halfdoom
сообщение Вчера, 08:34
Сообщение #50


Знающий
****

Группа: Свой
Сообщений: 965
Регистрация: 20-01-05
Пользователь №: 2 072



Цитата(makc @ Feb 19 2018, 16:56) *
Вы хотите сказать, что разрабатываете прошивки исключительно с полным соблюдением MISRA C? Включая их статический анализатор?


Речь, большей частью, идет об оптимальности кода и в ней HAL проигрывает по всем статьям специализированному коду. А инспекция кода HAL, при его использовании, необходима, т.к. требуется выловить все побочные эффекты каждого вызова API.

Цитата(makc @ Feb 19 2018, 16:56) *
Поэтому я не вижу почему HAL нельзя использовать в проектах, где цена ошибки велика и быстродействие критично (профилировку и оптимизацию никто не отменял. Я пытаюсь сказать, что в случае правильного использования HAL будет хорошо работать правило 20/80 (закон Парето). А потом, правильно его применив, потратить оставшееся время (80%) на отладку и тонкую доводку. Возможно, с патчами в коде HAL.


Здесь можно углубиться в непролазные дебри обсуждения каждой функции с избыточным кодом, поэтому просто отмечу - мы уже пытались базировать свой код на HAL и результат заметно хуже по времени разработки, объему бинарника и быстродействию. Но, повторюсь, у нас задачи далеки от отправки десяти байт через GSM.


Цитата(makc @ Feb 19 2018, 16:56) *
Более того, HAL для разных семейств SMT32 немного отличается по API. Это можно расценить, как попытку уйти от слабости. wink.gif


И это тоже. Для сравнения, один из наших "умников" (в хорошем смысле слова), унифицировал внутренний API до такой степени, что прикладная задача практически не видит разницы между применяемыми МК семейства С2000 (TI) и STM32F3. И да, совсем забыл - все библиотеки и обертки написаны на C++ с очень жесткой типизацией всего чего только можно, поэтому даже выставить бит в одном регистре пользуясь дефайном от другого, весьма проблематично.
Go to the top of the page
 
+Quote Post
картошка
сообщение Вчера, 12:01
Сообщение #51


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 28-12-05
Из: Odessa
Пользователь №: 12 673



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

С atmelом то же самое сейчас, непонятно кто пишет поддержку. Банальный uart, нет даже правильного чтения данных, который НАСТОЯТЕЛЬНО рекомендован производителями микросхем.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Сегодня, 01:04
Сообщение #52


Познающий...
******

Группа: Свой
Сообщений: 2 706
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (haker_fox @ Feb 20 2018, 16:08) *
Мне всегда нравятся ваши подробные и развёрнутые ответы! Прочел. Надо обдумать))))

Подумал, посмотрел код. У меня создалось ощущение, что вы не стесняетесь писать сразу в регистры периферии.


--------------------
Желаю всем гармонии с самими собой!
Go to the top of the page
 
+Quote Post
Эдди
сообщение Сегодня, 04:47
Сообщение #53


Знающий
****

Группа: Участник
Сообщений: 741
Регистрация: 16-04-15
Из: КЧР, Нижний Архыз
Пользователь №: 86 250



Цитата(AlexandrY @ Feb 19 2018, 20:01) *

Все хорошо, кроме двух грубых ошибок: 1) комментарии на русском языке, 2) использование "магических чисел" вместо макросов или перечислений.


--------------------
Go to the top of the page
 
+Quote Post
картошка
сообщение Сегодня, 07:43
Сообщение #54


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 28-12-05
Из: Odessa
Пользователь №: 12 673



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


Это шо шутка какая-то ? Собственное неглючное написание процедур кхала (со всеми реализациями прототипов) займёт куда меньше времени чем время и аккуратность выкорчёвывания килобайтов ненужного и глючного кода в КОНТЕКСТЕ ПРЕРЫВАНИЙ еще и завязанного с ихними статусными состояниями ?! Или вы не знаете что там по UART, I2C всё написано ногами. Ничего себе "немного кода". Следующую версию кхалла когда они выпустят, снова будете искать что ненужно и выкорчёвывать ? Детский сад.
Go to the top of the page
 
+Quote Post

4 страниц V  « < 2 3 4
Reply to this topicStart new topic
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st February 2018 - 22:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.00892 секунд с 7
ELECTRONIX ©2004-2016