реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Возможно ли отладка в Keil по SWO
MK2
сообщение Apr 30 2012, 11:46
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 202
Регистрация: 30-10-10
Пользователь №: 60 535



Наткнулся в сети на вот эти документы
http://www.keil.com/download/files/labst.pdf
понравились прикольные плюшки с logic analazer и Trace Records
в наличии камень F407, отладчик st-link V2 и Keil 4.50
У ст-линка есть SWO. Решил попробывать это все у себя реализовать: поставил в настройках St-link Debugger и enable tracing (как на изображениях ниже)
Прикрепленное изображение

Прикрепленное изображение

Прикрепленное изображение

... ничего так и не получилось ( - пустые) и главное не понятно как printf() через SWO отправлять...
Такой вопрос возможно ли осуществить продвинутую отладку в кейл с помощью ст-линк или все-таки u-link потребуется? Кто-нибудь пытался такое осуществить
Гугл не дал результатов.
Go to the top of the page
 
+Quote Post
Mitsufan
сообщение Apr 30 2012, 18:03
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 13-03-07
Пользователь №: 26 123



Отладка с помощью ST-Link/V2 в Keil через SWO уже работает.

1. Подставить файл инициализации отладчика "stm32f4xx_swo.ini", чтобы настроить работу SWO. Файл искать в примерах keil\arm\boards\st\stm3240g-eval.

2. Чтобы заработал printf() через ITM (в окно Debug Viewer) нужно переопределить fputs() в ITM_SendChar(). Там же в примерах есть файл retarget.c. На закладке Trace нужно снять галку Privelege/Port 7..0 - printf() работает через порт ITM0. И вообще для printf() достаточно только одной галки Enable/Port0, лишней информацией можно перегрузить сигнал SWO.

Вот здесь об этом подробнее: STMicroelectronics STM32: Cortex-M4 Lab


Сообщение отредактировал Mitsufan - Apr 30 2012, 18:16
Go to the top of the page
 
+Quote Post
MK2
сообщение Apr 30 2012, 22:08
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 202
Регистрация: 30-10-10
Пользователь №: 60 535



Спасибо за наводку. Вот тут нашел про ITM регистры http://www.keil.com/support/man/docs/ulink2/ulink2_tr..
Сделал как сказали... пропала кнопка "Trace Records Window" sm.gif Logic Analyzer стал писать
Прикрепленное изображение
C какой версии Кейл поддерживает SWO в St-link?
В лабораторной STMicroelectronics STM32: Cortex-M4 Lab говорится об её отсутствии... версия 4.22
Там же говорят что надо внимательно отнестись к тактированию... из-за него могут быть ошибки, что же, наступят будни надо будет на осциле внимательно тайминги проверить
Кстати, на счет них. Где задается\определяется\посмотреть_можно скорость отладки, ну допустим хотя бы для того же Logic Analyzer
на вкладке Debug cледуюшие опции установлены:
Прикрепленное изображение
а на Trace следующие:
Прикрепленное изображение
причем если снять autodetect то можно любой делитель установить и получить любую частоту (правда не понятно чего). не может ли здесь крыться ошибка? для Timestamp тоже непонятно для чего выставляешь делитель
сайт кейла на счет Restriction'ов упорно молчит
Go to the top of the page
 
+Quote Post
Mitsufan
сообщение May 1 2012, 09:12
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 13-03-07
Пользователь №: 26 123



Поддержка SWO в Keil для stlink появилась в 4.50. Настройка совместима с ulink, поэтому все что описано в лабораторной для ulink подходит теперь и stlink. Вот выдержка из релиза:

For backward compability of projects the old STLink Debugger driver has been marked as deprecated. Please update your projects to the version STLink Debugger. The new STLink Debugger features and configuration dialog matches ULink2. In particular Serial Wire Output is now supported.

Для работы Trace нужно открывать дополнительные порты ITM, порт ITM0 только для printf(). На 12 странице лабораторной есть нужная картинка. Вообще, там все очень хорошо расписано.
Go to the top of the page
 
+Quote Post
esaulenka
сообщение May 15 2012, 17:47
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Ура! У меня наконец дошли руки попробовать SWV.
printf работает просто замечательно (быстро и не жрёт ком-порт)!

Только такой вопрос: вывод этого ITM Viewer в файл можно сохранить? Даже выделить, блин, нельзя...
Очень хочется цифирь, что оттуда лезет, поанализировать...

Использую Keil3 (как-то так сложилось), но по такому случаю могу перейти и на Keil4.


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
diwil
сообщение May 16 2012, 07:51
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 366
Регистрация: 5-09-06
Из: Санкт-Петербург
Пользователь №: 20 107



Цитата(esaulenka @ May 15 2012, 21:47) *
Ура! У меня наконец дошли руки попробовать SWV.
printf работает просто замечательно (быстро и не жрёт ком-порт)!

Только такой вопрос: вывод этого ITM Viewer в файл можно сохранить? Даже выделить, блин, нельзя...
Очень хочется цифирь, что оттуда лезет, поанализировать...

Использую Keil3 (как-то так сложилось), но по такому случаю могу перейти и на Keil4.


А вот у меня не получается...
stm32f4-discovery.

Я объявляю:


#define ITM_Port8(n) (*((volatile unsigned char *)(0xE0000000+4*n)))
#define ITM_Port16(n) (*((volatile unsigned short*)(0xE0000000+4*n)))
#define ITM_Port32(n) (*((volatile unsigned long *)(0xE0000000+4*n)))

#define DEMCR (*((volatile unsigned long *)(0xE000EDFC)))
#define TRCENA 0x01000000

struct __FILE { int handle; /* Add whatever needed */ };
FILE __stdout;
FILE __stdin;

int fputc(int ch, FILE *f) {
if (DEMCR & TRCENA) {
while (ITM_Port32(0) == 0);
ITM_Port8(0) = ch;
}
return(ch);
}



далее, если в коде ставлю printf(), то у кейла 4.53 крышу сносит напрочь! он перестает видеть breakpoints, у него становится совершенно не отслеживаемая последовательность выполнения действий.

Что может это быть?
Go to the top of the page
 
+Quote Post
esaulenka
сообщение May 16 2012, 08:42
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Цитата
далее, если в коде ставлю printf(), то у кейла 4.53 крышу сносит напрочь!

Это какая-то странная фича библиотек - консоль там организована через JTAG (с помощью обработчика, который вешается на SWI).
Как заставить её работать, я не знаю. Отключается это безобразие добавлением строки в исходник:
#pragma import(__use_no_semihosting_swi)

А вообще - заставили бы для начала printf'ы в UART выводить. Оно роднее :-)


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
diwil
сообщение May 16 2012, 08:51
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 366
Регистрация: 5-09-06
Из: Санкт-Петербург
Пользователь №: 20 107



Цитата(esaulenka @ May 16 2012, 12:42) *
А вообще - заставили бы для начала printf'ы в UART выводить. Оно роднее :-)



Неееее !!!!
у меня и в уарты лезит и через ЮСБ тоже передается...

оно, после часа танцев с бубном, ЗАРАБОТАЛО!
заработали принтфы, бряки, вотчи и даже логический анализатор!

чему я безумственно рад...
Go to the top of the page
 
+Quote Post
MK2
сообщение May 28 2012, 11:02
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 202
Регистрация: 30-10-10
Пользователь №: 60 535



diwil, не могли бы вы выложить скрин как вы настроили дебагер в кейле для 4-ого дискавери?

Сообщение отредактировал MK2 - May 28 2012, 11:03
Go to the top of the page
 
+Quote Post
diwil
сообщение May 28 2012, 12:35
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 366
Регистрация: 5-09-06
Из: Санкт-Петербург
Пользователь №: 20 107



Цитата(MK2 @ May 28 2012, 15:02) *
diwil, не могли бы вы выложить скрин как вы настроили дебагер в кейле для 4-ого дискавери?


да, вот настройки - опции отладки

Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Allregia
сообщение May 30 2012, 10:18
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Коллеги, у меня та-же фигня, только не с ST-Link а с J-Link.
Плата своя, рабочая, проц 407VGT, вот только с отладкой через Debug (printf) Viewer не получается.

Код стандартный:
Код
#define ITM_Port8(n)    (*((volatile unsigned char *)(0xE0000000+4*n)))
#define ITM_Port16(n)   (*((volatile unsigned short*)(0xE0000000+4*n)))
#define ITM_Port32(n)   (*((volatile unsigned long *)(0xE0000000+4*n)))

#define DEMCR           (*((volatile unsigned long *)(0xE000EDFC)))
#define TRCENA          0x01000000

struct __FILE { int handle; /* Add whatever you need here */ };
FILE __stdout;
FILE __stdin;

int fputc(int ch, FILE *f)
{
  if (DEMCR & TRCENA) {
    while (ITM_Port32(0) == 0);   <<<<<<<<<<<<<<  ВОТ ТУТА ОНО ВИСНЕТ, если включен trace
    ITM_Port8(0) = ch;
  }
  return (ch);
}


Keil 4.22a

P.S. Что-то мне как-то стремно на более новые перелазить, да и большинство готовых и сопровождаемых проектов пока под lpc1768.
Говорят в более новых глюков много, или уже пора?

Сообщение отредактировал IgorKossak - Jun 1 2012, 09:35
Причина редактирования: поднятие темы запрещено правилами
Go to the top of the page
 
+Quote Post
Allregia
сообщение Jun 2 2012, 07:57
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



И еще один прикол - на макетной плате с 407-м оторвался конденсатор на 73-й ножке.
После припайки его обратно процессор прекрасно работает с последней зашитой в него программой, но зашить (JLink в SWD) в него другую не получается - "Cannot Erase". Дебаг поняно дело тоже не работает.
Придется завтра перепаивать чип.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Jun 2 2012, 08:44
Сообщение #13


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(Allregia @ May 30 2012, 13:18) *
Коллеги, у меня та-же фигня, только не с ST-Link а с J-Link.
У меня сложилось впечатление, что с J-Link эта фича не работает. Я тоже попрыгал с бубном - результат нулевой.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
vlad_new
сообщение Jun 2 2012, 17:51
Сообщение #14


Местный
***

Группа: Участник
Сообщений: 218
Регистрация: 24-06-10
Пользователь №: 58 127



Цитата
но зашить (JLink в SWD) в него другую не получается

Странно. Должен был просто затереть кусок программы при подключении дебагера. А раз прога все равно работает, то скорее всего
либо накрылись лапы SWD либо при запуске проца, программа, сразу же запрещает режим отладки.
Вообще в таких ситуациях надо включить проц в режим BOOT и тогда уже должен появиться доступ через дебагер по SWD.

Go to the top of the page
 
+Quote Post
Allregia
сообщение Jun 2 2012, 21:09
Сообщение #15


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Цитата(vlad_new @ Jun 2 2012, 19:51) *
Странно. Должен был просто затереть кусок программы при подключении дебагера.


Так он же пишет что не может стереть.
Что при Load, что при Debug.

Цитата
А раз прога все равно работает, то скорее всего либо накрылись лапы SWD


JLink по SWD при этом проц видит и правильно определяет.

Цитата
либо при запуске проца, программа, сразу же запрещает режим отладки.
Да нет, там ничего такого нет, в момент аварии была зашита простенькая тестовая программка.
Цитата
Вообще в таких ситуациях надо включить проц в режим BOOT и тогда уже должен появиться доступ через дебагер по SWD.


В какой именно режим? У меня boot1 и boot0 сидят на 0.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 06:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01517 секунд с 7
ELECTRONIX ©2004-2016