Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

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

Чт янв 30, 2020 11:50:34

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

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

Чт янв 30, 2020 12:23:59

Недавно начал изучать ARM, в связи с этим возник вопрос - совместимы ли средства отладки одного производителя с чипами другого?
К примеру, у меня имеется в наличии программатор/дебагер Atmel ICE, который позволяет работать с ARM чипами Atmel (Ну, теперь уже Microchip)... А подойдет ли он для ARM чипов скажем STM или NXP?

Встречный вопрос: зачем начинающему сразу армы от Atmel, STM и NXP? Тем более если у тебя уже есть AVR и STM8, причем этот STM8 подключен к полтора баксовому ST-Link(что видно на скрине в твоем старом сообщении) поддерживающем и STM32... А вообще даже этот ST-Link поддерживается не во всех средах разработки под STM32, так что хотя аппаратно отладчики от Atmel должны уметь работать с любыми кортексами, но в большинстве сред, если не во всех, они все равно работать не будут.

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

Чт янв 30, 2020 13:45:30

PombI4 писал(а):Не покупать же под каждого производителя свой программатор/отладчик...
У вас не найдется 100 рублей на ST-Link? https://aliexpress.ru/wholesale?SearchT ... =price_asc

PombI4 писал(а):В данный момент использую GNU Toolchain для ПО.
Без IDE? Чем шьете и отлаживаете? Или только собираетесь? На хабре недавно вышла статья, посмотрите если хотите. https://habr.com/ru/post/485514/
В ней про прошиватель и отладчик. Но нужен ST-Link.

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

Чт янв 30, 2020 14:26:39

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

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

Чт янв 30, 2020 15:36:03

PombI4 писал(а):В качестве IDE использую Eclipse.
Наверное уже привыкли к неспешности IDE?

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

Чт янв 30, 2020 16:05:03

Есть микроконтроллер gd32f130c8t6, как понял под них можно писать в любой среде для stm32. Проект конфигурирую в кубе обычно. Как быть с gd32? Какие есть подводные камни при работе с gd32?

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

Чт янв 30, 2020 16:18:39

daaar, прошить его st-link'ом при помощи утилиты st-flash точно не удастся без патча утилиты. Я уже пытался и с GD32 и с CS32 (подсунул, зараза, китаец в "синей таблетке" вместо STM32 эту дрянь). В итоге плюнул, выпаял и выкинул гадость, а вместо нее впаял STM32.

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

Чт янв 30, 2020 17:48:37

Там вроде какие-то резисторы со 100 кОм меняют на поменьше и все начинает прошиваться... ? Где-то читал про это.

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

Чт янв 30, 2020 18:33:11

я столкнулся (c CS32) только с тем что памяти в нём ровно столько, сколько заявлено (а не в 2 раза больше как у стм32ф103с8т6) хотел в паяльник вставить его - код считанный с STM в CS не влез... (шил штатным стлинком) прошиться прошился, но верификация не прошла (выше заявленной памяти закономерно читаются нули).

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

Пт янв 31, 2020 21:28:30

То есть танцы с бубном не обязательны?

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

Пн фев 03, 2020 22:46:03

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

поспешил с вопросом
прочитал свой же вопрос - и кажется сообразил: "нарезается" содержимым ARR и CCR1 таймера TIM1.
ну вот и зацепочка, голову ломаю - как выводить определенное кол-во импульсов (больше 255).
Вложения
F95.jpg
(85.78 KiB) Скачиваний: 174

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

Вт фев 04, 2020 23:18:02

Обьясните неопытному. Я до этого только в иаре работал, там с режимом все было проще - включаешь С или С++ и оно весь проект компилит в выбраном режиме.
Но в эклипсе все не так. Ситуация такова, что мейн у меня .с, а поскольку до этого проект в иаре писался с использованием с++ классов, то работу с ними, в часности инициализацию, пришлось вынести в отдельную функцию в отдельный .срр файл.
Так вот - программа из мейна переходит в с++ инит, а вот назад вернуться не может - после ретурна исполнение улетает черт знает куда.
Думал дело в коде - закоментил все, осталась пустая функция, и ситуация повторяется.

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

Ср фев 05, 2020 00:24:00

А в хидере с определением cpp-шного init-а, который подключается в main.c, есть extern "C" сотоварищи?

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

Ср фев 05, 2020 06:45:02

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

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

Ср фев 05, 2020 07:14:11

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

ЗЫ: достаточно легко сделать, чтобы всё компилировалось и gcc, и iar, и даже keil.

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

Ср фев 05, 2020 17:57:28

А со стеком все в порядке? А некоторые системы под стек дефолтно дают мало места...

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

Ср фев 05, 2020 23:02:12

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

Добавлено after 4 hours 41 minute 53 seconds:
ну я хз котаны - вместо того чтобы делать новый проект из кубовского файла, я создал чистый прямо в куб-идэе и руками перезабил всю инфу. сгенерил код, перенес все те же юзер файлы, скопипастил куски юзер кода и оно не падает.
пока что спортивного интереса копаться в чем же разница между проектами нет - может косяк в их коде, может у меня что-то было. Если повторяться не будет то и хрен с ним, а если будет то потрачу денек.

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

Чт фев 06, 2020 07:34:56

Ярослав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), надо указать комментарием, в какие кубические файлы надо вписывать свои вызовы.

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

Чт фев 06, 2020 08:56:26

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

P.S. А, сразу не увидел оговорку про прерывания. Точек связи сгенерированного кода со своим всё же больше трёх.

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

Чт фев 06, 2020 11:25:11

Точек связи сгенерированного кода со своим всё же больше трёх.

Почему? Колбеки редефайнятся в своем файле и возможно даже править не приходится.
По поводу мейна - у меня как-то сложилось что в мейне только начальная инициализация и запуск системного таймера. Дальше все остальное происходит через вызовы этого системного таймера. Мои объекты имеют функцию poll - в ней находится большой свич с описанием действий и переходов, рискну назвать это машиной состояний. Иногда даже две таких функций - быстрая и легкая (например простое сравнение) и медленная (математически нагруженная). Такая архитектура позволяет асинхронную работу частей программы, никто никого не ждет - есть состояние значит переход на новое состояние, нет - ретурн. Разные обьекты ставятся на разные таски - кто-то на 1 мС, кто-то на 100 мС.
Максимум что попадает в цикл мейна - мигание светодиодом, причем в последнее время я туда пакую софтверный шим для этого светодиода. По плавности мигания можно увидеть насколько ровно идет программа. Главный цикл имеет наинизший приоритет и если ему совсем времени не остается, значит и какой-то таск может захлебнуться. Для моих задач хватает, не атомные реакторы строю.
Ответить