неділю, 17 грудня 2017 р.

STM Studio -- монітор змінних STM32

Намагаючись дійти толку із SemiHosting без зневаджувача, натрапив на цікавий інструмент: STM Studio. Не слід плутати із купою інших "студій", це не IDE, це: "run-time variables monitoring and visualization tool for STM32 microcontrollers" -- програма, яка дозволяє інтерактивно спостерігати за змінними програми, залитої в мікроконтролер.
Вона використовує згадуваний тут режим моніторингу, тому теж змінює налаштування відладки MCU, але, принаймні (іноді) очищає їх, на відміну від OpenOCD.
Така можливість корисна тоді, коли зупинка в дебагері -- не варіант. Наприклад, при зневадженні коду SemiHosting ;-). Або коли відбуваються якісь процеси, де паузи -- неприйнятні.  

Чудес від цього, доволі простого, інструменту, очікувати не доводиться, але він корисний -- шкодую, що не знав про нього раніше. Не претендуючи на повноту, коротко глянемо, як його можна використовувати.
Скачати можна на офіційній сторінці. Інсталяція тривіальна. На жаль, доступна ця студія тільки під Windows. Тут: офіційна документація.

Найпростіше використання


Отож, запускаємо студію: 

Додаємо змінні, за якими спостерігатимемо:

New -- дозволить ввести ім'я змінної, її розрядність та адресу в пам'яті (також можна задати колір для подальшого відображення):

Але щоб так зробити, адресу слід знати. Не дуже веселе заняття -- шукати її вручну, по map- та elf-файлах. Існує альтернативний варіант -- імпорт. При цьому, якщо вказати шлях до elf-файла програми (для SW4STM32 -- шукайте файли *.elf в директорії проекту), вона завантажить глобальні та статичні змінні програми та дозволить вибрати, котрі саме імпортувати. 
Потрібен саме elf, при чому, із відладочною інформацією -- щоб вона могла співставити адреси із назвами. 
Обравши, тиснемо кнопку Import:
Зауважте, що можна виконати над змінними найпростіші дії, перш ніж виводити -- див. органи керування праворуч-внизу. 

На жаль, такі важливі змінні, як GPIOA, програма не показує, так само, не вміє зрозуміти конструкцію виду GPIOA->ODR. Хоча, звичайно, ніхто не заважає ввести відповідні адреси вручну. Або, створити чисто відладочні змінні, та у контрольних точках програми зберігати у них значення регістрів:


1
2
3
4
5
6
7
8
9
volatile uint32_t DHCSR_cp = 0;
volatile uint32_t DEMCR_cp = 0;

..................................

   if( !ringbuf_empty(&USB_Buffer) )
   {
    DHCSR_cp = CoreDebug->DHCSR;
    DEMCR_cp = CoreDebug->DEMCR;

Після імпорту:
Тепер слід додати змінні до того чи іншого "представлення" -- View:
Можна це зробити або з контекстного меню, або перетягнувши змінні мишкою.

У VarViewer1 можна обрати діапазон значень змінних для графіку -- lower i upper Value та вказати виводити в шістнадцятковій системі (по замовчуванню -- десяткова). Можна запускати та спостерігати за еволюцією змінних:

Програма може, звичайно, багато більше. За подробицями див. документацію: "Getting started with STM-STUDIO", через обмеження (своїх) ресурсів, лише перерахую деякі ключові:
  • Відображень, Viewer-ів може бути декілька -- клініть по вкладці General в Viewers settings - побачите. При чому, їх можна бачити одночасно.
  • Існує режим Point Viewer, де відображається точка, положення якої задається парою змінних -- перша визначає координату X, друга -- Y.
  • Viewer вміє показувати змінні не тільки лінією (Curve), але і таблицею чи стовпчиковою діаграмою.
  • Є можливість виконувати найпростіші операції над змінними або мінімалістичну їх статистичну обробку:
Вирази. Клікабельно!

Статобробка. Клікабельно.
  • Крім того, що більш важливо, можна задати автомасштабування осей, а смуга прокрутки внизу дозволяє переглянути дані, які вже вийшли з поля зору:
  • Поточні налаштування можна зберегти. Це врятує від повторного введення складних виразів та адрес.
  • Options->Acquisition Settings дозволяє, поміж іншого, обрати файл, куди зберігатимуться значення змінних, за якими спостерігаємо.
Ще раз нагадаю почитати документацію -- там і більше подробиць і скріншоти кращі. На завершення скажу, от не знаю, чи написав би я "Далекомір HC-SR04 -- трасування, додаток", якби на той момент міг скористатися цією програмою... Власний код був значно краще підлаштований під мої задачі, але і на написання його пішло трохи часу.

На разі --

Дякую за увагу!


2 коментарі:

  1. Доброго дня!
    Дуже корисні речі та ще й українською!
    Тільки стартую з stm32, якою ide користуєтесь? CooCox наче уже немає підтримки.
    Дякую.

    ВідповістиВидалити
    Відповіді
    1. Truestudio сейчас бесплатно для STM, она уже им пренадлежит

      Видалити