Easyelectronics.ru

Электроника для всех
Текущее время: 29 мар 2020, 11:27

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 16 ] 
Автор Сообщение
 Заголовок сообщения: Как отлаживать программы?
СообщениеДобавлено: 01 авг 2016, 23:22 
Старожил

Зарегистрирован: 11 фев 2016, 18:17
Сообщения: 336
Добрый день.
Как в МК отлаживать прошивку?
Есть Coocox, есть дискавери, есть своя плата с таким же чипом, есть полный SWD на все 6 ног. Дальше что? Как отладить в реальном времени, если даже printf не компилируется?
Как проверить, включилась ли альтернативная функция (например SPI)?
И т.д...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как отлаживать программы?
СообщениеДобавлено: 01 авг 2016, 23:43 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5818
Для swd надо всего 2 пина, в крайнем случае +Reset.
Но вы можете продолжать слушать кухарок и игнорировать Keil...

Кстати, вариант изучения железа для ленивых- сляпать один main loop , запустить отладку , и дебагере Keil тыкать на биты периферии.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как отлаживать программы?
СообщениеДобавлено: 02 авг 2016, 03:57 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 6553
Отладка? ...
ElecDron, вот тут и становится ясно, почему народ колется, плюется, но все равно продолжает жрать ка Keil. Из-за отладчика. Вы можете считывать и модифицировать переменные и настройки аппаратуры во время выполнения программы. Всякие кокосы этого не умеют.
Можно еще попробовать VisualGDB, если очень нравится IDE VS, но там (пока) только переменные можно смотреть/менять во время выполнения, а с портами "увы".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как отлаживать программы?
СообщениеДобавлено: 02 авг 2016, 04:26 
Старожил

Зарегистрирован: 23 янв 2016, 15:37
Сообщения: 1109
u37 писал(а):
Можно еще попробовать VisualGDB, если очень нравится IDE VS, но там (пока) только переменные можно смотреть/менять во время выполнения, а с портами "увы".

Вкладку "Hardware Registers" глянь, вдруг там как раз те порты, которые нужны :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как отлаживать программы?
СообщениеДобавлено: 02 авг 2016, 11:52 
Старожил

Зарегистрирован: 11 фев 2016, 18:17
Сообщения: 336
А ST Link V2?

Я пока еще слабо представляю себе сущность отладки плат. Вот как отлаживать программы на компьютере - тут вопросов нет, все просто.

Вот типичные вопросы возникают, когда что-то не работает:
Как получить текущее значение переменной?
Как узнать, отправляются ли (принимаются ли) запросы с МК на другое устройство?
А правильно ли настроена ножка (порт) у МК?

Вот как вы справляетесь с подобным?
Примеров перед глазами, к сожалению, нет. И знакомых, кто этим бы занимался тоже нет. Всё сам.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как отлаживать программы?
СообщениеДобавлено: 02 авг 2016, 12:07 
Старожил

Зарегистрирован: 17 сен 2013, 13:53
Сообщения: 3312
u37 писал(а):
Можно еще попробовать VisualGDB, если очень нравится IDE VS, но там (пока) только переменные можно смотреть/менять во время выполнения, а с портами "увы".


Ну вот значит GDB умеет, а VisualGDB вдруг нет? Порт, по большому счету, ничем от переменной не отличается, такая же область в памяти, только адреса другие.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как отлаживать программы?
СообщениеДобавлено: 02 авг 2016, 12:39 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5818
ElecDron, логический анализатор просто необходимый инструмент. Стоит копейки...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как отлаживать программы?
СообщениеДобавлено: 02 авг 2016, 12:48 
Старожил

Зарегистрирован: 23 янв 2016, 15:37
Сообщения: 1109
Цитата:
Вот как вы справляетесь с подобным?
Примеров перед глазами, к сожалению, нет. И знакомых, кто этим бы занимался тоже нет. Всё сам.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как отлаживать программы?
СообщениеДобавлено: 02 авг 2016, 13:00 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 6553
"Я пока еще слабо представляю себе сущность отладки плат. Вот как отлаживать программы на компьютере - тут вопросов нет, все просто."
'Неожиданный' ответ - так-же.
Добавляешь переменные, смотришь их значения в процессе работы. Если надо, можно выполнять код по шагам. Так-же делают графическое представление значений переменных во времени, а-ля осциллограф.

Что ST-Link, что "дискавери", всё одно, не важно. И там и там стоит один и тот-же отладчик.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как отлаживать программы?
СообщениеДобавлено: 02 авг 2016, 13:00 
Старожил
Аватара пользователя

Зарегистрирован: 26 янв 2010, 21:48
Сообщения: 3965
Откуда: Звенигород
С портами есть один нюансик))) - некоторые флаги сбрасываются при чтении и в итоге работающая в реальном времени программа перестает работать если идти в ней по шагам.

_________________
От Парижа до Находки с водкой лучше, чем без водки!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как отлаживать программы?
СообщениеДобавлено: 02 авг 2016, 13:11 
Старожил
Аватара пользователя

Зарегистрирован: 23 сен 2012, 20:35
Сообщения: 2471
PRC писал(а):
С портами есть один нюансик))) - некоторые флаги сбрасываются при чтении и в итоге работающая в реальном времени программа перестает работать если идти в ней по шагам.

Насколько я понимаю, чтение через JTAG/SWD не трогает никаких флагов.

P.S. Дело не в флагах, отладчик в пошаговом режиме влияет на очередность асинхронных операций, поэтому в отладчике программа вполне может себя вести не так, как в рабочем. Если совсем не повезет, то отладочный и рабочий бинарник могут вести себя по разному. Ловить race condition штука весьма неприятная и отладчик чаще всего помогает слабо или только мешает


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как отлаживать программы?
СообщениеДобавлено: 02 авг 2016, 14:54 
Старожил

Зарегистрирован: 11 фев 2016, 18:17
Сообщения: 336
u37 писал(а):
Добавляешь переменные, смотришь их значения в процессе работы. Если надо, можно выполнять код по шагам. Так-же делают графическое представление значений переменных во времени, а-ля осциллограф.

Это хорошо, только вот пошаговая отладка занимает секунды и минуты, в то время как реальная операция занимает миллисекунды. Вот тут может быть затык. Отладка говорит, что все хорошо, а в реальном режиме не работает. Как "отлаживать" временные интервалы?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как отлаживать программы?
СообщениеДобавлено: 02 авг 2016, 14:59 
Старожил
Аватара пользователя

Зарегистрирован: 23 сен 2012, 20:35
Сообщения: 2471
ElecDron писал(а):
Это хорошо, только вот пошаговая отладка занимает секунды и минуты, в то время как реальная операция занимает миллисекунды. Вот тут может быть затык. Отладка говорит, что все хорошо, а в реальном режиме не работает. Как "отлаживать" временные интервалы?

В голове. Или на бумажке. Нарисуйте диаграмму взаимодействия, все станет намного прозрачнее.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как отлаживать программы?
СообщениеДобавлено: 02 авг 2016, 15:28 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 6553
"Как "отлаживать" временные интервалы?"
Если нужно собрать данные о временах, то заводится быстродействующий таймер (можно брать и с SysTick) и с него считывается времена контрольных точек в переменные ... которые хорошо видны в отладке.
Если это чисто аппаратные события, без программной поддержки, то - осциллографом или никак. Дырки сверлить в корпусе и подключаться к триггерам кристалла пока не научились.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как отлаживать программы?
СообщениеДобавлено: 02 авг 2016, 15:33 
Старожил
Аватара пользователя

Зарегистрирован: 26 окт 2013, 07:58
Сообщения: 2533
u37 писал(а):
Отладка? ...
ElecDron, вот тут и становится ясно, почему народ колется, плюется, но все равно продолжает жрать ка Keil. Из-за отладчика. Вы можете считывать и модифицировать переменные и настройки аппаратуры во время выполнения программы. Всякие кокосы этого не умеют.

Серьёзно?!
А я то, по неграмотности - успешно всё это проделывал в кокосе.
Теперь буду знать - низя!!! :-))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как отлаживать программы?
СообщениеДобавлено: 02 авг 2016, 17:12 
Старожил
Аватара пользователя

Зарегистрирован: 23 янв 2012, 00:31
Сообщения: 1797
Откуда: Новокузнецк
ElecDron писал(а):
Отладка говорит, что все хорошо, а в реальном режиме не работает. Как "отлаживать" временные интервалы?

Опять же логический анализатор. Дерганье разными пинами подключенными к анализатору при определенных событиях. Потом в программе смотрится очередность событий, времена, задержки одного события перед другим и прочее.
Более медленные события: вывод лога в терминал.

_________________
elisey.su


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ] 


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB