Ярлыки

_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)

четверг, 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