Flz 0 31 мая, 2013 Опубликовано 31 мая, 2013 · Жалоба Здравствуйте. Пытаюсь совладать с отладчиком 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? Заранее благодарен, за любые советы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 31 мая, 2013 Опубликовано 31 мая, 2013 · Жалоба Читайте доку на отладчик. У меня J-Link, так я тоже года полтора назад воевал с ITM - тогда ничего не вышло, я даже тему создавал по этому вопросу - тишина.... А недавно потребовалось что-то пошаманить с J-Link, я открыл pdf на него - узнал много нового:) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
diwil 0 31 мая, 2013 Опубликовано 31 мая, 2013 · Жалоба это уже было - 1. поискать (хоть по моему нику) здесь как выставлять флажки отладчика в кейле. Не забыть указать правильные частоты. 2. Обновить все st-link'и до последней версии. у меня дискавери L,3,4 - все работают. Так же работают и самодельные платы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flz 0 31 мая, 2013 Опубликовано 31 мая, 2013 · Жалоба 1. поискать (хоть по моему нику) здесь как выставлять флажки отладчика в кейле. Не забыть указать правильные частоты. Я выставляю правильную частоту. Event Counters, Exception Trace, Trace Records и Logic Analyzer у меня работают - а работают они только на правильно выставленной частоте. Меня интересует именно printf отладка. 2. Обновить все st-link'и до последней версии. Сейчас попробую. Сейчас попробую. Не помогло. у меня дискавери L,3,4 - все работают. Может если у вас есть уже проекты keil с использованием printf для отладки - вы могли бы показать его, если вас не затруднит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
diwil 0 31 мая, 2013 Опубликовано 31 мая, 2013 · Жалоба нужно правильно проинициализирова дбг: // ============================================================================ #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"); и терь принтф Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mitsufan 0 31 мая, 2013 Опубликовано 31 мая, 2013 · Жалоба Подставить файл инициализации отладчика "stm32f4xx_swo.ini", чтобы настроить работу SWO. stm32f4xx_swo.txt Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
UniSoft 15 31 мая, 2013 Опубликовано 31 мая, 2013 · Жалоба У Keil есть соответствующий Application Note... по этой теме... http://www.keil.com/appnotes/docs/apnt_230.asp ну и еще можно и этот почитать... http://www.keil.com/appnotes/docs/apnt_197.asp Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SherbinaVitaly 0 17 июля, 2013 Опубликовано 17 июля, 2013 · Жалоба недавно бился над такойже проблемой. у меня все оказалось совсем просто: 1. на платах F3 F4 линия SWO пропущена через перемычку которая по умолчанию не замкнута. для F3 это SB10 а для F4 это SB12 2. из кода добавляем(для кейла): #include <stdio.h> int fputc(int c, FILE *stream) { return(ITM_SendChar(c)); } открываем настройку устанавливаем частоту ядра, разрешаем трассировку и контролируем чтобы стояла галочка на 0 бите. профит. незабываем напаять перемычку. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
koluna 0 26 декабря, 2013 Опубликовано 26 декабря, 2013 · Жалоба недавно бился над такойже проблемой. у меня все оказалось совсем просто: 1. на платах F3 F4 линия SWO пропущена через перемычку которая по умолчанию не замкнута. для F3 это SB10 а для F4 это SB12 2. из кода добавляем(для кейла): Определение "FILE" находится в файле "stdio.h": typedef struct __FILE FILE; А где определение "__FILE"? Кстати, что значат галки "Privilege" в блоке настроек "ITM Stimulus Ports" в Кейле? Зачем указывать частоту ядра? Не будут ли слишком большими расходы на использование printf() при отладке? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 27 декабря, 2013 Опубликовано 27 декабря, 2013 · Жалоба Определение "FILE" находится в файле "stdio.h": typedef struct __FILE FILE; А где определение "__FILE"? в arm-gcc в <sys/reent.h> Не будут ли слишком большими расходы на использование printf() при отладке?Нет не будут. Хотя если у вас загрузка контроллера близка к 100%, то будут.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
koluna 0 27 декабря, 2013 Опубликовано 27 декабря, 2013 · Жалоба в arm-gcc в <sys/reent.h> У меня такого нет :) В Кейле не нашел нигде. Нет не будут. Хотя если у вас загрузка контроллера близка к 100%, то будут.... Меня больше интересовали FLASH и RAM... Насколько я знаю, printf() весьма тяжеловесна, особенно в GCC. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
koluna 0 2 января, 2014 Опубликовано 2 января, 2014 · Жалоба С Кейлом понятно, работает... А, каким образом можно получить информацию с SWO (ST-Link) под Линухом? Как-то через GDB? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 9 января, 2014 Опубликовано 9 января, 2014 · Жалоба Как-то через GDB?Насколько я понял, пока никак. ИМХО это надо OpenOCD допиливать. Буду рад узнать, что ошибаюсь. Меня больше интересовали FLASH и RAM... Насколько я знаю, printf() весьма тяжеловесна, особенно в GCC. Для меня не критично. Попробуйте с таким ключиком: LDFLAGS += --specs=nano.specs ссылка Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
koluna 0 17 января, 2014 Опубликовано 17 января, 2014 · Жалоба Насколько я понял, пока никак. ИМХО это надо OpenOCD допиливать. Буду рад узнать, что ошибаюсь. Т. е., OpenOCD не умеет? Попробуйте с таким ключиком:LDFLAGS += --specs=nano.specs ссылка Нет такого ключа у меня :( Еще вопрос. Почему-то часть отладочных данных теряется, т. е., в окне "Debug (printf) Viewer" присутствуют не все данные... такое ощущение, что часть отладочных пакетов теряется. Вы с таким не сталкивались? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 18 января, 2014 Опубликовано 18 января, 2014 · Жалоба Т. е., OpenOCD не умеет?Насколько я понял, нет. Нет такого ключа у меня :( В этих есть: https://launchpad.net/gcc-arm-embedded http://www.freddiechopin.info/ Еще вопрос. Почему-то часть отладочных данных теряется, т. е., в окне "Debug (printf) Viewer" присутствуют не все данные... такое ощущение, что часть отладочных пакетов теряется. Вы с таким не сталкивались? Что-то было подобное, вылечилось изменением параметров отладочного порта в keil. Дома у меня нет keil'a как доберусь до работы - посмотрю и отпишусь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться