А зачем ему считать остановленным? Ждем когда досчитает до нужного значения, тут и останавливаем, смотрим что да как. Вообще, можно по всякому извернутся. Но отладка по сообщениям в терминале тот еще ад, требующий постоянных правок и перепрошивок. С внутрисхемным отладчиком можно прямо по ходу выполнения программы нужные значения изменить у регистров и переменных.
мелкие дешевые МК
- Сообщения: 6496
- Зарегистрирован: Сб янв 28, 2006 22:47:24
[uquote="ARV",url="/forum/viewtopic.php?p=4262392#p4262392"]хотелось бы поподробнее: как может продолжать считать таймер, тактируемый от остановленного?![/uquote]
А зачем ему считать остановленным? Ждем когда досчитает до нужного значения, тут и останавливаем, смотрим что да как. Вообще, можно по всякому извернутся. Но отладка по сообщениям в терминале тот еще ад, требующий постоянных правок и перепрошивок. С внутрисхемным отладчиком можно прямо по ходу выполнения программы нужные значения изменить у регистров и переменных.
А зачем ему считать остановленным? Ждем когда досчитает до нужного значения, тут и останавливаем, смотрим что да как. Вообще, можно по всякому извернутся. Но отладка по сообщениям в терминале тот еще ад, требующий постоянных правок и перепрошивок. С внутрисхемным отладчиком можно прямо по ходу выполнения программы нужные значения изменить у регистров и переменных.
Астролябия-сама меряет, было бы что мерять!!!
- Реклама
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
[uquote="Asmodey",url="/forum/viewtopic.php?p=4262508#p4262508"]Но отладка по сообщениям в терминале тот еще ад, требующий постоянных правок и перепрошивок.[/uquote]
У кого как. У меня основные проблемы обычно вызывает какая-нибудь логика более высокого порядка. И ее как раз-таки удобно отлаживать сообщениями. Да те же цепи конечных автоматов: сидишь, вроде бы должно быть так, а у тебя — эдак. Смотришь — а определенное состояние просто пропускается. Лезешь в код: ба, да забыл при копипасте сменить имя состояния ☺
А как это отладить внутрисхемно? Тыкать 100500 точек останова? Или пошагово в течение десятка тысяч тактов проходиться?
У кого как. У меня основные проблемы обычно вызывает какая-нибудь логика более высокого порядка. И ее как раз-таки удобно отлаживать сообщениями. Да те же цепи конечных автоматов: сидишь, вроде бы должно быть так, а у тебя — эдак. Смотришь — а определенное состояние просто пропускается. Лезешь в код: ба, да забыл при копипасте сменить имя состояния ☺
А как это отладить внутрисхемно? Тыкать 100500 точек останова? Или пошагово в течение десятка тысяч тактов проходиться?
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Я на гитхабе, в ЖЖ
итак, тема не раскрыта: в момент остановки исполнения на точке остановки какая периферия продолжает работать в реальном времени?
Добавлено after 30 seconds:
кроме тактового генератора, естественно
Добавлено after 30 seconds:
кроме тактового генератора, естественно
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 1326
- Зарегистрирован: Вт ноя 19, 2019 06:10:18
Открывай мануал на свой ARM и читай, какую периферию производитель твоего МК наделил способностью стоять в точке останова. У STM32 почти всё периферию можно тормознуть, а тактироваться она будет только во время работы CPU. Сколько тактов прошло между двумя точками останова, столько тактовых импульсов отработает периферия. Очень удобно, видно даже, как DMA, управляемый такой периферией, складывает в неё данные.ARV писал(а):итак, тема не раскрыта: в момент остановки исполнения на точке остановки какая периферия продолжает работать в реальном времени?
- Сообщения: 1735
- Зарегистрирован: Вт авг 15, 2017 10:51:13
[uquote="ARV",url="/forum/viewtopic.php?p=4262539#p4262539"]в момент остановки исполнения на точке остановки какая периферия продолжает работать в реальном времени?[/uquote]Не владею телепатическими способностями, чтобы угадать про какой МК речь, но например для линейки STM32F4xx следует смотреть в мануале описание регистров: DBGMCU_APB1_FZ, DBGMCU_APB2_FZ.
Для XMC4xxx нужно читать раздел мануала:
Для XMC4xxx нужно читать раздел мануала:
и далее...28.4.3 Halting Debug and Peripheral Suspend
If the program execution of the CPU is stopped by the debugger, e.g. with a breakpoint,
it is possible to suspend the peripherals as well. This allows to debug critical states of
the whole microcontroller. It is particularly useful, e.g. to suspend the Watchdog Timer
as it can’t be serviced by a halted CPU.
In other cases it is important to keep some peripherals running, e.g. a PWM or a CAN
node, to avoid system errors or even critical damage to the application. Because of this,
the peripherals allow to configure how they behave when the CPU enters the halting
debug mode.
...
- Реклама
странно, вроде задаю вопрос по-русски, а ответа не получаю...
все, кто пользуется внутрисхемной отладкой, что, не читали даташит?! почему мне предлагаете его читать? раз пользуетесь, значит, должны знать, значит, можете просто привести примеры в ответ. или я прошу слишком многого?!
все, кто пользуется внутрисхемной отладкой, что, не читали даташит?! почему мне предлагаете его читать? раз пользуетесь, значит, должны знать, значит, можете просто привести примеры в ответ. или я прошу слишком многого?!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 6496
- Зарегистрирован: Сб янв 28, 2006 22:47:24
Чем внутрисхемная отладка мешает работе периферии, а периферия отладке?
Астролябия-сама меряет, было бы что мерять!!!
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
Asmodey, а вот представь: ты поставил breakpoint для отлаживания USB, у тебя моментально сдохла реакция на прерывания USB, host отверг устройство с матюгами, а ты сидишь, и думаешь: что за Ë-моë?
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Я на гитхабе, в ЖЖ
предположим, вы разрабатываете асинхронный векторный привод. без нагрузки его не отладить, т.к. обратных связей нет. под нагрузкой его нельзя останавливать, т.к. мгновенно выгорят транзисторы. ну и чем вам внутрисхемная отладка поможет?! а осциллогаф и тупое дрыганье ногой по всяким условиям - помогут. равно как и вывод "в консоль"
Добавлено after 2 minutes 26 seconds:
а вот симулятор - поможет, т.к. при остановке в симуляторе останавливается и "обвязка"
Добавлено after 2 minutes 26 seconds:
а вот симулятор - поможет, т.к. при остановке в симуляторе останавливается и "обвязка"
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
В общем - дело вкуса. Кому - поп, кому - попадья. Закон о единомыслии ещё не ввели.
- Сообщения: 6496
- Зарегистрирован: Сб янв 28, 2006 22:47:24
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4262692#p4262692"]Asmodey, а вот представь: ты поставил breakpoint для отлаживания USB, у тебя моментально сдохла реакция на прерывания USB, host отверг устройство с матюгами, а ты сидишь, и думаешь: что за Ë-моë?[/uquote]
Что мешает ввести отладочные переменные, в процессе выполнения писать в них все что необходимо контролировать, останавливать и в окне отладки смотреть все после завершения работы с usb? Будет то же самое что с терминалом, только терминал становится лишним и все. Плюс можно оперативно изменить все что угодно, что очень помогает выловить баги. Какие преимущества тут у "односторонней" отладке по uart?
Ковыряюсь сейчас с соксем у которого отладка только по uart. Чувствую себя паралитиком, который только видит что вокруг происходит и даже пальцем пошевелить не может без чужой помощи.
Что мешает ввести отладочные переменные, в процессе выполнения писать в них все что необходимо контролировать, останавливать и в окне отладки смотреть все после завершения работы с usb? Будет то же самое что с терминалом, только терминал становится лишним и все. Плюс можно оперативно изменить все что угодно, что очень помогает выловить баги. Какие преимущества тут у "односторонней" отладке по uart?
Ковыряюсь сейчас с соксем у которого отладка только по uart. Чувствую себя паралитиком, который только видит что вокруг происходит и даже пальцем пошевелить не может без чужой помощи.
Астролябия-сама меряет, было бы что мерять!!!
- Сообщения: 333
- Зарегистрирован: Ср мар 09, 2016 08:07:41
[uquote="ARV",url="/forum/viewtopic.php?p=4262539#p4262539"]: в момент остановки исполнения на точке остановки какая периферия продолжает работать в реальном времени?[/uquote]
у меня на esp8266 было такое дело - отладка постоянно валилась в прерывание ватчдога, он там включенный по умолчанию и вроде практически неотключаемый. можно только перезапучкать таймер. соответственно, когда я начинал трасировать прошивку, таймер успевал обнулиться и меня постоянно перекидывало в прерывание ватчдога. вылечил путем запрета выполения прерывания через команду монитора. ничего другого не помогало.
еще читал книжку по tms320, там отладку драйвера мотора, выполняли при включенных ШИМ. как такие фокусы делаются в stm32 пока не в курсе
у меня на esp8266 было такое дело - отладка постоянно валилась в прерывание ватчдога, он там включенный по умолчанию и вроде практически неотключаемый. можно только перезапучкать таймер. соответственно, когда я начинал трасировать прошивку, таймер успевал обнулиться и меня постоянно перекидывало в прерывание ватчдога. вылечил путем запрета выполения прерывания через команду монитора. ничего другого не помогало.
еще читал книжку по tms320, там отладку драйвера мотора, выполняли при включенных ШИМ. как такие фокусы делаются в stm32 пока не в курсе
- Сообщения: 1326
- Зарегистрирован: Вт ноя 19, 2019 06:10:18
..а в отладчике, например, писать в файл, а потом смотреть. Отладка это не только точки останова. Есть ведь и трассировочная макроячейка, через которую можно целые области памяти читать-писать, и даже в виде тренда смотреть вживую если надо.Asmodey писал(а):Что мешает ввести отладочные переменные, в процессе выполнения писать в них все
[uquote="ARV",url="/forum/viewtopic.php?p=4262696#p4262696"]под нагрузкой его нельзя останавливать[/uquote]
А зачем его останавливать для отладки? Отладка с остановами используется для проекта на первом этапе. В реальном времени на завершающих стадиях проекта отладчик не останавливают, а просто наблюдают за переменными в Watch, изменяют переменные на лету, а так же смотрят осциллограммы в схеме.
А зачем его останавливать для отладки? Отладка с остановами используется для проекта на первом этапе. В реальном времени на завершающих стадиях проекта отладчик не останавливают, а просто наблюдают за переменными в Watch, изменяют переменные на лету, а так же смотрят осциллограммы в схеме.
- Сообщения: 1735
- Зарегистрирован: Вт авг 15, 2017 10:51:13
[uquote="ARV",url="/forum/viewtopic.php?p=4262696#p4262696"]предположим, вы разрабатываете асинхронный векторный привод. без нагрузки его не отладить, т.к. обратных связей нет. под нагрузкой его нельзя останавливать, т.к. мгновенно выгорят транзисторы. ну и чем вам внутрисхемная отладка поможет?![/uquote]Приводов этих вы не разрабатывали. Соответственно - понять "как поможет" не сможете. Раз даже не поняли как пользоваться ссылками на мануалы - какой смысл ещё объяснять?
Я разрабатывал инверторы для управления двигателями и мне эта отладка помогала при этом. Вам такой ответ как-то помог? Или о чём вообще вопрос?
PS: Если не умеете читать мануалы - для вас все слова будут пустыми. Начните что-то делать реальное, а не теоретизировать впустую - тогда может поймёте пользу от отладчика.
Я разрабатывал инверторы для управления двигателями и мне эта отладка помогала при этом. Вам такой ответ как-то помог? Или о чём вообще вопрос?
PS: Если не умеете читать мануалы - для вас все слова будут пустыми. Начните что-то делать реальное, а не теоретизировать впустую - тогда может поймёте пользу от отладчика.
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
[uquote="jcxz",url="/forum/viewtopic.php?p=4262844#p4262844"]Начните что-то делать реальное, а не теоретизировать впустую - тогда может поймёте пользу от отладчика.[/uquote]
У меня этих железяк уже вагон и маленькая тележка разработано. И как-то вот вообще ни разу даже мысли не было о внутрисхемной отладке. Совершенно бесполезная вещь.
Какой, скажем, смысл в реальном времени играться с регистрами? В RM все четко написано: что, где и куда. Неужто кто-то думает, что если баловаться с битами конфигурации, скажем, SPI, то внезапно откроется какой-нибудь "скрытый в документации" режим?
У меня этих железяк уже вагон и маленькая тележка разработано. И как-то вот вообще ни разу даже мысли не было о внутрисхемной отладке. Совершенно бесполезная вещь.
Какой, скажем, смысл в реальном времени играться с регистрами? В RM все четко написано: что, где и куда. Неужто кто-то думает, что если баловаться с битами конфигурации, скажем, SPI, то внезапно откроется какой-нибудь "скрытый в документации" режим?
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Я на гитхабе, в ЖЖ
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4262847#p4262847"]У меня этих железяк уже вагон и маленькая тележка разработано. И как-то вот вообще ни разу даже мысли не было о внутрисхемной отладке.[/uquote]
Эк вам повезло! А ведь надо было, бо без неё - никак
ПыСы Вспомнил: у меня тоже с полдесятка приборов в серию пошла, и как без в.с.о. обошёлся - ума не приложу.
Эк вам повезло! А ведь надо было, бо без неё - никак
ПыСы Вспомнил: у меня тоже с полдесятка приборов в серию пошла, и как без в.с.о. обошёлся - ума не приложу.
- Сообщения: 1735
- Зарегистрирован: Вт авг 15, 2017 10:51:13
[uquote="КРАМ",url="/forum/viewtopic.php?p=4262783#p4262783"]Отладка с остановами используется для проекта на первом этапе. В реальном времени на завершающих стадиях проекта отладчик не останавливают, а просто наблюдают за переменными в Watch[/uquote]Не обязательно. Никто не мешает остановить выполнение отладчиком в нужный момент. И посмотреть состояние переменных.
Если вдруг выполнение пошло как то "не так" - это очень поможет посмотреть какое состояние переменных/периферии было в этот момент. И выяснить что именно произошло.
А если отладчика нет - придётся писать вывод каких-то переменных в UART (каких именно? если не известно - что пошло не так, а переменных в коде - сотни/тысячи?) А потом ещё пытаться воспроизвести то предыдущее сбойное состояние. А если его воспроизвести не получится? Или очень трудно? Потратили полдня - воспроизвели наконец-то повторно то же состояние. Посмотрели выведенные переменные, оказалось что какой-то нужной переменной не хватает для анализа.
Опять всё по-новой - добавляем эту переменную в вывод и тратим ещё полдня на воспроизведение сбойного состояния. И там теряем море времени впустую...
А если бы был отладчик, то нажав буквально пару кнопок: остановив отладчиком и пройдясь по переменным уже через несколько минут находим проблему.
А если воспроизвести сбойное состояние не получается? Что делать?
Добавлено after 3 minutes 23 seconds:
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4262847#p4262847"]В RM все четко написано: что, где и куда.[/uquote]Не всегда так бывает. Скорее даже наоборот - описано процентов 30%. Остальное - "догадайся сам". Поэтому - приходится исследовать и выяснять недосказанное в мануале.
А бывает и просто тупо - ошибки в мануале. И приходится долго исследовать биты/регистры и выяснять правду. И без отладчика такое займёт в разы больше времени. Работал я когда-то и без эмулятора - знаю не понаслышке. Теперь жаль тех бездарно потраченных месяцев, которые не были бы потраченными будь тогда у меня эмулятор....
Если вдруг выполнение пошло как то "не так" - это очень поможет посмотреть какое состояние переменных/периферии было в этот момент. И выяснить что именно произошло.
А если отладчика нет - придётся писать вывод каких-то переменных в UART (каких именно? если не известно - что пошло не так, а переменных в коде - сотни/тысячи?) А потом ещё пытаться воспроизвести то предыдущее сбойное состояние. А если его воспроизвести не получится? Или очень трудно? Потратили полдня - воспроизвели наконец-то повторно то же состояние. Посмотрели выведенные переменные, оказалось что какой-то нужной переменной не хватает для анализа.
А если бы был отладчик, то нажав буквально пару кнопок: остановив отладчиком и пройдясь по переменным уже через несколько минут находим проблему.
А если воспроизвести сбойное состояние не получается? Что делать?
Добавлено after 3 minutes 23 seconds:
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4262847#p4262847"]В RM все четко написано: что, где и куда.[/uquote]Не всегда так бывает. Скорее даже наоборот - описано процентов 30%. Остальное - "догадайся сам". Поэтому - приходится исследовать и выяснять недосказанное в мануале.
А бывает и просто тупо - ошибки в мануале. И приходится долго исследовать биты/регистры и выяснять правду. И без отладчика такое займёт в разы больше времени. Работал я когда-то и без эмулятора - знаю не понаслышке. Теперь жаль тех бездарно потраченных месяцев, которые не были бы потраченными будь тогда у меня эмулятор....
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4262847#p4262847"]скажем, SPI, то[/uquote]
Чушь какая то. У меня практически все задачи сигнальные. Есть куча мест, где нужно в процессе отладки править коэффициенты, корректировать начальные условия, наблюдать за переменными и еще куча всего.
Кроме этого, имеются (не обязательно в АРМах) модули, с которыми работаешь в первый раз или первый раз используешь какой нибудь функционал. Приходится в начале смотреть отладчиком и по шагам.
Чушь какая то. У меня практически все задачи сигнальные. Есть куча мест, где нужно в процессе отладки править коэффициенты, корректировать начальные условия, наблюдать за переменными и еще куча всего.
Кроме этого, имеются (не обязательно в АРМах) модули, с которыми работаешь в первый раз или первый раз используешь какой нибудь функционал. Приходится в начале смотреть отладчиком и по шагам.
- Сообщения: 1735
- Зарегистрирован: Вт авг 15, 2017 10:51:13
[uquote="Jack_A",url="/forum/viewtopic.php?p=4262850#p4262850"]ПыСы Вспомнил: у меня тоже с полдесятка приборов в серию пошла, и как без в.с.о. обошёлся - ума не приложу.
[/uquote]Для справки - и какой был МК? И какой размер проекта?
Добавлено after 1 minute 33 seconds:
[uquote="КРАМ",url="/forum/viewtopic.php?p=4262859#p4262859"]Кроме этого, имеются (не обязательно в АРМах) модули, с которыми работаешь в первый раз или первый раз используешь какой нибудь функционал. Приходится в начале смотреть отладчиком и по шагам.[/uquote]+++
Вангую, что люди, не понимающие этого, сами никакую периферию не программируют. А пользуются для этого кубо-калами. Потому и не понимают "зачем".
Добавлено after 1 minute 33 seconds:
[uquote="КРАМ",url="/forum/viewtopic.php?p=4262859#p4262859"]Кроме этого, имеются (не обязательно в АРМах) модули, с которыми работаешь в первый раз или первый раз используешь какой нибудь функционал. Приходится в начале смотреть отладчиком и по шагам.[/uquote]+++
Вангую, что люди, не понимающие этого, сами никакую периферию не программируют. А пользуются для этого кубо-калами. Потому и не понимают "зачем".



