Вопросы по отладке

Обсуждаем контроллеры компании Atmel.
Ответить
Поставщик валерьянки для Кота
Сообщения: 1981
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария

Сообщение veso74 »

Ну в STM32 все современно, программатор, еще там и отладчик, по цене двух кофе, flash и ram есть, ресурс есть и MK - быстрый, и МК дешевые, и среда написания (напр. STM32Cube) бесплатная. Но STM32 не очень нравится (пока): не нравятся ежедневные обновления IDE, "красные" экраны, закодированные ошибки, напр. с типами данных, бесконечные настройки и детали. А и сам чип STM32 с расстоянием в полмиллиметра между выводами ... Просто пробую метод и пишу агоритм в Arduino IDE, потому что там все проще, и думаю только с точки зрения алгоритма устройства, а не о pdf микроконтроллера или настройки, функции компилятора и среды записи. Затем портирую код туда, где он мне нужен. Каждый чувствует себя хорошо там, где он есть (МК, compiler, IDE ...) и мы не все одинаковы :).
Контактная информация:
Реклама
Поставщик валерьянки для Кота
Сообщения: 1981
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария

Сообщение veso74 »

Да, для кого-то писания кода это работа, они профессионалы. Но для большинства это просто хобби и хорошее времяпрепровождение :).
Напр. смотрел у друга конструкция ел. схемы, собрана на картонее (как печ. плата, с припаянными выводами от самих элементов). Я сначала смеялся, а теперь с теплотой вспоминаю. Ну, схема работала :).
Контактная информация:
Реклама
Встал на лапы
Сообщения: 145
Зарегистрирован: Вс авг 23, 2015 08:14:05

Сообщение Denis82 »

[uquote="Just_Fluffy",url="/forum/viewtopic.php?p=4578655#p4578655"]ARV, Если более двух человек, то и вариантов должно быть более двух. Минимум по числу человеков.
Хотя иногда бывают варианты
Из Парижу в Берлин на костылях, но через Амстердам, патамуша дорога ровная и известная идущему, а прямую Париж-Берлин он не ходил, она незнакомая. Вдруг там волки в лесу, Красну Шапку доедают),
Из Парижу в Берлин на персональном авто
Из Парижу в Берлин на TGV
Ну так два последних более правильные ))) Даже если на костылях[/uquote]

неправда ваша, по Европпе продуктивнее и комфортнее всего передвигается на танке, проверено множеством народу в 44 году :)
Вымогатель припоя
Аватара пользователя
Сообщения: 555
Зарегистрирован: Ср июн 29, 2022 16:25:45

Сообщение Just_Fluffy »

veso74 писал(а):Ну в STM32 все современно, программатор, еще там и отладчик, по цене двух кофе, flash и ram есть, ресурс есть и MK - быстрый, и МК дешевые, и среда написания (напр. STM32Cube) бесплатная. Но STM32 не очень нравится (пока): не нравятся ежедневные обновления IDE, "красные" экраны, закодированные ошибки, напр. с типами данных, бесконечные настройки и детали. А и сам чип STM32 с расстоянием в полмиллиметра между выводами ...
Куб мне тоже не нравится. Именно подходом кодогенератора. Но сейчас это тенденция - в абстракции железа от эмбеддера ценой потери части производительности. Но скорость коммерческой разработки перечеркивает этот недостаток. Просто берется камень потолще.
Но мне этот подход не нравится. Поэтому стараюсь программировать на чистом CMSIS и стоит старенькая Atollic TrueStudio 9.2.0. Которая не лезет обновляться.
В принципе, сами STMки по началу мне не совсем нравились.... Но ничего, потом стало наоборот. И именно из-за простого и мощного инструмента внутрисхемной отладки. Когда в любую дырку МК можно залезть из студии и тут же увидеть изменения на реальном железе. Часть периферии можно настроить и посмотреть, как она взаимодействует с обвязкой МК вообще без написания программы. Просто настраивая регистры. И со временем STMки для меня тоже стали просто инструментом для достижения поставленной задачи. Шаг выводов 0.5 мм - да, несколько неудобно. Особенно, если плату делать руками. Хотя нормальный ЛУТ прекрасно справляется с 0,25/0,25 дорожками. А вот что продолжает не нравиться в STM - это питание до 3.6 вольт. Поскольку для питания от лития надо ставить LDO.
Белая и Пушистая
Я не ИИ, поэтому могу ошибаться.
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 25894
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="Just_Fluffy",url="/forum/viewtopic.php?p=4579086#p4579086"]Шаг выводов 0.5 мм - да, несколько неудобно.[/uquote]
Во первых, есть обычный SO20. Во вторых, по нынешним временам цены на заказ плат столь низкие, что можно заказать себе шилд с кварцем и питанием под любой шаг и перейти на любой другой шаг.
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 555
Зарегистрирован: Ср июн 29, 2022 16:25:45

Сообщение Just_Fluffy »

Martian, SOIC-8 еще круче. и шаг 1,25
Белая и Пушистая
Я не ИИ, поэтому могу ошибаться.
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 555
Зарегистрирован: Ср июн 29, 2022 16:25:45

Сообщение Just_Fluffy »

Martian, 561ЛА7. Отладка не нужна!
Белая и Пушистая
Я не ИИ, поэтому могу ошибаться.
Встал на лапы
Сообщения: 145
Зарегистрирован: Вс авг 23, 2015 08:14:05

Сообщение Denis82 »

если перейти с ЛУТ-а на ФР то и lqfp-144 не проблема
ну а для производства вообще пофигу, плати денюжку только :)
Вымогатель припоя
Аватара пользователя
Сообщения: 555
Зарегистрирован: Ср июн 29, 2022 16:25:45

Сообщение Just_Fluffy »

Вообще то мы отклонились от темы отладки)))
Чтоб вернуться к ней, напомню один старый метод оценки производительности и загруженности МК.

МК - не ПК и там нет диспетчера, в котором можно увидеть загрузку процессора.

Я использую для написания программ 2 подхода:
1. событийная модель с диспетчером заданий
2. суперцикл

В обоих случаях у меня в программе используется так называемый системный таймер. Это может быть отдельный таймер, предусмотренный архитектурой МК, либо я выделяю какой то из таймеров общего назначения.
В подавляющем большинстве случаев я таймер настраиваю на 1 мс. И уже все процессы привязываются к этим таймингам. Включая программные таймеры.
В случае суперцикла выполняются все предусмотренный задачи и потом суперцикл ожидает следующего тика системного таймера.
В случае событийной модели выполняются все задачи из очереди и потом, когда задачи в очереди исчерпались, диспетчер постоянно дергает специально выделенную задачу void idle(void).

И если выделить какой то GPIO, то его можно поднимать в единичку в цикле ожидания и класть в нолик при выполнении задач.
В случае суперцикла пин поднимается в единичку перед началом ожидания следующего тика системного таймера и сбрасывется в 0 при наступлении этого тика.
В случае диспетчера - в задаче idle пин поднимается в 1, а диспетчер сбрасывает пин в 0 при вызове любой задачи, кроме idle.

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

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

Denis82, Если за платами будете ездить на танке - то вам только ЛУТ и останется, в конце концов.
Белая и Пушистая
Я не ИИ, поэтому могу ошибаться.
Вымогатель припоя
Аватара пользователя
Сообщения: 555
Зарегистрирован: Ср июн 29, 2022 16:25:45

Сообщение Just_Fluffy »

Martian, ну идея не моя, подсмотрела когда то на изиэлектрониксе, кажется...
Просто тема касается отладки, а скатились в обсуждение чего угодно. Вот и решила написать про один из способов отладки.
Еще при наличии ЦАП в МК можно разные процессы выводить разными уровнями. Но тогда нужен аналоговый анализатор либо осцилл.
Либо задействовать несколько GPIO - и на них выводить разные процессы.
У меня зачастую какие то идеи и фрагменты кода обкатываются на беспаечной макетке с использованием всяких отладочных плат, типа той же ардуины. А на этих платах зачастую какой то GPIO выводят на светодиод. Вот его и использую, как вот такой флаговый. Тем паче, у некоторых семейств этот пин GPIO несколько кастрирован и его не всегда получается использовать как порт с нормальной нагрузкой или скоростью (РС13-РС15).
А потом, когда уже проблемные вопросы решены - уже идет перенос разработки на плату устройства и рутинное написание полной программы.
Белая и Пушистая
Я не ИИ, поэтому могу ошибаться.
Встал на лапы
Сообщения: 145
Зарегистрирован: Вс авг 23, 2015 08:14:05

Сообщение Denis82 »

если зашла тема про мониторинг
у кейла есть подобие системного монитора для его RTX, иногда удобная штука
Держит паяльник хвостом
Сообщения: 923
Зарегистрирован: Пн сен 10, 2018 19:16:28

Сообщение linkov1959 »

В Cube IDE в отладке переменные, регистры, память в реальном времени. Если нужно посмотреть быстрые процессы, то заполняю инфой свободное ОЗУ и в точке останова неспешно изучаю.
Вымогатель припоя
Аватара пользователя
Сообщения: 555
Зарегистрирован: Ср июн 29, 2022 16:25:45

Сообщение Just_Fluffy »

linkov1959, так CubeIDE - это почти та же Atollic TrueStudio, которая сделана на движке Eclipse. И там инструментов по отладке вагон и тележка.
И отладка в ней - это как раз внутрисхемная* отладка, про которую КРАМ говорит.
Но если вы говорите про отладочный код и массив в памяти, то можно рассмотреть вопрос отладочного вывода - быстрые процессы иногда проще отслеживать лог.анализаторорм, делая дебаг.вывод через GPIO - чисто из-за того, что на компе памяти больше, чем в МК и лог.анализатор имеет большую частоту дискретизации. Либо через быстрый UART. Т.е. просто можно снять бОльший объем данных и потом их изучать неспешно. Но с другой стороны, метод "сложить в память" и посмотреть отладчиком - дополнительно не требует ничего, кроме наличия ST-Link'а и студии - и это тоже плюс внутрисхемной отладки.

А когда есть Атмега8 и нет в наличии инструментов для внутрисхемной отладки - то вот приходится извращаться, как AQ29, "изобретением" всяких софтовых логгеров по двум проводкам. Но вот данной темы не было бы, если бы двухпроводковая софтовая отладка не преподносилась как единственно истинная и расово верная.
Но, как ранее говорилось - инструментов для отладки много. И в разных случаях это могут быть разные инструменты. Вон в ардуине консольный вывод - вообще единственный инструмент "из коробки" для большинства МК. И это не внутрисхемный, ибо printf и его вывод в uart - это программные сущности.

* под внутрисхемной отладкой я имею ввиду аппаратное устройство с программной поддержкой на ПК, не требующее изменения прошивки МК и позволяющее прозрачно для прошивки заглянуть в МК как в реалтайме, так и при останове.
Белая и Пушистая
Я не ИИ, поэтому могу ошибаться.
Вымогатель припоя
Аватара пользователя
Сообщения: 555
Зарегистрирован: Ср июн 29, 2022 16:25:45

Сообщение Just_Fluffy »

Martian, так LGBT - не совсем AVR, а просто что то почти совместимое. Хотя в некоторых случаях это более вкусные камешки.
Но я тоже разбалована TrueSTUDIO )))))))))))))))))))))))))))))))))))))
Белая и Пушистая
Я не ИИ, поэтому могу ошибаться.
Вымогатель припоя
Аватара пользователя
Сообщения: 555
Зарегистрирован: Ср июн 29, 2022 16:25:45

Сообщение Just_Fluffy »

Martian писал(а):с Serial.print мой косяк, светодиодик опять теряет позиции )
А я уж испугалась, что это проделки LGBT
Белая и Пушистая
Я не ИИ, поэтому могу ошибаться.
Родился
Аватара пользователя
Сообщения: 9
Зарегистрирован: Пн окт 07, 2019 10:14:37
Откуда: СФО, уездный город Н-ск

Сообщение DetSimen »

А шо, кто-то еще AVR покупает?
Праграмный кот. Хожу по цыкалу кругом.
Встал на лапы
Аватара пользователя
Сообщения: 116
Зарегистрирован: Вс май 12, 2024 12:41:38
Откуда: Подмосковье

Сообщение Александр Д. »

[uquote="DetSimen",url="/forum/viewtopic.php?p=4582297#p4582297"]А шо, кто-то еще AVR покупает?[/uquote]
Халивары обычно по пятницам. Погодите чуток ))
Верните прошлое! там было такое прекрасное будущее...
Грызет канифоль
Сообщения: 266
Зарегистрирован: Сб июл 30, 2011 21:00:24

Сообщение AQ29 »

[uquote="КРАМ",url="/forum/viewtopic.php?p=4576952#p4576952"][uquote="AQ29",url="/forum/viewtopic.php?p=4576941#p4576941"]Зачем, ведь есть нормальная лаборатория.[/uquote]
Ну так и работайте в этой лаборатории. Причем тут КБ? КБ - это помещение для конструкторов. Надеюсь вам не нужно объяснять чем отличается конструктор от схемотехника-эмбеддера?[/uquote]
Я уже пояснял. В лаборатории – работа с оборудованием. В КБ – разработка, оформление всяких бумаг, общение с коллегами. Это нормальная организация работы.
Вот интересно, скажем, рядом с вами работает конструктор механик, вы начинаете что-там паять, как он реагирует?

[uquote="КРАМ",url="/forum/viewtopic.php?p=4576952#p4576952"][uquote="AQ29",url="/forum/viewtopic.php?p=4576941#p4576941"]Я пишу о симуляторе, встроенном в программную среду для МК.
Пользоваться таким симулятором очень просто.
Поясню, как он работает.[/uquote]
Это смешно... Вы полагаете, что я не знаю как работает симулятор в среде? :))) :))) :)))
Только проку от такой отладки НОЛЬ. Она если для чего то и нужна, так это для быстрой проверки чистой математики. Если на столе лежит аппаратный дебаггер и схема, то симулятор вообще бестолковая вещь. С реальным железом я даже такие простые вещи смогу во времени посмотреть с реальным тактированием, а не только тупую пошаговую последовательность.
Еще один недостаток симулятора среды - это его крайняя медлительность и пожирание ресурсов при трассировке.[/uquote]
Уже писал, что, похоже, пишем о разных программах. Вы пишите о каких-то «физических моделях внешних полей и механических устройств, трансдьюсерах и т.д.». Какое отношение это имеет к обычному симулятору?
Он просто проходит по ассемблерным командам программы. Откуда «крайняя медлительность и пожирание ресурсов при трассировке»?
Скажем, симулятор проходит ассемблерную команду add. Симулятор должен сложить два байта и установить биты SREG. Где тут «пожирание ресурсов»?
Даже в старой алгоритм билдер (АБ) на древнем компьютере быстро работало.
Ради интереса посмотрел, с какой скоростью симулятор работает на АБ.
Правда, пришлось повспоминать, как там работать. Для удобства запустил программную задержку. Оказалось, симулятор проходил со скоростью около 150 тысяч тактов в секунду. Очень неплохо. Большей частью, на один такт приходиться одна ассемблерная команда.
Сильно сомнительно, что аппаратный дебаггер удобнее.
Скажем, проверка расчёта функции. В симуляторе установил начальную и конечную точки прохода. Затем при каждом проходе задаёшь значение аргумента и жмёшь кнопку Пуск. Обычно, симулятор делает расчёт за доли секунды.
Насколько помню, у меня после отладки в симуляторе эта часть программы всегда исправно работала в реалии.

[uquote="КРАМ",url="/forum/viewtopic.php?p=4576952#p4576952"]А в штатном аппаратном дебаге ничего специально выводить на экран компьютера не требуется.
Просто в окне Watch открывается буфер контролируемых переменных (причем ИМЕНОВАННЫЙ, а не безымянный) и так же точно наблюдается хоть после останова, хоть в динамике. Повторю. Наблюдаются не сами переменные, а их значения защелкнутые в буфер в необходимых сечениях кода. То есть это обычный лог.[/uquote]
Как я понял, необходимые сечения кода – это точки программы. Как вы защёлкиваете интересуемые переменные в необходимых сечениях и как определяете, к каким точкам программы эти значения относятся?

[uquote="КРАМ",url="/forum/viewtopic.php?p=4576952#p4576952"]Вы, милейший, изобрели деревянный велосипед с квадратными колесами. Почитайте что нибудь про JTAG и вы обнаружите, что он примерно так и работает, только без "модернизированного SPI"... :tea:[/uquote]
Очевидно, что я не изобретал SPI, а просто использовал его для своих целей.
Изобретение – это несколько другое.
Друг Кота
Аватара пользователя
Сообщения: 25894
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="AQ29",url="/forum/viewtopic.php?p=4595571#p4595571"]Вот интересно, скажем, рядом с вами работает конструктор механик, вы начинаете что-там паять, как он реагирует?[/uquote]
Никак не реагирует. Я не монтажник и паяю не регулярно. У меня есть вытяжка, но я ее не всегда включаю.
[uquote="AQ29",url="/forum/viewtopic.php?p=4595571#p4595571"]Он просто проходит по ассемблерным командам программы. Откуда «крайняя медлительность и пожирание ресурсов при трассировке»?[/uquote]
Патамушта речь идет не о проверке арифметической функции типа извлечения корня, а о симуляции реального процесса работы. И там все очень тормозит.
[uquote="AQ29",url="/forum/viewtopic.php?p=4595571#p4595571"]Оказалось, симулятор проходил со скоростью около 150 тысяч тактов в секунду. Очень неплохо. Большей частью, на один такт приходиться одна ассемблерная команда.
Сильно сомнительно, что аппаратный дебаггер удобнее.
Скажем, проверка расчёта функции. В симуляторе установил начальную и конечную точки прохода. Затем при каждом проходе задаёшь значение аргумента и жмёшь кнопку Пуск. Обычно, симулятор делает расчёт за доли секунды.
Насколько помню, у меня после отладки в симуляторе эта часть программы всегда исправно работала в реалии.[/uquote]
Аппаратный дебаггер работает точно так же и учитывает все эрраты чипа. В отличии от...
Процесс работы ничем от симулятора не отличается. Те же начальная и конечная точка....
Я это делаю регулярно, проверяя арифметику кода.
[uquote="AQ29",url="/forum/viewtopic.php?p=4595571#p4595571"]Как я понял, необходимые сечения кода – это точки программы. Как вы защёлкиваете интересуемые переменные в необходимых сечениях и как определяете, к каким точкам программы эти значения относятся?[/uquote]
Можно в едином логе писать название точки в виде номера (например один байт номер, а следующий данные), можно вести разные логи для каждой точки. В чем проблема?
Грызет канифоль
Сообщения: 266
Зарегистрирован: Сб июл 30, 2011 21:00:24

Сообщение AQ29 »

[uquote="Just_Fluffy",url="/forum/viewtopic.php?p=4579698#p4579698"]Но если вы говорите про отладочный код и массив в памяти, то можно рассмотреть вопрос отладочного вывода - быстрые процессы иногда проще отслеживать лог.анализаторорм, делая дебаг.вывод через GPIO - чисто из-за того, что на компе памяти больше, чем в МК и лог.анализатор имеет большую частоту дискретизации. Либо через быстрый UART. Т.е. просто можно снять бОльший объем данных и потом их изучать неспешно. Но с другой стороны, метод "сложить в память" и посмотреть отладчиком - дополнительно не требует ничего, кроме наличия ST-Link'а и студии - и это тоже плюс внутрисхемной отладки.

А когда есть Атмега8 и нет в наличии инструментов для внутрисхемной отладки - то вот приходится извращаться, как AQ29, "изобретением" всяких софтовых логгеров по двум проводкам. Но вот данной темы не было бы, если бы двухпроводковая софтовая отладка не преподносилась как единственно истинная и расово верная.[/uquote]
Вообще-то я не преподносил свою отладку, как единственно истинную.
У неё ряд плюсов. Многократно удобнее вашего варианта с «отладочным выводом» через «быстрый UART» и уж, тем более, «флагового светодиода», который вообще из прошлого века.
В моём варианте есть гальваническая развязка, это необходимо, и цена отладчика бюджетная, вся комплектация около тысячи рублей.
Пишу на языке, близком к ассемблерному. Никаких «суперциклов и событийных моделей с диспетчером задач», на мой взгляд, для МК AVR это ни к чему. Писать проще и отладка получается простой.
[uquote="КРАМ",url="/forum/viewtopic.php?p=4595617#p4595617"]Никак не реагирует. Я не монтажник и паяю не регулярно. У меня есть вытяжка, но я ее не всегда включаю.[/uquote]
Когда-то и у нас инженеры паяли в КБ. Но это из тёмного прошлого. Сейчас в КБ чистота и порядок.
[uquote="КРАМ",url="/forum/viewtopic.php?p=4595617#p4595617"]Патамушта речь идет не о проверке арифметической функции типа извлечения корня, а о симуляции реального процесса работы. И там все очень тормозит.[/uquote]
Речь как раз идёт про «арифметические функции».
Я с самого начала писал, что использую симулятор только для отладки процессов внутри МК без взаимодействия с внешними устройствами, большей частью это математические функции. В этих случаях у симулятора существенные преимущества перед дебаггером.
Ответить

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