STM32 новичку в ARM что к чему

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
Asmodey
Друг Кота
Сообщения: 6316
Зарегистрирован: Сб янв 28, 2006 22:47:24

Re: STM32 новичку в ARM что к чему

Сообщение Asmodey »

Прошу прощения, что влезаю в вашу дискуссию в теме "STM32 новичку...", но все рискну задать вопрос - что такое SPL и HAL? Высокоуровневые библиотеки какие-то? Что такое CMSIS? Нет, я вижу этот CMSIS в настройках проекта Keil, даже галочки ставил-снимал во вкладке с ним, следуя найденным в интернете инструкциям к проектам типа "hello world". Но все равно не понимаю, что он и для чего. А он для чего-то нужен, раз вокруг него (и SPL с HAL) столько страстей разгорелось.
Астролябия-сама меряет, было бы что мерять!!!
Реклама
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: STM32 новичку в ARM что к чему

Сообщение VladislavS »

Asmodey, признавайся, тяжело жить с баном в гугле? :)
Реклама
Аватара пользователя
Asmodey
Друг Кота
Сообщения: 6316
Зарегистрирован: Сб янв 28, 2006 22:47:24

Re: STM32 новичку в ARM что к чему

Сообщение Asmodey »

Гугль из первых строк поиска ведет на три такие же дискуссии: здесь, на изиэлектроникс и на казусе (и участники холивара везде почти те же). Плюс на хабрахабр, который я принципиально не читаю.

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

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

Вот чего нашел тут https://www.drive2.ru/b/2253235/
1)CMSIS — это стандартная библиотека для кортексов. То есть это стандарт. С помощью этой библиотеки мы можем писать наши программы — но только с прямой записью в регистры. Это самый профессиональный способ написания программ, и кстати самый правильный, но сложный, так как придётся от а до я учить даташиты, постоянно сидеть с открытыми доками на процессор чтобы найти куда записать тот или иной бит в регистры.

2)SPL -Standard Peripherals Library — это попытка ST Electronics выпустить одну общую библиотеку для объединения всех своих процессоров. ЧТобы было проще переносить код и т.д и т.п. Работать проще как для начинающего, но всё равно всё вбиваем ручками — Никакой Автоматики!

3)HAL — Hardware Acess Level — это вторая попытка ST Electronics выпустить единую библиотеку для разработки. Заодно с ней вышла и программа CubeMX для настройки всего этого хозяйства.Всё гладко и хорошо по началау, но только по началу — дальше всё, приехали — ни примеров, ни обзоров. Поэтому пока не исследуют эту библиотеку вдоль и поперёк- делов не будет)))

То есть смысл в том что SPL уже вдоль и поперёк всю распилили и изучили. Поэтому, хочешь не хочешь а учить нужно. И вообще нужно стремиться к CMSIS. Но это уже кому захочется))
То что написано в пункте 3 актуально на сегодняшний день? Там где про примеры и описание либы HAL.
Астролябия-сама меряет, было бы что мерять!!!
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение WiseLord »

Нет, не актуально. Вместе с новыми выпусками библиотек идёт достаточный набор примеров. В основном, для HAL, но есть и для LL.
Кстати, если не ограничиваться только Ъ CMSIS, то сегодня вместо заброшенного SPL, возможно, более предпочтителен вариант использовать LL. Причём, есть две опции - 1) пользоваться только заголовочными файлами, в которых по сути просто больше полезных макросов, расширяющих CMSIS-овские, и много встраиваемых (inline) функций, более читабельных, чем прямые игры с регистрами в стиле CMSIS, и 2) пользоваться ещё и .c файлами (USE_FULL_LL_DRIVER - вроде так).
CubeMX умеет генерировать код как и для HAL, так и для LL.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Asmodey
Друг Кота
Сообщения: 6316
Зарегистрирован: Сб янв 28, 2006 22:47:24

Re: STM32 новичку в ARM что к чему

Сообщение Asmodey »

[uquote="WiseLord",url="/forum/viewtopic.php?p=3705021#p3705021"]более предпочтителен вариант использовать LL[/uquote]
Ее можно использовать в Keil? Или куб обязателен?
Астролябия-сама меряет, было бы что мерять!!!
Реклама
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: STM32 новичку в ARM что к чему

Сообщение dosikus »

Asmodey, периферия настолько гибкая и весьма универсальная, что ее не охватит ни спл ни калокуб.
Пользуясь ими вы ограничиваете себя и в выборе и росте.
Что спл что калокуб по сути своей та же аурдунья , набор скетчей. Да и STM озвучивает их лишь как пример использования а отнюдь не догму.
Реклама
a797945
Мучитель микросхем
Сообщения: 446
Зарегистрирован: Вс ноя 01, 2015 09:15:16
Откуда: 69.Ржев

Re: STM32 новичку в ARM что к чему

Сообщение a797945 »

если б я "плясал" от хал/спл врядли мне пришло в голову, что возможно вот так запрячь таймер

TIM2->SMCR = ((uint16_t)0x0066); // TS=110, SMS=110
TIM2->CCMR1 = ((uint16_t)0x0100); // CC2S=01 (PA1 start)
TIM2->CCMR2 = ((uint16_t)0x00F8); // OC3M=111, OC3PE=1, OC3CE =1 (PA0 strob)
TIM2->CCER = ((uint16_t)0x0100); // CC3E=1 (PA2 OUT)
TIM2->CR1 = ((uint16_t)0x0088); // ARPE, OPM
(stm32f103c8)(биты ARPE, OC3PE возможно лишние - не помню, проверял без них или нет)

не предполагал, что на таймер возможно подать раздельно три вещи (такт,старт,строб) - "курил" RM оказалось возможно. Из абстракций spl я б до этого не додумался. говорю за себя :))
это сочинял цепочку tim1-tim2-spi, когда хотел почти полностью аппаратно читать некую последовательность (полученную из двухполярного кода), tim1 определял начало посылки и стробом разрешал tim2, последний "сдвигал" клок для spi.
не подумайте, что призываю писать на регистрах, речь не об этом.
Аватара пользователя
Myp3ik
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

Re: STM32 новичку в ARM что к чему

Сообщение Myp3ik »

a797945, есть заголовочный файл, где описаны все регистры и маски для периферии. Можно обойтись без использования "магических чисел" :idea: :roll:
Иван Сусанин - первый полупроводник :solder:
arkhnchul
Друг Кота
Сообщения: 3092
Зарегистрирован: Пн апр 06, 2015 11:01:53
Откуда: москва, уфа

Re: STM32 новичку в ARM что к чему

Сообщение arkhnchul »

a797945, вот так писать неведомые числа в регистры - это же очень удобно и понятно, правда?

Добавлено after 1 minute 20 seconds:
[uquote="dosikus",url="/forum/viewtopic.php?p=3705092#p3705092"]Пользуясь ими вы ограничиваете себя и в выборе и росте.[/uquote]с чего бы? использование библиотек ааатнюдь не означает "только библиотечные функции и ни шагу в сторону".
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение Eddy_Em »

[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3704901#p3704901"]Eddy_Em, поясните связь между RTE драйверами CMSIS и HAL.[/uquote]
Что такое "RTE драйвер"? Базовый CMSIS — это просто заголовочные файлы, общие для всех ARM'ов. Я уже выше говорил. И SPL, и кал, и opencm3 включают в себя CMSIS — без него никуда!
И изучать МК переделевыя то, что написано для одного МК под другой - это уже практика, до которой и следует разобрать теорию на примерах. А у Вас какой-то замкнутый круг получается: сначала переделать, а потом изучать )))
Что за чушь? Где я такой бред нес?
Изучать МК надо, читая даташит, RM и эррату! А не ковыряясь в чужом быдлокоде!!!
ПростоНуб писал(а):И вижу в CMSIS только два варианта драйверов. Один когруэнтный SPL, а второй - RTE. Так о каких драйверах тогда речь?
Что за каша у вас в голове? Нет там никаких "драйверов"!!! Я даже ссылку кидал на свой гитхаб. Слабо пройти, и посмотреть, что входит в CMSIS? Там тупо десяток заголовочных файлов: общее + для разных архитектур.
Asmodey писал(а):Так-то понятно, что это все либы, но в чем разница между ними?
Нет, CMSIS - не библиотека! А базовый набор заголовочных файлов для работы со всеми семействами ARM'ов.
Библиотеки для STM32 вообще не нужны. Хотя бы потому, что нет нормальной библиотеки. Я имею в виду header-only библиотеку, которая не будет содержать ничего лишнего, кроме макросов!
А все эти SPL и прочие калокубы — полный отстой, который только усугубляет. Работу они не облегчают.
Asmodey писал(а):Ее можно использовать в Keil? Или куб обязателен?
Выкиньте это дерьмище! Ни кайло, ни калокуб вам не нужны!
Куб разве что иной раз полезен, чтобы выбрать подходящий МК под свои хотелки (скажем, нужно вам 8 независимых UART'ов — вуаля! а потом уже закрываем куб и работаем по-человечески).
a797945 писал(а): врядли мне пришло в голову, что возможно вот так запрячь таймер
Это — единственный правильный вариант с небольшой оговоркой: magick numbers — зло! Нельзя их писать. Надо писать макросы. Тогда читабельность и поддерживаемость кода будет на высоте.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: STM32 новичку в ARM что к чему

Сообщение Мурик »

Eddy_Em писал(а):magick numbers — зло! Нельзя их писать. Надо писать макросы.
[uquote="VladislavS",url="/forum/viewtopic.php?p=3705305#p3705305"]Макросы зло, язык идёт в сторону отказа от них.[/uquote]
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение Eddy_Em »

Макросы — зло?
Ну-ну, посмотрел бы я на того, кто без макросов будет на С писать...
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
a797945
Мучитель микросхем
Сообщения: 446
Зарегистрирован: Вс ноя 01, 2015 09:15:16
Откуда: 69.Ржев

Re: STM32 новичку в ARM что к чему

Сообщение a797945 »

м-да, надо было сделать еще оговорку: код приведен не в качестве примера, а чтоб не быть голословным.
за магические цифры - согласен, понимаю. Только я вот ни разу не программист (мне так было понятней и компактней) и переносимость здесь мне не нужна, уговорил железяку выполнять как мне надо и пошел дальше собирать механизм.
:(
господа-товарищи, извиняюсь, что эти пять строчек доставили кому-то не приятные ощущения. Сорри.
Аватара пользователя
Asmodey
Друг Кота
Сообщения: 6316
Зарегистрирован: Сб янв 28, 2006 22:47:24

Re: STM32 новичку в ARM что к чему

Сообщение Asmodey »

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3705341#p3705341"]Нет, CMSIS - не библиотека! А базовый набор заголовочных файлов для работы со всеми семействами ARM'ов.[/uquote]
Описание регистров и битов для обращения к ним?

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3705341#p3705341"]Ни кайло, ни калокуб вам не нужны!.[/uquote]
Кайло в смысле Keil? А что тогда, с моим нулевым опытом? Игрался немного с Visual Studio Code, но он для меня после MPLAB как темный лес, в котором я светодиодом моргну только через полгода...
Астролябия-сама меряет, было бы что мерять!!!
arkhnchul
Друг Кота
Сообщения: 3092
Зарегистрирован: Пн апр 06, 2015 11:01:53
Откуда: москва, уфа

Re: STM32 новичку в ARM что к чему

Сообщение arkhnchul »

[uquote="Asmodey",url="/forum/viewtopic.php?p=3705396#p3705396"]Описание регистров и битов для обращения к ним?[/uquote]в основном да. Ну и плюс некоторые общие для ARM-ов штуки типа системного таймера.
[uquote="Asmodey",url="/forum/viewtopic.php?p=3705396#p3705396"]Кайло в смысле Keil? А что тогда, с моим нулевым опытом?[/uquote]что угодно, насамделе. Нравится кейл - используйте его. Тут просто некоторые, не будем показывать пальцем, проповедуют путь задротства, "все, что не ручное перекидывание битов по даташиту - подлежащая искоренению ересь", вот это вот) Если надо не шашечки, а ехать, причем ехать более-менее стандартно - даж околоардуинский platformio вполне рабочий вариант.
и нулевой опыт в чем? если в программировании вообще - отложите контроллеры в сторону и осильте базовые вещи на компе.
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение Eddy_Em »

IDE — огромное множество. И выбирать голимую проприетарщину — тупиковый путь!
Если не нравится, скажем, qt-creator, есть sublime, geany... Да толпа их! Можно вообще vim или emacs использовать — на любителя.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Аватара пользователя
Myp3ik
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

Re: STM32 новичку в ARM что к чему

Сообщение Myp3ik »

Тупиковый путь - это голимый компилятор.
Иван Сусанин - первый полупроводник :solder:
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: STM32 новичку в ARM что к чему

Сообщение dosikus »

[uquote="a797945",url="/forum/viewtopic.php?p=3705378#p3705378"]м-да, надо было сделать еще оговорку: код приведен не в качестве примера, а чтоб не быть голословным.
за магические цифры - согласен, понимаю. Только я вот ни разу не программист (мне так было понятней и компактней) и переносимость здесь мне не нужна, уговорил железяку выполнять как мне надо и пошел дальше собирать механизм.
:(
господа-товарищи, извиняюсь, что эти пять строчек доставили кому-то не приятные ощущения. Сорри.[/uquote]

+100500, абсолютная истина.
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: STM32 новичку в ARM что к чему

Сообщение Мурик »

Asmodey писал(а):А что тогда, с моим нулевым опытом?
Как раз для минимального опыта. http://purebasic.mybb.ru/viewtopic.php?id=575
http://purebasic.mybb.ru/viewtopic.php?id=564

Куб как кодогенератор я бы не советовал использовать. Лучше SPL или регистры.
Myp3ik писал(а):Тупиковый путь - это голимый компилятор.
Так много компиляторов для ARM. Вроде есть только IAR, Keil и GCC.
Аватара пользователя
afz
Опытный кот
Сообщения: 744
Зарегистрирован: Сб дек 22, 2012 08:17:42
Откуда: Караганда, Казахстан

Re: STM32 новичку в ARM что к чему

Сообщение afz »

Asmodey писал(а):Кайло в смысле Keil? А что тогда, с моим нулевым опытом?
Да ничего особенного. Берешь и пользуешь. А пару не очень понятных мест (в общем-то, типичные "непонятки" Кейла) я уже разъяснял коллеге под ником СКАЗОЧНИК в начале этого года. Глянь сюда и сюда
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
Ответить

Вернуться в «ARM»