Ярлыки

_GetPixelIndex (1) _SetPixelIndex (1) 3-phase (1) 800x480 (1) АЦП (1) генератор (1) синхронный усилитель (2) структура (1) учебный курс (1) шаговый двигатель (1) ШИМ (2) accert (1) AD7608 (1) AD8429 (1) ADC (5) amplifer (1) arccos (1) arcsin (1) arctang (2) arctg (3) ARM (2) arm_sqrt_q15 (2) assembler (6) ASSERT (1) atan (2) bit (1) Bitband (1) boot (3) bootlloader (1) BUTTON (1) C (5) C# (1) CAN (2) CC2530 (5) CMSIS (4) command (1) Cordic (1) Core746I (1) CubeMX (4) DBGMCU (2) debug (2) debug.ini (1) delegate (1) Digital Potentiometers (1) DigitalPOT (1) Discovery (1) DMA (9) DMA2D (1) DSP (1) DSP library (1) DWT (1) EFM32 (5) EmWin (9) EXTI (1) FATFS (1) FMC (2) FreeRTOS (2) gl868-dual cmux (1) GPIO (4) GUI (2) GUIBuilder (1) GUIDRV_CompactColor_16 (1) HAL (3) HappyGecko (1) Hard Fault (2) heap (1) I2C (1) ID (1) ILI9320 (1) ILI9325 (1) Initialisation (1) InitLTDC (1) Instrumentithion (1) Interrupt (4) ITR (1) JTAG (1) Keil (5) LCDConf (2) lock-in (1) LTCD (1) LTDC (3) main (1) memory (1) MINI_STM32 Revision 01 (1) nBoot0 (1) NVIC (1) OnePulse (2) OSAL (4) pack (1) phase (1) printf (3) Pulse (1) PWM (12) RCC (2) RCR (1) Register (1) RESET (2) RS232 (3) RSS (1) RTC (3) RTOS-RTX (1) RTT (1) RTX-RTOS (1) SDCard (1) SDRAM (6) Segger (2) SPI (3) sqrt (3) SSD1298 (1) SSD1963 (1) Standart Peripherial Library (3) STANDBAY (1) startup (1) STemWin (8) stepper motor (1) STlink (2) STM32 (17) STM32429ZI (1) STM32Cube (1) STM32DBG.IN (1) STM32F (28) STM32F0 (4) STM32F1 (13) STM32F4 (10) STM32F4 Discovery (1) STM32F407ZG (1) STM32F429 (2) STM32F746 (1) STOP (1) string (1) struct (1) SWD (1) SWD JTAG (1) Synhronization (1) system_stm32f4xx.c (1) SystemInit (1) SysTick (1) task (4) telit (1) TIM (27) typedef (1) UART (1) USART (9) viewer (2) WM_PAINT (1) Z-stack (5) ZigBee (5)
Показаны сообщения с ярлыком viewer. Показать все сообщения
Показаны сообщения с ярлыком viewer. Показать все сообщения

четверг, 15 февраля 2018 г.

RTT Viewer

В МК добавляется код, который выделяет в ОЗУ область памяти RTT с заданной структурой. Отладчик J-Link по признакам находит эту область ОЗУ. Через этот кусок памяти МК и РС ведут обмен. Все.

Подключение в коде описано во многих источниках - берем исходники из каталога установки J-Link, например, и пишем у себя #include "SEGGER_RTT.h".

Используем функции RTT.
Особенность: После компиляции имеем в программе один комплект буферов обмена номер 0 с размером по умолчанию.
Этот размер никаким функциям не поддается - устанавливается только RTT директивами по умолчанию #define RTT (CONST). Фирменная функция SEGGER_RTT_ConfigUpBuffer(..) работает, оказывается, только если задаем не нулевой, а 1й, 2й, ... буфер.

Разные буферы Segger предлагает использовать для разделения разнородных потоков данных, текстовый и бинарный потоки, например.
Общую скорость вывода данных несколько буферов, ясно, что никак не увеличивают.

В рамках нулевого буфера текст можно выдавать с 16-тью разными префиксами - для нас это значит по 16 каналам (или виртуальным терминалам).
Каждый канал в программе RTT-Viewer отображается в отдельном окне.
Надо аккуратно смотреть аргументы функций - где-то задается номер буфера данных, где-то номер канала (вирт.терминала).
Чаще всего буфер один - нулевой, каналов несколько.

Подключать программу RTT-Viewer к конкретному камню можно:
- указав его тип (хотя у меня для того же STM32F103RBT6 так не подключается)
- указав регион памяти, как я понял, достаточно указать адресную зону встроенного ОЗУ
- указав точный адрес, если в программе задать точный адрес управляющей структуры RTT
Два последних способа работают для STM32F103RBT6

четверг, 17 апреля 2014 г.

Debug (printf) Viewer

Используя технологию ITM (Instrumentation Trace Macrocell) можно организовать вывод функции printf используя небольшой код, вводимый в
программу пользователя. Для этого в начало файла с функцией main необходимо добавить строку:

#define ITM_Port8(n) (*((volatile unsigned char *)(0xE0000000+4*n))) 

после этого становится возможным вывод переменных с помощью функции printf переменных: 

ITM_Port8(0) = value + 0x30; /* displays value in ASCII */ 
while (ITM_Port8(0) == 0); 
ITM_Port8(0) = 0x0D; 
while (ITM_Port8(0) == 0); 
ITM_Port8(0) = 0x0A;

В настройках отладчика на вкладке Debug-Trace необходимо установить "птичку" для порта ITM0, снять "птичку" с пунктов On Data R/W Sample, EXCTRC и PC Sample. (для снятия излишней нагрузки на SWO port).
После этого в отладчике выбрав на вкладке View/Serial Windows Debug (printf) Viewer после запуска программы в отладчике мы увидим в окне результат работы функции printf.