Вывод отладочной информации SWO в среде IAR и KEIL
Микроконтроллеры STM32 имеют возможность вывода отладочной информации через специализированный вывод Serial Wire Output (SWO) программного интерфейса SWD, что не требует применения дополнительных разъемов на плате и позволяет осуществить однонаправленную передачу данных от микроконтроллера к программе отладчика.
Опция позволяет начать вывод сообщений, используя всего одну встроенную команду - «printf», обеспечивая при этом малые нагрузки на ядро процессора.
Для применения SWO в среде IAR Embedded Workbench необходимо вначале программы добавить заголовочный файл командой #include <stdio.h> и выполнить следующие действия:
1. В меню основные опции, выбрать - Semihosted, Via SWO
2. В меню программатор, указать частоту работы микроконтроллера - SYSCLK(MHZ)
3. Подключить файл - #include <stdio.h>
4. В тексте программы разместить выражение вида - printf("Text\n\r")
5. Откомпилировать код и запустить процесс отладки - Download and debug
6. Выбрать в меню – View/Terminal I/O
7. Для начала процесса отладки и просмотра сообщений в окне терминала нажать - Go
Сообщения можно просматривать не только и в режиме отладчика, но и в обычном режиме выполнения программы в микроконтроллере с помощью внешних программ, например - STM32 ST-LINK Utility. Для настройки программы выберите - ST-link/Printf via SWO viewer и укажите частоту – System clock (Hz).
Вывод сообщений SWO можно выполнить и в среде Keil µVision, для этого потребуется выполнение следующих действий:
1.Перед функцией main необходимо разместить код
#include <stdio.h>
#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);
ITM_Port8(0) = ch;
}
return(ch);
}
2. В программе main разместить команду - printf("Text\n\r")
3. Настроить программатор-отладчик в соответствии с настройками
3. Запустить процесс отладки – Start/stop Debag Session
4. Выбрать в меню - View/Serial Windows/Debug printf() Viewer
5. Нажать - Run
После чего можно закрыть среду отладки, запустить STM32 ST-LINK Utility и наблюдать за автономным выполнением кода программы в устройстве.
Следует отметить, что вывод информации SWO имеет аппаратную поддержку ядра Cortex-M3/M4, что требует минимальных затрат ресурсов и может быть наиболее востребовано при получении данных от микроконтроллера, работающего в условиях крайне низкого энергопотребления. Практически, при написании статьи, данная возможность была опробована на серии STM32Lxx.
Дополнительную информацию о микроконтроллерах STM32 можно получить на сайте компании STMicroelectronics.
Получить более подробную информацию по продукции STMicroelectronics вы можете, обратившись:
E-mail:Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.
Телефон: (343) 372-92-30