Например TDA7294

Форум РадиоКот :: Просмотр темы - Вывод через SWO
Форум РадиоКот
https://radiokot.ru/forum/

Вывод через SWO
https://radiokot.ru/forum/viewtopic.php?f=59&t=91518
Страница 1 из 1

Автор:  dosikus [ Пн июл 01, 2013 15:07:21 ]
Заголовок сообщения:  Вывод через SWO

Есть хорошая фича у ARM - SWO .
Минимум как можно использовать -это вывод строк .
Подключаем в своем проекте.

swo.h
Спойлер
Код:
 
#ifndef _SWO_H       
#define _SWO_H  



/***********************************************************************************
*
* Prototypes (to be placed in a header file such as SWO.h)
*/
void SWO_PrintChar (char c);
void SWO_PrintString(const char *s);

#endif
 


swo.c
Спойлер
Код:
/***********************************************************************************
*
*
* Defines for Cortex-M debug unit
*/
#define ITM_STIM_U32 (*(volatile unsigned int*)0xE0000000) // STIM word acces
#define ITM_STIM_U8 (*(volatile char*)0xE0000000) // STIM byte acces 
#define ITM_ENA (*(volatile unsigned int*)0xE0000E00) // ITM Enable
#define ITM_TCR (*(volatile unsigned int*)0xE0000E80) // ITM Trace Control Reg.
#define DHCSR (*(volatile unsigned int*)0xE000EDF0) // Debug register
#define DEMCR (*(volatile unsigned int*)0xE000EDFC) // Debug register
/************************************************************************************
*
* Function description
* Prints a character to the ITM_STIM register in order to provide data for SWO
*/
void SWO_PrintChar(char c) {
//
// Check if SWO is set up. If it is not, return to avoid that a program
// hangs if no debugger is connected.
//
//
// Check if DEBUGEN in DHCSR is set
//
if ((DHCSR & 1)!= 1) {
return;
}
//
// Check if TRACENA in DEMCR is set
//
if ((DEMCR & (<< 24)) == 0) {
return;
}
//
// Check if ITM_TRC is enabled
//
if ((ITM_TCR & (<< 22)) == 1) {
return;
}
//
// Check if stimulus port 0 is enabled
//
if ((ITM_ENA & 1) == 0) {
return;
}
//
// Wait until STIMx is ready to accept at least 1 word
//
while ((ITM_STIM_U8 & 1) == 0);

ITM_STIM_U8 = c;
}
/************************************************************************************
*
* SWO_PrintString
*
* Function description
* Prints a string via SWO
*
*/
void SWO_PrintString(const char *s) {
//
// Print out character per character
//
while (*s) {
SWO_PrintChar(*s++);
}
}


Подключаем выводы SWO таргета и JLink .
Для STM32F103 - PB3 , JLink - 13pin .

Изображение
Изображение
Изображение



Запускаем JLink SWO Viewer
Пользуем...


Изображение

Автор:  balmer [ Пн июл 01, 2013 19:12:42 ]
Заголовок сообщения:  Re: Вывод через SWO

Есть еще у ARM другая фича, называется semihosting. Она работает через JTAG или SWD.

Автор:  dosikus [ Ср ноя 20, 2013 23:19:46 ]
Заголовок сообщения:  Re: Вывод через SWO

dosikus писал(а):

Запускаем JLink SWO Viewer
Пользуем...


Для особо пытливо_щепетильных пионЭров дополняю :

Скрины хоть и с Eclipse но работает и в Keil и Iar .
Инфа честно скрадена с мануала Segger ...

Автор:  Vipper [ Вс мар 30, 2014 19:43:37 ]
Заголовок сообщения:  Re: Вывод через SWO

А объясните, пожалуйста, еще раз, что такое SWO?
Я правильно понимаю, что это типа одностороннего UART, который работает только через подключенный программатор?

И заодно, объясните, зачем нужен вывод в программаторе TRST, если запросто можно обойтись и без него?

Автор:  Vipper [ Пн апр 14, 2014 00:32:00 ]
Заголовок сообщения:  Re: Вывод через SWO

Что, никто не знает ответа на мой вопрос?

Автор:  dosikus [ Пн апр 14, 2014 20:34:49 ]
Заголовок сообщения:  Re: Вывод через SWO

Все ждут когда вы научитесь читать...

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/