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

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> STM32СubeMX и подобные
-AZ-
сообщение Feb 15 2018, 00:59
Сообщение #31


Частый гость
**

Группа: Участник
Сообщений: 75
Регистрация: 20-09-15
Пользователь №: 88 488



Цитата(Aleksandr Baranov @ Feb 14 2018, 23:36) *
-AZ-. Мне кажется, не стоит задавать таких вопросов, особенно на форуме. Вы сами должны решить, что Вам применять, и как. Вы всякий раз получите широкий ассортимент ответов от "Ура!" до "Долой!" и все равно останетесь перед личным выбором.

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

Сообщение отредактировал -AZ- - Feb 15 2018, 01:00
Go to the top of the page
 
+Quote Post
halfdoom
сообщение Feb 15 2018, 11:15
Сообщение #32


Знающий
****

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



Куб действительно удобен для начального раскидывания ножек и периферии. Можно подсмотреть в инициализацию и реализацию. Но на этом все - дальше все равно используем свои библиотеки, т.к. камни выбираем не 3-х кратным запасом и, практически всегда, в задачах жесткий реалтайм.
Go to the top of the page
 
+Quote Post
pitt
сообщение Feb 15 2018, 13:19
Сообщение #33


Местный
***

Группа: Участник
Сообщений: 315
Регистрация: 1-06-06
Из: USA
Пользователь №: 17 672



Цитата(halfdoom @ Feb 15 2018, 06:15) *
Куб действительно удобен для начального раскидывания ножек и периферии. Можно подсмотреть в инициализацию и реализацию. Но на этом все.

Полностью согласен. Вот только слово можно иногда переходит в нужно по причине никудышней документации, как мимнимум отвратительно переведенной на английский, не всегда полной, достаточно часто неточной и противоречивой, а также совершенно отсутствующих в ней примеров.


--------------------
Прокричал немой глухому:"...Спасибо за внимание!"
http://www.youtube.com/watch?v=3Nnj4ky4Z_g
Go to the top of the page
 
+Quote Post
-AZ-
сообщение Вчера, 10:19
Сообщение #34


Частый гость
**

Группа: Участник
Сообщений: 75
Регистрация: 20-09-15
Пользователь №: 88 488



А не лучше ли инициализацию подглядывать в SPL ?
Или она уже совсем заброшена?
Go to the top of the page
 
+Quote Post
Allregia
сообщение Вчера, 12:30
Сообщение #35


Профессионал
*****

Группа: Свой
Сообщений: 1 019
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Цитата(halfdoom @ Feb 15 2018, 12:15) *
Куб действительно удобен для начального раскидывания ножек и периферии. Можно подсмотреть в инициализацию и реализацию.


Полностью согласен.
Мне вообще кажется, что изначально не совсем верно был задан вопрос - причем тут CubeMX если речь в основном шла про HAL?

Сам CubeMX - отличная программа, очень помогает при проектировании схемы, особенно на новом процессоре - раскидывание ножек, распределение периферии, выбор и оптимизация клоков - все это с Кубом делать на порядки проще чем без него!
Да, скажут - "возьми даташит и по нему сделай клоки".
Можно.
Но я искренне завидую тем, кто способен держать в памяти все возможные комбинации множителей/делителей и частот.
Особенно, когда надо выполнить ряд условий - например иметь и частоту ядра определенную, и обеспчить USB/SDIO требуемым клоком, и уарнты обеспечить, и I2S, и наружу через МСО выдать то что нужно.

Недавно коллеги на работе белали новый проект, на базе моего старого. Использовали другой процессор. И все было классно, пока не выяснилось, что в новом проце нет делителя /3 на выводе МСО, а в старом проце - был.
Кварц стоит 24Мгц и надо на МСО иметь или 8, или 16, или 32. Так периферия требует.
А уже и плата была готова!

HAL'ом конечно лучше не пользоваться в "боевых" проектах, максимум использовать инициализацию, да и то не всегда.
Но вполне можно им пользоваться в тестовых "прикидках", чисто для ускорения времени, особенно для второстепенных вещей.
(ну вот как-то надо было поиграться с I2S, попутно с некоторым ногодрыгом и УАРТОм. I2S и написали все руками, а настройки ногодрыга и уарта - Куб сгенерил с HALом.)

P.S. стало уже ругательным слово "калокуб", но мы же не виноваты что у STM сейчас все с прставкой "Cube - вон не так давно вышел STMCube Programmer - ни малейшего отношения не имеющий ни к Кубу, ни к Халу!
Это просто STLInk Utility+FlashLoader+DfuSe, собранные в одной программе. (И что самое ценое - поддерждивающиее новые процессоры, в отличие от древнего Flash Loaderа.)
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Вчера, 13:06
Сообщение #36


Ally
******

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



Цитата(phenixs @ Feb 14 2018, 05:03) *
Хочется понять чем сегодня "дышит" мир гуру.

Почему у вас растет количестов типов контроллеров? Вот в чем вопрос. Почему нельзя остановиться на одном семействе?

Вспомогательные тулсы от ST, NXP, TI, Microchip... конечно нужны, поскольку выполняют роль интерактивных иллюстраций.
А стандартные доки не имеют нормальных иллюстраций.
Чужие либы нужны обязательно, вам большую часть времени стоит посвятить анализу и интеграции чужих либ.
Но функции периферии (HAL, драйвера или как их там еще называют ...) стоит писать самому.
Они по объему короткие, но сильнее всего влияют на качество реального времени.

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

Архитектура HAL-ов ST создана так чтобы покрыть всех представителей семейства сразу. Поэтому тексты избыточны и непроходимы.
А вот скажем среда от Micrium генерит строго целевые HAL-ы, заточенные только на вами выбранный чип, ничего лишнего.
Чем бесплатнее HAL, тем он больше будет подстроен под его создателей, чем под его пользователей.
Go to the top of the page
 
+Quote Post
-AZ-
сообщение Вчера, 14:51
Сообщение #37


Частый гость
**

Группа: Участник
Сообщений: 75
Регистрация: 20-09-15
Пользователь №: 88 488



Вы совершенно правы, речь в разрезе HAL драйверов периферии, которые необходимо писать самим.
Меня пытались убедить что различные доки по чипам это зло) взял Cube и Hal и погнал шлепать код не вникая в железо, регистры.
Вот и думаю, то ли отставать от темы начинаю и теряю кучу времени на свои драйвера, то ли все больше появляется людей которые не хотят этим забивать голову, но тогда как у них что то работает ?(наверно).
Интегрированные библиотеки (не драйвера) конечно нет смысла переписывать и изобретать велосипед, лучше их хорошо изучить и тестировать различными методами, как в общем-то и основной код.

Сообщение отредактировал -AZ- - Вчера, 14:52
Go to the top of the page
 
+Quote Post
leocat
сообщение Вчера, 19:03
Сообщение #38


Участник
*

Группа: Участник
Сообщений: 63
Регистрация: 12-10-16
Пользователь №: 93 727



Цитата(-AZ- @ Feb 17 2018, 10:19) *
А не лучше ли инициализацию подглядывать в SPL ?
Или она уже совсем заброшена?

SPL - поддерживается. Но, как уже написали, куб удобен на посмотреть какие ноги для чего, тактирование.
Go to the top of the page
 
+Quote Post
Baser
сообщение Вчера, 20:12
Сообщение #39


Просто Che
*****

Группа: Свой
Сообщений: 1 400
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



Цитата(-AZ- @ Feb 17 2018, 12:19) *
А не лучше ли инициализацию подглядывать в SPL ?
Или она уже совсем заброшена?

В середине прошлого года на сайте ST про SPL все упоминания были "устаревшая", "не рекомендованная для новых проектов", "смотрите HAL".
Сейчас я смотрю, видимо после массивной критики пользователей, все эти ярлыки убрали. Стало "Active".
Более того, в последние версии CubeMX добавили поддержку SPL, можно выбрать для каждого периф.модуля, что будет применяться для генерации кода, HAL или SPL.


А по вопросу топика, то тут почитаешь коллег, и складывается впечатление, что у всех проекты в жестком реалтайме, где каждую мкс нужно экономить, + у всех времени вагоны sm.gif
У меня все проекты неспешные, с быстродействием человеческой реакции, т.е. 10-ки мс. Но их много накопилось еще живых, несколько десятков. Со старых времен на ПИКах и АВРках, последних много на MSP430, а сейчас переползаем на STM32. И все это нужно поддерживать. Времени на разработку новых приборов много нет, зато потом можно не спеша, понемножку, все улучшать и доделывать. Поэтому по-быстрому генериться проект в CubeMX и делается его копия рядом.
Дальше один проект рабочий, а другой CubeMX-ный. Поскольку для меня семейство STM32 новое, наработок нет, то каждый следующий периферийный блок генерится в Кубе и переносится в рабочий проект, где уже просматриваются все HALовские функции и если они не слишком ужасны, то оставляются, если никак не лезут в мою концепцию, то пишется свое. Все макросы и прочие наслоения хидеров оставляю, ибо там так все завязано в один узел, что нужно либо все выбрасывать (а туда и CMSIS вплетен), либо все оставлять.
В результате примерно половину HALовских функций нормально применяю. А приборы по 10-15 лет выпускаются, будет еще время подчистить код sm.gif
Go to the top of the page
 
+Quote Post
makc
сообщение Вчера, 20:51
Сообщение #40


Гуру
******

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



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

Лично мое скромное мнение по этому вопросу: важно не только что именно применяется (какая библиотека), но и каким образом. Как построен процесс интеграции генерируемых/данных исходников, тестирование готового продукта и т.п. Ибо итоговый результат определяется не столько используемыми библиотеками/языками программирования, а тем кто их использует и как. HAL, как и любая готовая библиотека, позволяет несколько сэкономить время при аккуратном и грамотном подходе. При этом, переходя в практическую плоскость, было бы логичным организовать репозиторий на том же github с исправлениями тех проблем, которые оригинальные разработчики почему-то обходят стороной.


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
leocat
сообщение Сегодня, 03:31
Сообщение #41


Участник
*

Группа: Участник
Сообщений: 63
Регистрация: 12-10-16
Пользователь №: 93 727



Цитата(Baser @ Feb 17 2018, 20:12) *
...
Более того, в последние версии CubeMX добавили поддержку SPL, можно выбрать для каждого периф.модуля, что будет применяться для генерации кода, HAL или SPL.
...

Не путайте теплое с мягким... кубик генерит или LL или HAL.
LL и SPL не одно и то же.
Go to the top of the page
 
+Quote Post
halfdoom
сообщение Сегодня, 05:10
Сообщение #42


Знающий
****

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



Цитата(makc @ Feb 17 2018, 23:51) *
почему-то критика HAL исходит из того, что собственный код "через регистры" не содержит ошибок априори. Однако в это поверить невозможно, т.к. его создают тоже люди. Итого: получается альтернативный велосипед, возможно несколько более компактный и реализованный иначе, но выполняющий те же функции. В чем же принципиальное его достоинство? Свое?



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

Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Сегодня, 07:26
Сообщение #43


Ally
******

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


Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th February 2018 - 10:25
Рейтинг@Mail.ru


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