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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Keil STM32 Debug (printf) viewer, Вопрос
Нортон
сообщение May 31 2013, 06:10
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 9-04-11
Пользователь №: 64 246



Здравствуйте.

Пытаюсь совладать с отладчиком Keil (v4.7). У меня куча плат Discovery, ну и программатор естественно встроенный в них SWD.

Переменные и память смотрятся, Event Counters, Exception Trace и Trace Records успешно запускаются и работают. Единственное, что не удалось запустить это Debug (Printf) Viewer.

Гуглом пользовался, и пробовал разные варианты - большая их часть сводится к http://armcortexm.blogs.upv.es/stm32f4-dis...viewer-in-keil/.

Но так и не работает у меня этот вывод.

Может, есть какой-то секрет или с помощью SWD на DISCOVERY этого вообще нельзя сделать и нужен какой-нибудь UlinkPro?

Заранее благодарен, за любые советы.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение May 31 2013, 06:31
Сообщение #2


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

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



Читайте доку на отладчик.
У меня J-Link, так я тоже года полтора назад воевал с ITM - тогда ничего не вышло, я даже тему создавал по этому вопросу - тишина....
А недавно потребовалось что-то пошаманить с J-Link, я открыл pdf на него - узнал много новогоsm.gif


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
diwil
сообщение May 31 2013, 08:48
Сообщение #3


Местный
***

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



это уже было -
1. поискать (хоть по моему нику) здесь как выставлять флажки отладчика в кейле. Не забыть указать правильные частоты.
2. Обновить все st-link'и до последней версии.

у меня дискавери L,3,4 - все работают. Так же работают и самодельные платы.
Go to the top of the page
 
+Quote Post
Нортон
сообщение May 31 2013, 09:39
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 9-04-11
Пользователь №: 64 246



Цитата(diwil @ May 31 2013, 12:48) *
1. поискать (хоть по моему нику) здесь как выставлять флажки отладчика в кейле. Не забыть указать правильные частоты.



Я выставляю правильную частоту. Event Counters, Exception Trace, Trace Records и Logic Analyzer у меня работают - а работают они только на правильно выставленной частоте.
Меня интересует именно printf отладка.

Цитата(diwil @ May 31 2013, 12:48) *
2. Обновить все st-link'и до последней версии.


Сейчас попробую.

Цитата(Нортон @ May 31 2013, 13:05) *
Сейчас попробую.

Не помогло.

Цитата(diwil @ May 31 2013, 12:48) *
у меня дискавери L,3,4 - все работают.

Может если у вас есть уже проекты keil с использованием printf для отладки - вы могли бы показать его, если вас не затруднит.
Go to the top of the page
 
+Quote Post
diwil
сообщение May 31 2013, 09:58
Сообщение #5


Местный
***

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



нужно правильно проинициализирова дбг:
CODE

// ============================================================================
#define DWT_CYCCNT *(volatile uint32_t *)0xE0001004
#define DWT_CONTROL *(volatile uint32_t *)0xE0001000
#define SCB_DEMCR *(volatile uint32_t *)0xE000EDFC


static void
DWT_Init()
{
SCB_DEMCR |= 0x01000000;
DWT_CYCCNT = 0;
DWT_CONTROL|= 1; // enable the counter
}

#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; };
FILE __stdout;
FILE __stdin;

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

// In main():

DWT_Init();

printf("Ehlo world!\n");


и терь принтф
Go to the top of the page
 
+Quote Post
Mitsufan
сообщение May 31 2013, 17:45
Сообщение #6


Участник
*

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



Подставить файл инициализации отладчика "stm32f4xx_swo.ini", чтобы настроить работу SWO.
Прикрепленное изображение


Прикрепленные файлы
Прикрепленный файл  stm32f4xx_swo.txt ( 2.03 килобайт ) Кол-во скачиваний: 296
 
Go to the top of the page
 
+Quote Post
UniSoft
сообщение May 31 2013, 20:14
Сообщение #7


Участник
*

Группа: Свой
Сообщений: 68
Регистрация: 7-05-05
Из: China, Shenzhen
Пользователь №: 4 812



У Keil есть соответствующий Application Note... по этой теме...
http://www.keil.com/appnotes/docs/apnt_230.asp
ну и еще можно и этот почитать...
http://www.keil.com/appnotes/docs/apnt_197.asp
Go to the top of the page
 
+Quote Post
SherbinaVitaly
сообщение Jul 17 2013, 11:17
Сообщение #8





Группа: Новичок
Сообщений: 8
Регистрация: 4-09-07
Пользователь №: 30 276



недавно бился над такойже проблемой. у меня все оказалось совсем просто:
1. на платах F3 F4 линия SWO пропущена через перемычку которая по умолчанию не замкнута. для F3 это SB10 а для F4 это SB12
2. из кода добавляем(для кейла):
Код
#include <stdio.h>

int fputc(int c, FILE *stream)
{
   return(ITM_SendChar(c));
}

открываем настройку устанавливаем частоту ядра, разрешаем трассировку и контролируем чтобы стояла галочка на 0 бите.

профит. незабываем напаять перемычку.
Go to the top of the page
 
+Quote Post
koluna
сообщение Dec 26 2013, 16:14
Сообщение #9


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

Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061



Цитата(SherbinaVitaly @ Jul 17 2013, 15:17) *
недавно бился над такойже проблемой. у меня все оказалось совсем просто:
1. на платах F3 F4 линия SWO пропущена через перемычку которая по умолчанию не замкнута. для F3 это SB10 а для F4 это SB12
2. из кода добавляем(для кейла):


Определение "FILE" находится в файле "stdio.h":
Код
typedef struct __FILE FILE;

А где определение "__FILE"?

Кстати, что значат галки "Privilege" в блоке настроек "ITM Stimulus Ports" в Кейле?
Зачем указывать частоту ядра?
Не будут ли слишком большими расходы на использование printf() при отладке?


--------------------
Благодарю заранее!
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Dec 27 2013, 07:09
Сообщение #10


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

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



Цитата(koluna @ Dec 26 2013, 20:14) *
Определение "FILE" находится в файле "stdio.h":
Код
typedef struct __FILE FILE;

А где определение "__FILE"?
в arm-gcc в <sys/reent.h>

Цитата
Не будут ли слишком большими расходы на использование printf() при отладке?
Нет не будут. Хотя если у вас загрузка контроллера близка к 100%, то будут....


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
koluna
сообщение Dec 27 2013, 17:39
Сообщение #11


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

Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061



Цитата(demiurg_spb @ Dec 27 2013, 11:09) *
в arm-gcc в <sys/reent.h>


У меня такого нет sm.gif
В Кейле не нашел нигде.

Цитата
Нет не будут. Хотя если у вас загрузка контроллера близка к 100%, то будут....


Меня больше интересовали FLASH и RAM...
Насколько я знаю, printf() весьма тяжеловесна, особенно в GCC.


--------------------
Благодарю заранее!
Go to the top of the page
 
+Quote Post
koluna
сообщение Jan 2 2014, 11:06
Сообщение #12


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

Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061



С Кейлом понятно, работает...
А, каким образом можно получить информацию с SWO (ST-Link) под Линухом?
Как-то через GDB?


--------------------
Благодарю заранее!
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Jan 9 2014, 06:33
Сообщение #13


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

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



Цитата(koluna @ Jan 2 2014, 15:06) *
Как-то через GDB?
Насколько я понял, пока никак.
ИМХО это надо OpenOCD допиливать.
Буду рад узнать, что ошибаюсь.


Цитата(koluna @ Dec 27 2013, 21:39) *
Меня больше интересовали FLASH и RAM...
Насколько я знаю, printf() весьма тяжеловесна, особенно в GCC.
Для меня не критично.
Попробуйте с таким ключиком:
Код
LDFLAGS += --specs=nano.specs
ссылка


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


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

Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061



Цитата(demiurg_spb @ Jan 9 2014, 10:33) *
Насколько я понял, пока никак.
ИМХО это надо OpenOCD допиливать.
Буду рад узнать, что ошибаюсь.


Т. е., OpenOCD не умеет?

Цитата
Попробуйте с таким ключиком:
Код
LDFLAGS += --specs=nano.specs
ссылка


Нет такого ключа у меня sad.gif

Еще вопрос.
Почему-то часть отладочных данных теряется, т. е., в окне "Debug (printf) Viewer" присутствуют не все данные... такое ощущение, что часть отладочных пакетов теряется.
Вы с таким не сталкивались?


--------------------
Благодарю заранее!
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Jan 18 2014, 07:45
Сообщение #15


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

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



Цитата(koluna @ Jan 17 2014, 20:05) *
Т. е., OpenOCD не умеет?
Насколько я понял, нет.
Цитата
Нет такого ключа у меня sad.gif

В этих есть:
https://launchpad.net/gcc-arm-embedded
http://www.freddiechopin.info/

Цитата
Еще вопрос.
Почему-то часть отладочных данных теряется, т. е., в окне "Debug (printf) Viewer" присутствуют не все данные... такое ощущение, что часть отладочных пакетов теряется.
Вы с таким не сталкивались?
Что-то было подобное, вылечилось изменением параметров отладочного порта в keil.
Дома у меня нет keil'a как доберусь до работы - посмотрю и отпишусь.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post

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

 


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


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