Stm32 с чего начать изучение...

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
afz
Опытный кот
Сообщения: 744
Зарегистрирован: Сб дек 22, 2012 08:17:42
Откуда: Караганда, Казахстан

Re: Stm32 с чего начать изучение...

Сообщение afz »

Eddy_Em писал(а):А для ногодрыга у меня вот такие макросы.
В общем-то трудно придумать что-то радикально другое, просто у меня оно привязано конкретно к предметной области. Например, запись Qsend(u_RPL1_L); означает "послать низкий уровень на линию u_RPL1_L", которая где-то прописана, как

Код: Выделить всё

#define u_RPL1_L	0x0200	// D09
Причем в комментарии я указал конкретный GPIO, а в макросах использован задефайненный в другом месте идентификатор для этого GPIO, так, что перекинуть это управление на другой GPIO - это исправить единственный дефайн. Запись Qrem(u_RPL1_L); выполняет действие, обратное Qsend. Запись Qtst(u_SYNC_H) возвращает состояние бита u_SYNC_H, того GPIO, который назначен принимающим сигналы состояния. Возвращает, по-простому, ноль или не ноль.

Это я к тому, что дрыгоножество GPIO не стоит таких серьезных действий, как написание могучей библиотеки на приплюснутом Си, все решается по-простому. И сразу же возражу тем, кто попытается обвинить меня в использовании "магических чисел". Когда я выбираю биты GPIO для такого дрыгоножества, у меня на втором экране открыт даташит на мой конкретный камень, я выбираю нужные ноги, глядя на всё, что там есть - не занят ли этот бит GPIO чем-то, что может мне потребоваться, как там у него с толерантностью к 5В и пр. Ну, а какой хекс-код будет у этого бита, это не вопрос даже для начинающих...
Reflector писал(а):оверхед у тебя в макросах, потому что компилятор не имеет не малейшего представления о том, что обрабатывает, а если бы имел, то заставить его это делать на этапе компиляции на С все равно нельзя.
Какой к черту оверхед в макросах, пересылающих заранее определенную константу в GPIOx->BSRR ? Или мою переменную в GPIOx->ODR ?
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: Stm32 с чего начать изучение...

Сообщение Reflector »

[uquote="afz",url="/forum/viewtopic.php?p=3785566#p3785566"]Какой к черту оверхед в макросах, пересылающих заранее определенную константу в GPIOx->BSRR ? Или мою переменную в GPIOx->ODR ?[/uquote]
Допустим есть 3 пина светодиодов, они где-то в одном месте дефайнятся, а в другом нужно во все три записать единички. Продемонстрируй код без оверхеда который бы записывал константу в один, два или три BSRR в зависимости от того к каким портам эти пины относятся.

ps. Понятно, что в таком простом случае оптимизатор может помочь, но С++ дает гарантию, что даже если у нас 333 пина все расчеты будут выполнены на этапе компиляции.
Аватара пользователя
astrahard
Это не хвост, это антенна
Сообщения: 1405
Зарегистрирован: Чт фев 19, 2015 12:41:04

Re: Stm32 с чего начать изучение...

Сообщение astrahard »

Дааа..., навык, на кончиках пальцев, видеть, какие вычисления будут выполнены на этапе компиляции, не легко дается. Как помочь afz?. Опять-же, разговоры про оверхед, при переходе к стандартам ООП все-же имеют под собой практический опыт некоторых авторов, я так думаю, (ну не будут же они просто обманывать, да и ради чего). Остается открытым проблема, как автор исходника умудряется "ОБМАНУТЬ" стандарты так, что все становиться просто ужасно и, хуже чем раньше (макросы) и, как с этим бороться???? (ремарка: все-же, некоторым авторам, удается обмануть стандарты ООП НЕФОРМАЛЬНО, так как формально претензий компилятор не высказывает).

P.S. Идея!!!, может строить тренд размера нативного кода во времени!!!! Пишет, пишет автор код и, вдруг, тренд показал скачок размера нативного кода, разумеется в сторону увеличения, если это делать в реальном времени, то получиться неплохой асистент в уразумении факта того, что что-то пошло не так и, автору удалось таки (НЕФОРМАЛЬНО!!!! в противоположность формально) "ОБМАНУТЬ" стандарт.

Добавлено after 39 minutes 35 seconds:
Я тоже, пока, начинающий ООП исследователь и, меня волнует эта непростая тема. В таком ключе... А вот еще вопрос, Позднее связывание (и полиморфизм) VS конечный автомат. Критерий выбора, типа, когда уже конечный автомат это мало и пора переходить к методу Позднее связывание (и полиморфизм), в том числе и в смысле границы применимости к конкретному кристаллу. Есть ли такие исследования?
"Every profession is a conspiracy against the uninitiated" (B. Shaw)
"A textbook can be defined as a book unsuitable for reading" (B. Shaw)
Tautology is humor in "this" place (Vigo Carpathian)
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: Stm32 с чего начать изучение...

Сообщение VladislavS »

ООП приводит к оверхеду только если баловаться виртуальными методами. Ну или динамически создавать-убивать объекты. А если чисто инкапсуляция и наследоварие, то компилятор разбирается на ура с этим как будто и не было никакого ООП. И даже если вы идёте на поздее скязывание, то это надо для логики работы программы и не факт что то же самое будет эффективней ручками делать.
Аватара пользователя
afz
Опытный кот
Сообщения: 744
Зарегистрирован: Сб дек 22, 2012 08:17:42
Откуда: Караганда, Казахстан

Re: Stm32 с чего начать изучение...

Сообщение afz »

astrahard писал(а):Как помочь afz?.
Да не надо мне помогать. Я совсем не знаю приплюснутого Си. И, скорее всего, не узнаю. Я вообще не программист. Программистом я был в 70-е - 80-е - самое начало 90-х. Минск-32, потом ЕС ЭВМ (те, что клоны Системы-360), потом Электроника-60 (клон LSI-11, микро-версия PDP-11), потом чуть-чуть, самым краем зацепил писюки, и все. С (примерно) 93-го заработать на жизнь программированием в наших широтах стало нереально, ехать куда-то за бугор - поздно, возраст уже не тот, пришлось сменить род деятельности. И только выйдя на пенсию я решил "тряхнуть стариной" и занялся программированием МК. В порядке хобби - программированием МК у нас тоже не заработаешь, нет у нас желающих оплачивать какие-либо разработки. Что можно, купим в Китае, а чего в Китае не купишь, значит оно и не нужно... :(

Теперь про оверхед. Вы его трактуете слишком буквально. ИМХО, необходимость написать для банального дрыгоножества GPIO такую простыню, как продемонстрировал коллега VladislavS - это не то, что оверхед, это натуральный оверкилл, несмотря на то, что оно компилируется в весьма компактный модуль. Собственно, размер двоичного кода это далеко не всегда критично, совет "не лезет - возьми камень пожирнее" никто не отменял. А вот напрягаться, чтобы сочинить ТАКОЕ - это очень сильно на любителя...
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: Stm32 с чего начать изучение...

Сообщение VladislavS »

[uquote="afz",url="/forum/viewtopic.php?p=3786103#p3786103"]А вот напрягаться, чтобы сочинить ТАКОЕ - это очень сильно на любителя...[/uquote]Знаешь какой кайф испытываешь когда оно начинает работать так как задумано. Я когда впервые с помощью класса ConfigList сконфигурировал все ноги чипа разом практически в литературном стиле описав их режимы - прыгал до потолка. При том что результат получился эффективнее, чем любой из вас напишет "на регистрах" и уж тем более на макросах.
Аватара пользователя
afz
Опытный кот
Сообщения: 744
Зарегистрирован: Сб дек 22, 2012 08:17:42
Откуда: Караганда, Казахстан

Re: Stm32 с чего начать изучение...

Сообщение afz »

Ну я и говорю: на любителя. Я, помню, году, так, в 85-м тоже сильно радовался, когда заработала моя конструкция из двух или трех десятков плат с тремя-четырьмя десятками микросхем серии 155 на каждой, и все это под управлением моей же программы на Электронике-60. На асме, если что... Я все это сочинял, а коллектив лаборатории, 7-8 человек, воплощал мои фантазии в жизнь. Полгода клепали, неделю я отлаживал весь комплекс, и вот оно!!! Задача, правда, оказалась фигнёй, тем не менее, я ее решил. И мой шеф даже начал сочинять себе десерт. Я был следующим в очереди на десерт, но тут перестройка, кооперативы, да ну ее на фиг эту диссертацию, тем оно и кончилось...
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
Аватара пользователя
astrahard
Это не хвост, это антенна
Сообщения: 1405
Зарегистрирован: Чт фев 19, 2015 12:41:04

Re: Stm32 с чего начать изучение...

Сообщение astrahard »

Беспредметно про кайф против кайф. Вот пример, когда чел. измерил быстродействие разных кристаллов на практической задаче, очень редкий случай http://www.count-zero.ru/2018/stm32_start/. Текст длинный, ищите сразу по строке Простой бенчмарк на операции деления

Добавлено after 16 minutes 12 seconds:
P.S. А вот выдержка из https://ru.wikibooks.org "C++: В C++ позднее связывание доступно только для виртуальных методов (вызов которых становится немного медленнее). Метод, объявленный в базовом классе как виртуальный (virtual), поддерживает это свойство (но только если описания методов совпадают). Обычные, не виртуальные методы не позволяют позднее связывание, как и OP."

Я в шоке, по сравнению с http://www.count-zero.ru где все выражено циферками и эти циферки показывают разницу на порядок тут в https://ru.wikibooks.org/wiki/Объектно- ... выполнения допускают выражения "немного медленнее" НЕ ВЕРЮ. Кроме того того НЕ ВЕРЮ что "Обычные, не виртуальные методы не позволяют позднее связывание" по моему позднее связывание наступает помимо воли кодера во многих случаях.
"Every profession is a conspiracy against the uninitiated" (B. Shaw)
"A textbook can be defined as a book unsuitable for reading" (B. Shaw)
Tautology is humor in "this" place (Vigo Carpathian)
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: Stm32 с чего начать изучение...

Сообщение VladislavS »

Верю, не верю - устроили тут ромашку. Помимо воли программиста ничего не происходит, что в программе написал, то и будет. Опытный программист знает во что скомпилируется та или иная языковая конструкция. Но тут знания нужны, а не религия. Я заметил, что С++ эмбеддеры обычно сильно лучше разбираются в железе - багаж знаний больше.
Аватара пользователя
astrahard
Это не хвост, это антенна
Сообщения: 1405
Зарегистрирован: Чт фев 19, 2015 12:41:04

Re: Stm32 с чего начать изучение...

Сообщение astrahard »

А я не видел строки типа "Виртуальных методов в HAL нету, зуб даю.".
"Every profession is a conspiracy against the uninitiated" (B. Shaw)
"A textbook can be defined as a book unsuitable for reading" (B. Shaw)
Tautology is humor in "this" place (Vigo Carpathian)
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: Stm32 с чего начать изучение...

Сообщение VladislavS »

HAL вроде на С написан? Так что, я бы сказал, что там не только виртуальных, но и вообще никаких методов нет.
Аватара пользователя
astrahard
Это не хвост, это антенна
Сообщения: 1405
Зарегистрирован: Чт фев 19, 2015 12:41:04

Re: Stm32 с чего начать изучение...

Сообщение astrahard »

Понятно. Это хорошо. Но вопрос? "Метод charReceivedCB() готовит HAL к приему следующего байта." Автор которого я цитирую неуч, и charReceivedCB() процедура? Это дань моде, использовать слово МЕТОД, когда речь идет о процедуре?
"Every profession is a conspiracy against the uninitiated" (B. Shaw)
"A textbook can be defined as a book unsuitable for reading" (B. Shaw)
Tautology is humor in "this" place (Vigo Carpathian)
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: Stm32 с чего начать изучение...

Сообщение VladislavS »

Нет в С ни методов, ни процедур. Из трубопоскакаля нахватались? Есть только функции.
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

Re: Stm32 с чего начать изучение...

Сообщение Eddy_Em »

В C методов нет, а в кале — есть! ☺
// хехе: у меня теперь USB CDC и под андроидом работает... Тоже понял, что надо не в одну кучу все совать, а разбить на части: отдельно общее, отдельно классовое и т.п.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Stm32 с чего начать изучение...

Сообщение ARV »

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

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

Re: Stm32 с чего начать изучение...

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

Нужно было написать на какую тему посоветоваться.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Stm32 с чего начать изучение...

Сообщение ARV »

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

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

Re: Stm32 с чего начать изучение...

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

Много способов есть. Сокеты, именованные каналы (Pipe), общая память, передача сообщений через окна и т. д.
Аватара пользователя
astrahard
Это не хвост, это антенна
Сообщения: 1405
Зарегистрирован: Чт фев 19, 2015 12:41:04

Re: Stm32 с чего начать изучение...

Сообщение astrahard »

Dynamic Data Exchange (DDE) — механизм взаимодействия приложений в операционных системах Microsoft Windows и OS/2. Это?, если Вы не озабочены по самое нехочу, безопасностью. Даже OPC (OLE for Process Control) сервера прибегают к такому, например взаимодействуя с Excel таблицами. Просто, приходилось OPC и Excel дружить.
"Every profession is a conspiracy against the uninitiated" (B. Shaw)
"A textbook can be defined as a book unsuitable for reading" (B. Shaw)
Tautology is humor in "this" place (Vigo Carpathian)
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Stm32 с чего начать изучение...

Сообщение ARV »

мне нужно асинхронно передавать массивы символов (строки) различной длины, причем стандартный "строковый" pchar не подходит, т.к. среди передаваемых символов 0x00 - нормальное явление. иначе говоря - передача просто блоков абстрактных байтов. главное - по возможности с минимумом накладных затрат и асинхронно, т.е. чтобы передающее приложение не ждало, пока принимающее примет и обработает. принимающего, кстати, может вообще не быть... DDE - шибко медленно, и синхронно (если я не ошибаюсь - последний раз DDE использовал лет 25 назад, еще в Win3.11)
но в данной теме все это оффтоп - если готовы помочь конкретными действиями - пишите в ЛС.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Ответить

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