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

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

[uquote="afz",url="/forum/viewtopic.php?p=3458406#p3458406"]Вспомните, когда вы последний раз манипулировали битами периферии на писюке. А? То-то же... ПОКА.[/uquote]
на ПК C++, C#

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

            try
            {
                serialPort.Open();
            }
            catch (Exception)
            {
                textBox.Text = "Ошибка открытия порта";
            }
вот и надо (imho) было и делать куб на C++ как ардуино, а внутри понятные классы на регистрах...
Реклама
Мудрый кот
Сообщения: 1842
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="ВячеславX",url="/forum/viewtopic.php?p=3458388#p3458388"]Я так понял, вы работаете с ассемблерными вставками. А можно узнать в какой программе? Для контроллеров STM32.[/uquote]
Да, иногда использую ассемблер. Только не вставки, а функции в .asm-файле. В последнее время - IAR.

Добавлено after 9 minutes 52 seconds:
[uquote="afz",url="/forum/viewtopic.php?p=3458406#p3458406"]Периферия уже достигла того уровня сложности, когда хрен ее удержишь в памяти, так, что какой-то уровень абстракции над ней, скрывающий ее детали, рано или поздно, станет необходимостью.[/uquote]
Наверное всё зависит от головы. Удерживаю в памяти без проблем. Даже на МК, где периферия в разы сложнее чем на STM32. А про STM32, с его примитивной периферией, даже разговора нет. А "скрывать детали периферии" - это Вы правильно заметили. Только скрывать эти детали должна не сторонняя либа, в которой ничего не понимаете как внутри работает, а свой слой абстрагирования от периферии, который сами написали и знаете досконально.
Реклама
Нашел транзистор. Понюхал.
Сообщения: 191
Зарегистрирован: Вт июн 05, 2018 00:18:01

Сообщение pvit »

[uquote="jcxz",url="/forum/viewtopic.php?p=3458507#p3458507"]В последнее время - IAR.[/uquote]
Можете рассказать о его преимуществах перед иде с gcc? Серьезно. Допустим, устраивает работа только под вендой и вопрос цены оставим в стороне. Какие там есть особые уникальные фичи, полезные при разработке?

Я сходу могу назвать только поддержку кучи всяких странных ядер (надо это или нет - каждый решит сам). А что-то еще есть?
[uquote="jcxz",url="/forum/viewtopic.php?p=3458507#p3458507"]А "скрывать детали периферии" - это Вы правильно заметили. Только скрывать эти детали должна не сторонняя либа, в которой ничего не понимаете как внутри работает, а свой слой абстрагирования от периферии, который сами написали и знаете досконально.[/uquote]
Не вижу проблем с использованием сторонних библиотек, если в них можно посмотреть код и качество для конкретных задач устраивает. Свои либы это конечно круто, но напряжно в долгосрочной перспективе когда проектов много и разработчики разные. В том же Rust-e HAL очень приличный.
Мудрый кот
Сообщения: 1842
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="pvit",url="/forum/viewtopic.php?p=3458656#p3458656"]Можете рассказать о его преимуществах перед иде с gcc?[/uquote]
Я разве Вам запрещал использовать gcc? Пользуйте - дело Ваше. А мне удобнее IAR. Пробовал я gcc - просто ужас как неудобно.

[uquote="pvit",url="/forum/viewtopic.php?p=3458656#p3458656"]Свои либы это конечно круто, но напряжно в долгосрочной перспективе когда проектов много и разработчики разные.[/uquote]
Своя либа - как раз удобнее в случае когда проектов много да ещё на разных МК. Потому что API своей я могу сделать в едином стиле для разных МК. И не становиться заложником всяких кубов и их баго-пейсателей. Для разных МК делаю макросы и функции работы с периферией в едином стиле и потом уже не задумываюсь о работе нижнего уровня.
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Сообщения: 6457
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

[uquote="pvit",url="/forum/viewtopic.php?p=3458656#p3458656"]Можете рассказать о его преимуществах перед иде с gcc?[/uquote]
У ИАРа весьма неплохой оптимизирующий компилятор. Если не самый лучший, то в верхней части списка лучших точно. В большинстве случаев GCC он переплевывает.
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18790
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

jcxz писал(а):Потому что API своей я могу сделать в едином стиле для разных МК. И не становиться заложником всяких кубов и их баго-пейсателей.
осмелюсь возразить теми же словами, что ранее возражали мне: смысл оформлять код как-то "прилично" исключительно в том, чтобы другим программистам было удобно с ним работать. т.е. как бы не на свои личные интересы ориентироваться, а как бы на общественные.
в связи с чем писание под себя всех либ, в то время, как остальные пользуются чем-то "стандартным", отвращает от изучения вашего кода других.
имхо, лучше не оптимально, зато стандартно и единообразно. как в армии: хоть безобразно, зато единообразно.
например, libc - то ли оптимально оно там реализовано, то ли нет - я не знаю (и знать не хочу, пока не возникнут какие-то проблемы), но уверен на 100%, что использование в моём коде любой функции из этой библиотеки будет без проблем понято всяким, кто имеет понятие о Си. а вот если я изобрету свой собственный arvprintf со своими супер-пупер-оптимальными форматами и т.п. - это вряд ли кого порадует.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Нашел транзистор. Понюхал.
Сообщения: 191
Зарегистрирован: Вт июн 05, 2018 00:18:01

Сообщение pvit »

[uquote="jcxz",url="/forum/viewtopic.php?p=3458662#p3458662"]Я разве Вам запрещал использовать gcc? Пользуйте - дело Ваше. А мне удобнее IAR. Пробовал я gcc - просто ужас как неудобно.[/uquote]
Так я без подколов спрашивал. Чем вам удобнее IAR. Интересен ваш опыт.
[uquote="jcxz",url="/forum/viewtopic.php?p=3458662#p3458662"]Своя либа - как раз удобнее в случае когда проектов много да ещё на разных МК. Потому что API своей я могу сделать в едином стиле для разных МК. И не становиться заложником всяких кубов и их баго-пейсателей.[/uquote]
Вопрос филосовский. Пока вы один и все держите в голове - возможно так проще. Когда приходят сторонние разработчики - надо еще тащить полноценную документацию и сопровождение, это немало времени забирает. Куб не очень хороший пример для подражания. Если библиотеку делали другие люди - это не значит автоматически, что они рукожопы со всеми вытекающими. Посмотрите HAL в rust-e. Еще есть libopencm3. Ну и RTOS-ы вы ж наверное не сами выписываете, хотя наверное могли бы сделать хорошо если бы взялись.

У нас наверное немного разные условия и подходы (и это не значит что мой был бы лучшие для ваших задач). Если меня что-то не устраивает в чужой библиотеке, я смотрю что дешевле - лепить свою или заслать пулл реквест. Обычно стараюсь обойтись пулл реквестами. Например, недавно засылал в libfixmath, чтобы в platformio инсталлировалась.
Друг Кота
Аватара пользователя
Сообщения: 3386
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

jcxz писал(а):Пробовал я gcc - просто ужас как неудобно.
Особенности синтаксиса не понравились или не нашли подходящую IDE?
Мудрый кот
Сообщения: 1842
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="ARV",url="/forum/viewtopic.php?p=3458674#p3458674"]смысл оформлять код как-то "прилично" исключительно в том, чтобы другим программистам было удобно с ним работать. т.е. как бы не на свои личные интересы ориентироваться, а как бы на общественные.
в связи с чем писание под себя всех либ, в то время, как остальные пользуются чем-то "стандартным", отвращает от изучения вашего кода других.
имхо, лучше не оптимально, зато стандартно и единообразно.[/uquote]
Когда я работаю в команде над проектом, то функциональные части у нас разделяются между разными программистами. И никто чужой код не изучает - какой смысл? Каждый делает свою часть, свою работу, а не изучает чужую. А между этими частями делается некий интерфейс взаимодействия, удобный обеим сторонам.
И часто у меня было несколько текущих проектов на разных МК одновременно. Но во всех этих проектах моя часть была одна и та же - например написание драйверов для некоего набора периферии. Вот API этих драйверов я старался сделать единообразным на всех проектах, чтобы программистам пишущим более высокий уровень, было удобно работать с моим API единообразно во всех проектах. Ну и для себя внутренние функции/структуры/макросы я тоже старался делать единообразными насколько можно, потому что приходилось часто переключаться между текущими проектами.
И никаких "стандартов" между разными производителями МК не существует - каждый делает по своему. Да и смысла нет никакого пользоваться чужими, малоподходящими к твоему случаю библиотеками или ещё чем-то, если сам умеешь читать мануалы и понимать их. Что изучение чужих API к чужим либам, что изучение мануалов к периферии МК - для всего нужно время. Тогда какой смысл изучать эти прослойки нафиг не нужные?
Они нужны только тем, кто сам не в состоянии осилить мануал и построить по нему драйвер. Я с этим проблем не испытываю.
Вы же не предлагаете всем носить очки если некоторые люди имеют плохое зрение. Зачем очки тем у кого зрение нормальное? Затем чтобы все были "стандартные", с очками? :)))
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18790
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

jcxz писал(а):Зачем очки тем у кого зрение нормальное? Затем чтобы все были "стандартные", с очками?
этого я не предлагаю. однако каждый, у кого зрение плохое, все-таки покупает стандартные очки или стандартные же линзы, а не изобретает для себя какой-то уникальный оптический прибор.

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

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

Мой уютный бложик... заходите!
Контактная информация:
Мудрый кот
Сообщения: 1842
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="pvit",url="/forum/viewtopic.php?p=3458675#p3458675"]Так я без подколов спрашивал. Чем вам удобнее IAR. Интересен ваш опыт.[/uquote]
Уже точно не вспомню всех недостатков. Помню что при каждом запуске на отладку, создавался какой-то .tmp-файл (новый в TMP-директории), который потом запускался. А так как файл новый - кажддый раз файрволл ругался на него и требовал подтверждения запуска. И никак не избавиться от этого было.
Потом с проектами там ужас как неудобно: забэкапить проект, или скопировать его, или добавить в него что-то (файл или ещё) и т.п. - надо было какие-то импорты-экспорты делать. Когда в IAR-е это всё элементарно - кинул файл в папку добавил/убрал в проект парой кликов и всё.
Ну и ещё куча подобных мелочей, делающих работу неудобной.

[uquote="pvit",url="/forum/viewtopic.php?p=3458675#p3458675"]Пока вы один и все держите в голове - возможно так проще. Когда приходят сторонние разработчики - надо еще тащить полноценную документацию и сопровождение, это немало времени забирает.[/uquote]
Вы мне об этом не рассказывайте - я почти 20 лет в профессии. И чаще работал в командах над проектами, реже - как одиночка. И все они были сложные и объёмные. А документации - нам хватает комментариев в коде да личных пояснений.

[uquote="pvit",url="/forum/viewtopic.php?p=3458675#p3458675"]Куб не очень хороший пример для подражания. Если библиотеку делали другие люди - это не значит автоматически, что они рукожопы со всеми вытекающими.[/uquote]
Даже если они не рукожопы, то:
а) все ошибаются, значит и ошибки в кубе неизбежны. Мне хватает и багов в самих МК - не раз на них натыкался, а Вы предлагает сюда ещё и баги в библиотеках добавить??? :shock: А там багов будет больше, так как тестируются они наверняка хуже чем железо.
б) Зачем??? Зачем мне чья-то прокладка, написанная кем-то для чего-то если я и сам умею писать? Прокладка эта не учитывает особенностей моего текущего проекта, так как периферия предлагает заведомо большую гибкость в использовании, а готовый код - он использует некое множество из возможностей периферии. Ограниченное множество. Значит - заведомо будет хуже для моего конкретного применения, чем если я сам напишу. Какой смысл-то?
Скажете: типа "быстрее стартовать"? А почему быстрее? Эту прокладку что - не нужно изучать? Тогда зачем изучать её, а не сразу периферию?

[uquote="pvit",url="/forum/viewtopic.php?p=3458675#p3458675"]Ну и RTOS-ы вы ж наверное не сами выписываете, хотя наверное могли бы сделать хорошо если бы взялись.[/uquote]
Не сам. Доработал под себя имеющееся.
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Сообщение ПростоНуб »

[uquote="jcxz",url="/forum/viewtopic.php?p=3458684#p3458684"]функциональные части у нас разделяются между разными программистами. И никто чужой код не изучает[/uquote]
А у Вас что-ли программисты никогда не болеют, не увольняются, не уезжают в отпуск по путевке купленной полгода назад посреди проекта?

[uquote="jcxz",url="/forum/viewtopic.php?p=3458684#p3458684"]Что изучение чужих API к чужим либам, что изучение мануалов к периферии МК - для всего нужно время. Тогда какой смысл изучать эти прослойки нафиг не нужные?[/uquote]
Потому что, для примера, изучить API тригонометрических функций libfixmath можно за 10 минут, а писать свои такие же функции будете неделю. С API FreeMODBUS можно разобраться за полчаса, а вот писать свою реализацию MODBUS с нуля будете месяц.
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3458704#p3458704"]неделю. С API FreeMODBUS можно разобраться за полчаса, а вот писать свою реализацию MODBUS с нуля будете месяц.[/uquote]

Ситуация - в портах фримодбас RTU реализован на таймерах, в F0 сие имеет аппаратную поддержку + прикручивается DMA.
Предлагаете юзать уже кое-как сляпанное ?
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2411
Зарегистрирован: Ср фев 23, 2011 12:12:31

Сообщение AndTer »

[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3458704#p3458704"]изучить API тригонометрических функций libfixmath можно за 10 минут, а писать свои такие же функции будете неделю.
С API FreeMODBUS можно разобраться за полчаса, а вот писать свою реализацию MODBUS с нуля будете месяц.[/uquote]
Они себе могут это позволить. При этом почему то навязывают это мнение всем подряд как единственно верное.
Глупый не задает вопросы. Глупый и так все знает.
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Сообщение ПростоНуб »

[uquote="dosikus",url="/forum/viewtopic.php?p=3458712#p3458712"]Предлагаете юзать уже кое-как сляпанное ?[/uquote]
Если какие-то принципы мешают внести свои модификации в библиотеку с открытым исходным кодом или воспользоваться уже готовым (в гугле ищем строку "freemodbus stm32"), то "юзайте кое-как сляпанное" ;)
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

ПростоНуб, мне не надо объяснять, я давно прикрутил.
Объясняйте это AndTer , он так и будет юзать сляпанное за него даже не посмотрев в RM.
И вопить на всех углах что калокуб истина в первой инстанции...
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18790
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

если нет разницы - зачем что-то переделывать?

времена, когда приходилось туже затягивать пояс, миновали - сами же мне рассказывали. на таймерах какой-то там ModBus реализован, или на DMA, или вообще на "дрыгоноге" - какая разница, если в конечном итоге все отлично работает? ресурсов море разливное, памяти после самого позорного индусского кода остается тонна - к чему заниматься какими-то изысками?!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Нашел транзистор. Понюхал.
Сообщения: 191
Зарегистрирован: Вт июн 05, 2018 00:18:01

Сообщение pvit »

[uquote="jcxz",url="/forum/viewtopic.php?p=3458696#p3458696"]Ну и ещё куча подобных мелочей, делающих работу неудобной.[/uquote]
Хм. Под PIO не замечал таких проблем. Возможно, починили уже все. Но в любом случае спасибо за инфу, я вас услышал.

[uquote="jcxz",url="/forum/viewtopic.php?p=3458696#p3458696"]Вы мне об этом не рассказывайте - я почти 20 лет в профессии. И чаще работал в командах над проектами, реже - как одиночка. И все они были сложные и объёмные. А документации - нам хватает комментариев в коде да личных пояснений.[/uquote]
Если я правильно понял, у вас команды закрытого типа, когда разработчики фиксированы и есть возможность по-быстрому перекидываться вопросами.

В опенсорсе не так. Разработчик часто понятие "плавающее". Про русский лучше сразу забыть, а на английском все пишут как сложится. Каждого учить новой особой библиотеке (пусть даже хорошей) - сил и времени не хватит. Иногда конечно выбора нет, но сходу лучше на такое не закладываться.

[uquote="jcxz",url="/forum/viewtopic.php?p=3458696#p3458696"]а) все ошибаются, значит и ошибки в кубе неизбежны. Мне хватает и багов в самих МК - не раз на них натыкался, а Вы предлагает сюда ещё и баги в библиотеках добавить??? :shock: А там багов будет больше, так как тестируются они наверняка хуже чем железо.[/uquote]
Баги фиксят. Когда библиотека популярная - откликов намного больше, чем может сделать одна команда. Тестируют по-разному. Где-то плохо где-то хорошо. Ну дык ясен пень, выбирать надо, а не брать первое попавшееся.

[uquote="jcxz",url="/forum/viewtopic.php?p=3458696#p3458696"]б) Зачем??? Зачем мне чья-то прокладка, написанная кем-то для чего-то если я и сам умею писать? Прокладка эта не учитывает особенностей моего текущего проекта, так как периферия предлагает заведомо большую гибкость в использовании, а готовый код - он использует некое множество из возможностей периферии. Ограниченное множество. Значит - заведомо будет хуже для моего конкретного применения, чем если я сам напишу. Какой смысл-то?[/uquote]
Смысл в том, что в сутках только 24 часа :). Пока вы один и все успеваете - гуд (или можете по-быстрому договоритсья с парой коллег). Когда не один, и проектов вагон - приходится думать, как делать чтобы все не лочилось на одном человеке (пусть даже офигенно умном).

Опять-таки, если проект популярный и авторы удерживаются от впадания во фреймворки, апи со временем получается довольно гибкое. Ну и как уже говорил, я в каждом конкретном случае оцениваю, что дешевле в краткосрочной и долгосрочной перспективе - заюзать чужое или лисапедить свое.
[uquote="jcxz",url="/forum/viewtopic.php?p=3458696#p3458696"]Скажете: типа "быстрее стартовать"? А почему быстрее? Эту прокладку что - не нужно изучать? Тогда зачем изучать её, а не сразу периферию?[/uquote]
Потому что я могу не тратить свое личное время на объяснения каждому, а просто ткнуть пальцем "иди туда и почитай документацию". И можно нагуглить готовые решения для типовых задач/проблем. Эффективно переиспользуется чужой опыт.

Я это все говорю не в пику вам, а просто объясняю свою ситуацию. Возможно в вашем случае это и не требуется.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2411
Зарегистрирован: Ср фев 23, 2011 12:12:31

Сообщение AndTer »

Опять фантазии. rm я читал и иногда читаю, когда возникает такая потребность. Я нигде не писал что куб истина. Я писал что он облегчает старт, и что для большинства его достаточно и в дальнейшем. А вопишь ты, и весь твой мега опыт сводится к одному слову "калокуб". Надоел уже, право слово.
Глупый не задает вопросы. Глупый и так все знает.
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

[uquote="ARV",url="/forum/viewtopic.php?p=3458724#p3458724"]если нет разницы - зачем что-то переделывать?

времена, когда приходилось туже затягивать пояс, миновали - сами же мне рассказывали. на таймерах какой-то там ModBus реализован, или на DMA, или вообще на "дрыгоноге" - какая разница, если в конечном итоге все отлично работает? ресурсов море разливное, памяти после самого позорного индусского кода остается тонна - к чему заниматься какими-то изысками?![/uquote]


ВотЪ именно -если не понимаешь в чем разница, зачем обсуждать то в чем нибумбум?
Адепты калокуба и г.либ просто не в состоянии осознать работу периферии, за них "ужевсесделано".
Последний раз редактировалось dosikus Пн сен 17, 2018 13:53:17, всего редактировалось 1 раз.
Ответить

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