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

Кто любит RISC в жизни, заходим, не стесняемся.
PombI4
Открыл глаза
Сообщения: 79
Зарегистрирован: Пн дек 19, 2016 10:20:28

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

Сообщение PombI4 »

Недавно начал изучать ARM, в связи с этим возник вопрос - совместимы ли средства отладки одного производителя с чипами другого?
К примеру, у меня имеется в наличии программатор/дебагер Atmel ICE, который позволяет работать с ARM чипами Atmel (Ну, теперь уже Microchip)... А подойдет ли он для ARM чипов скажем STM или NXP?
Я как бы хочу все унифицировать и по возможности уйти от ПО и средств разработки производителей и использовать их только как вспомогательные средства. В данный момент использую GNU Toolchain для ПО. А вот как быть с железом? Не покупать же под каждого производителя свой программатор/отладчик... Или придется?
Реклама
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

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

Сообщение Reflector »

[uquote="PombI4",url="/forum/viewtopic.php?p=3782198#p3782198"]Недавно начал изучать ARM, в связи с этим возник вопрос - совместимы ли средства отладки одного производителя с чипами другого?
К примеру, у меня имеется в наличии программатор/дебагер Atmel ICE, который позволяет работать с ARM чипами Atmel (Ну, теперь уже Microchip)... А подойдет ли он для ARM чипов скажем STM или NXP?[/uquote]
Встречный вопрос: зачем начинающему сразу армы от Atmel, STM и NXP? Тем более если у тебя уже есть AVR и STM8, причем этот STM8 подключен к полтора баксовому ST-Link(что видно на скрине в твоем старом сообщении) поддерживающем и STM32... А вообще даже этот ST-Link поддерживается не во всех средах разработки под STM32, так что хотя аппаратно отладчики от Atmel должны уметь работать с любыми кортексами, но в большинстве сред, если не во всех, они все равно работать не будут.
Реклама
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

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

PombI4 писал(а):Не покупать же под каждого производителя свой программатор/отладчик...
У вас не найдется 100 рублей на ST-Link? https://aliexpress.ru/wholesale?SearchT ... =price_asc
PombI4 писал(а):В данный момент использую GNU Toolchain для ПО.
Без IDE? Чем шьете и отлаживаете? Или только собираетесь? На хабре недавно вышла статья, посмотрите если хотите. https://habr.com/ru/post/485514/
В ней про прошиватель и отладчик. Но нужен ST-Link.
PombI4
Открыл глаза
Сообщения: 79
Зарегистрирован: Пн дек 19, 2016 10:20:28

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

Сообщение PombI4 »

Я не писал, что я начинающий. Я написал, что начал изучать ARM. Это как бы слегка разные вещи :)...
Давно на работе кодил под Freescale'овский проц, под Freescale'овским же IDE. Но то было давно.
Дома накопилось много чего от AVRок, в т.ч. тот же Atmel Ice. Но Атмел стал негуманен по цене.
Поэтому решено было переключить внимание на STM. В т.ч. и на ARM. Соответственно есть кое что и для него. Но поддерживать знания в актуальном состоянии для нескольких разных IDEшек, это накладно. Хочется золотой середины и универсальности.
То же самое и с железом.
Вопрос не в 100 рублях, а в обилии платохлама на столе и в шкафу. Зачем использовать разные инструменты, если можно пользоваться одним.
В качестве IDE использую Eclipse. Всякие конфигураторы/профилировщики от производителей по возможности. Но есть желание минимизировать их.
В качестве доступного железа экспериментирую пока на Raspberry без ОС. В шкафу лежит Arduino Due и STM Nucleo F413ZH...
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

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

PombI4 писал(а):В качестве IDE использую Eclipse.
Наверное уже привыкли к неспешности IDE?
Реклама
Аватара пользователя
daaar
Держит паяльник хвостом
Сообщения: 920
Зарегистрирован: Пн июн 13, 2016 19:37:24
Откуда: Perm
Контактная информация:

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

Сообщение daaar »

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

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

Сообщение Eddy_Em »

daaar, прошить его st-link'ом при помощи утилиты st-flash точно не удастся без патча утилиты. Я уже пытался и с GD32 и с CS32 (подсунул, зараза, китаец в "синей таблетке" вместо STM32 эту дрянь). В итоге плюнул, выпаял и выкинул гадость, а вместо нее впаял STM32.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

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

Сообщение СКАЗОЧНИК »

Там вроде какие-то резисторы со 100 кОм меняют на поменьше и все начинает прошиваться... ? Где-то читал про это.
Станислав
Аватара пользователя
Ivanoff-iv
Друг Кота
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

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

Сообщение Ivanoff-iv »

я столкнулся (c CS32) только с тем что памяти в нём ровно столько, сколько заявлено (а не в 2 раза больше как у стм32ф103с8т6) хотел в паяльник вставить его - код считанный с STM в CS не влез... (шил штатным стлинком) прошиться прошился, но верификация не прошла (выше заявленной памяти закономерно читаются нули).
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Аватара пользователя
daaar
Держит паяльник хвостом
Сообщения: 920
Зарегистрирован: Пн июн 13, 2016 19:37:24
Откуда: Perm
Контактная информация:

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

Сообщение daaar »

То есть танцы с бубном не обязательны?
a797945
Мучитель микросхем
Сообщения: 446
Зарегистрирован: Вс ноя 01, 2015 09:15:16
Откуда: 69.Ржев

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

Сообщение a797945 »

STM32F103 вопросик по таймеру TIM1
может кто объяснить такой момент с таймером TIM1 - RM0008 стр.328 Figure 95
сигнал на линиях OC1,OC2,OC3 показан пачками - откуда берется эта "нарезка", начало и завершение импульса(пачки) - вроде понятно от куда, но почему импульс "нарезан", почему не такой же как OC1N,OC2N,OC3N ?

поспешил с вопросом
прочитал свой же вопрос - и кажется сообразил: "нарезается" содержимым ARR и CCR1 таймера TIM1.
ну вот и зацепочка, голову ломаю - как выводить определенное кол-во импульсов (больше 255).
Вложения
F95.jpg
(85.78 КБ) 193 скачивания
Аватара пользователя
Ярослав555
Поставщик валерьянки для Кота
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

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

Сообщение Ярослав555 »

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

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

Сообщение WiseLord »

А в хидере с определением cpp-шного init-а, который подключается в main.c, есть extern "C" сотоварищи?
Аватара пользователя
Ярослав555
Поставщик валерьянки для Кота
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

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

Сообщение Ярослав555 »

у срр-шного файла есть hpp-шный файл, где объявления функций обрамлены extern "C". этот хидер уже подключен в .с файл.
я этот прием линковки и не применял никогда: видел, но иару было фиолетово - он не смотрит на расширение файла и компилит все в С++, а куб себе спокойно работает с .с файлами. А тут с эклипсом все по взрослому. Я в начале и не обрамлял ничего и у меня не хотело собираться. Потом вспомнил про эту штуку, по шаблону добавил - собралось, думал все ок, но не заработало. Вчера вечером уже начал изучать вопрос, но после командировки глаза слипались. Если дело определенно в этой стороне, ну ок тогда - подтяну теорию, глядишь разберусь.
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

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

Сообщение VladislavS »

Не страдай ерундой. Переводи весь проект в .сpp. С++ компилятор чисто С-ный код скомпилирует в лучшем виде. Стартап можешь в .с оставить, тогда перед обработчиками прерываний extern "C" поставишь да и всё..

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

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

Сообщение afz »

А со стеком все в порядке? А некоторые системы под стек дефолтно дают мало места...
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
Аватара пользователя
Ярослав555
Поставщик валерьянки для Кота
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

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

Сообщение Ярослав555 »

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

Добавлено after 4 hours 41 minute 53 seconds:
ну я хз котаны - вместо того чтобы делать новый проект из кубовского файла, я создал чистый прямо в куб-идэе и руками перезабил всю инфу. сгенерил код, перенес все те же юзер файлы, скопипастил куски юзер кода и оно не падает.
пока что спортивного интереса копаться в чем же разница между проектами нет - может косяк в их коде, может у меня что-то было. Если повторяться не будет то и хрен с ним, а если будет то потрачу денек.
Аватара пользователя
afz
Опытный кот
Сообщения: 744
Зарегистрирован: Сб дек 22, 2012 08:17:42
Откуда: Караганда, Казахстан

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

Сообщение afz »

Ярослав555 писал(а):сгенерил код, перенес все те же юзер файлы, скопипастил куски юзер кода
Я в кубическом main() держу ровно две строчки (чтобы меньше копипастить).Между /* USER CODE BEGIN Init */ и /* USER CODE END Init */ вписываю что-то вроде My_Init(); и, между /* USER CODE BEGIN 2 */ и /* USER CODE END 2 */ - My_main(); причем, не уведомляя кубики, что из этого My_main() я не вернусь.

А, нет, три: еще между /* USER CODE BEGIN Includes */ и /* USER CODE END Includes */ ставлю #include "My_Header.h", в котором, в частности, описаны и My_Init(); и My_main();

И все. сгенерив новый кубический проект, по-простому, добавляю эти три строчки, и моя разработка подключена. А кубики - они такие. Однажды, после очередного обновления, посыпались какие-то ошибки. Перегенерил проект - все ОК. Оказалось, новый CubeMX криво воспринимал проект из-под старого. Еще что-то было... Да и перенести проект на новый камень - это самое простое решение - генеришь его заново, добавляешь эти самые 3 строчки, и вперед! Да, пару раз понадобилось что-то дописать куда-то в прерывающие программы, тоже вызовы своих программ. Чаще всего у кубических программ обслуживания прерываний заявлен коллбэк и его хватает, но где-то его не оказалось.

Добавлено after 22 minutes 14 seconds:
Да, и где-нибудь на видном месте (например, в начале My_Header.h), надо указать комментарием, в какие кубические файлы надо вписывать свои вызовы.
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

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

Сообщение WiseLord »

А вся инициализация периферии, обработчики прерываний - тоже свои, или сгенерированные?

P.S. А, сразу не увидел оговорку про прерывания. Точек связи сгенерированного кода со своим всё же больше трёх.
Аватара пользователя
Ярослав555
Поставщик валерьянки для Кота
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

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

Сообщение Ярослав555 »

[uquote="WiseLord",url="/forum/viewtopic.php?p=3785755#p3785755"]Точек связи сгенерированного кода со своим всё же больше трёх.[/uquote]
Почему? Колбеки редефайнятся в своем файле и возможно даже править не приходится.
По поводу мейна - у меня как-то сложилось что в мейне только начальная инициализация и запуск системного таймера. Дальше все остальное происходит через вызовы этого системного таймера. Мои объекты имеют функцию poll - в ней находится большой свич с описанием действий и переходов, рискну назвать это машиной состояний. Иногда даже две таких функций - быстрая и легкая (например простое сравнение) и медленная (математически нагруженная). Такая архитектура позволяет асинхронную работу частей программы, никто никого не ждет - есть состояние значит переход на новое состояние, нет - ретурн. Разные обьекты ставятся на разные таски - кто-то на 1 мС, кто-то на 100 мС.
Максимум что попадает в цикл мейна - мигание светодиодом, причем в последнее время я туда пакую софтверный шим для этого светодиода. По плавности мигания можно увидеть насколько ровно идет программа. Главный цикл имеет наинизший приоритет и если ему совсем времени не остается, значит и какой-то таск может захлебнуться. Для моих задач хватает, не атомные реакторы строю.
Ответить

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