| Форум РадиоКот 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 & (1 << 24)) == 0) { return; } // // Check if ITM_TRC is enabled // if ((ITM_TCR & (1 << 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/ |
|





