Намагаючись дійти толку із 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 -- трасування, додаток", якби на той момент міг скористатися цією програмою... Власний код був значно краще підлаштований під мої задачі, але і на написання його пішло трохи часу.
На разі --
На разі --
Дякую за увагу!
Доброго дня!
ВідповістиВидалитиДуже корисні речі та ще й українською!
Тільки стартую з stm32, якою ide користуєтесь? CooCox наче уже немає підтримки.
Дякую.
Truestudio сейчас бесплатно для STM, она уже им пренадлежит
Видалити