Отладка в реальном времени - это отдельная тема. До нее еще нужно дойти при разработке устройства. Подчинять ей отладку с захватом ошибки и остановом - плохая идея. Тем более, что строгая отладка в реальном времени вообще невозможна, ибо любой отладчик "реального времени" таковым не является ибо задерживает вывод переменных относительно событий.
Опять же, если немного отвлечься от AVR , то тот же самый SWD/JTAG отладчик в других платформах, работая на частоте порядка 4...5 МГц, способен выводить и модифицировать переменные без останова исполнения. Просто в AVR слишком медленное сканирование.
Вообще-то мой отладчик не задерживает вывод переменных относительно событий. События не происходят, поскольку МК програмно выводит переменные в отладчик, а затем идёт далее по программе. Происходит только остановка выполнения программы на время вывода переменных. Но задержка очень небольшая, несколько микросекунд на 1 байт, в подавляющем большинстве случаев это не влияет на выполнение программы, так что можно считать, что это отладка в реальном времени.
Для меня неясно, как при использовании JTAG проводится привязка выводимых переменных к точкам программы.
Вообще то отладка через компорт является наиболее распространенной среди профессионалов. Нет принципиальной разницы в величине задержки при выводе переменных, даже если их выводить через SPI. Это все разные сорта г...вна, а не реальное время. Но это г...вно неизбежно в финишной отладке определенных устройств. В конце концов, на выходе отладчика сидит человек, скорость считывания информации у которого крайне низкая. Поэтому эта информация должна быть обработана, прежде чем сможет быть воспринята адекватно. И это тоже причина невозможности true real-time дебага.
У отладки через компорт есть большие минусы. Во-первых, компорт работает медленно, во-вторых, часто компорт занят основной программой. Всё это можно решить, но зачем эта морока профессионалу, лучше использовать современные средства отладки.
Похоже, вы не поняли работу моего отладчика. Номер точки и переменные выводятся каждый раз в новую строку на экране компьютера, поэтому полученную информацию можно анализировать хоть целый день.
Расчет "функции" делают не в симуляторе МК, а в математическом ПО. Делать это в симуляторе - верх перректальности, извините. Все что можно увидеть в симуляторе при расчете функции - детские ошибки. Что в Си, что в АСМе.
Ошибки надо устранять, даже если они «детские». Как там в «Кавказской пленнице», «Ошибки надо не признавать…»
Написали вы программу расчёта функции, проверили в математическом ПО, всё хорошо.
Обычно для расчёта функции используется линейная аппроксимация, а при этом используется массив чисел. При переносе этого массива в программу можно допустить ошибки. Можно сделать и другие ошибки, например, должна быть четырёхбайтная переменная, а её объявили трёхбайтной и т.д.
Ошибка сразу явно может не проявляться.
Так что программу в любом случае надо проверять во всём диапазоне, а симулятор для этого – отличная вещь, можно проверить просто и быстро, на одну точку проверки – несколько нажатий клавиш.
Кроме того, в симуляторе можно определить время выполнения программы, это существенно, особенно максимальное значение.
Еще раз. Работа с флешем и ЕЕПРОМом не симулируется. А если и симулируется, то как макрос - фиктивно. С такой работой можно лишь замылить реальный баг, а не найти его. И что вы называете "хорошим симулятором"? У меня выбран чип на основании технических резонов, а не по признаку наличия у него хорошей модели в хорошем симуляторе.
Я не говорю о полной симуляции работы с флешем.
Запись во флеш – ассемблерная команда SPM, вполне «симулируемая».
После прохождения симулятора участка программы с записью во флеш должен появиться файл с текстом записанной программы. Вначале каждой строки должен быть адрес строки.
Это не полная симуляция, но обнаружить вашу ошибку можно было.
Насколько это реально, не знаю, но не вижу каких-то ограничений для такой организацией симулятора.
В симуляторе не создаётся модель МК, а «симулируются» ассемблерные команды, поэтому можно применять любой МК АВР, у них одинаковые команды.
Признаться до этого не замечал, что небольшой стендик на dupont-ах и ZIF-ке занимает много места на компьютерном столе.
Отладка с помощью подмигивающих светодиодов, подключаемых дисплеев, СОМ-порта и т.д. – это что-то школьно-любительское для начинающих.
Может и для начинающих, но паралельно разработке идёт обкатка в железе, и иногда выявляются некоторые аппаратные "особенности". Вы уж как то совсем от реальности пытаетесь оторваться..
Не знаю, что такое «стендик на dupont-ах» и причём тут ZIF.
А на компьютерном столе отлаживать удобней, чем на радиомонтажном.
Похоже, не читали предыдущие посты. Для «обкатки в железе» хороший отладчик в реальном времени удобней подмигивающих светодиодов и прочего.
shonty, Забейте. И не кормите тролля. Нравится человеку сидеть на своих двух проводках и считать это верхом совершенства.
Просто у него нет ничего, кроме этих двух проводков.
Еще Миша Жванецкий сказал 35 лет назад - "Давайте спорить о вкусе устриц и кокосовых орехов.... С теми, кто их ел".
На народные АВРки типа восьмой меги или тринадцатой тини у 99% радиолюбителей железных отладок нет.
Поэтому и существуют "два проводочка" имитации отладки, которые по сути есть просто способ вывода лога из МК. При этом посмотреть или потрогать память или регистры такая отладка не позволяет.
А услышать, что кроме двух проводков есть и другие инструменты и способы отладки, и что для разных случаев есть разные методы - человек не хочет.
BOB51, ну да, аппаратный модуль, занимающий 0 байт программы и имеющий в идеале доступ ко всем ресурсам МК и программная закладка, где для вывода любой переменной нужно дописывать вызов подпрограммы вывода. А если переменных много и их надо быстро выплюнуть, то еще и буфер организовывать... И на время выплевывания данных наружу МК только этим и занимается. Т.е. тоже не true real-time (ц) КРАМ
Ну почему же не хочет знать разные методы. Я как раз интересуюсь разными методами, а в полемике с КРАМ отстаиваю достоинства симулятора.
Неясно, почему считаете мой отладчик имитацией отладки.
Можно посмотреть и регистры, и SRAM, и EEPROM. Управлять МК пока нельзя, но со временем появится.
Программа в МК увеличивается, но не немного, несколько десятков байт, это мелочь.
Останавливается МК на время вывода переменной, но это десяток микросекунд, это тоже мелочь. МК прыгает в короткое прерывание, тоже программа останавливается, это не проблема.
Написать строчку вывода переменной займёт по времени десяток секунд, тоже мелочь.
Для вывода нескольких переменных никаких буферов организовывать не надо, надо просто написать несколько строчек, на каждую переменную по строчке.
Всё это мелочь. А вот возможность отладки в реальном времени – это очень существенно.