IAR: использование printf и окна терминала |
Добавил(а) microsin | ||||||
В среде разработки IAR Embedded Workbench существует функция, очень удобная для отладки - окно терминала (Terminal I/O window). Это окно можно открыть из меню View -> Terminal I/O. [printf] В окно терминала с помощью printf можно выводить сообщения в реальном времени, когда программа работает под отладчиком. Также можно передавать в программу ввод пользователя. Чтобы можно было использовать терминал, необходимо слинковать приложение с опцией семихостинга (Semihosted) или контрольных точек IAR. После этого отладчик C-SPY будет перенаправлять stdin, stdout и stderr в окно терминала. Если окно терминала Terminal I/O закрыто, то C-SPY откроет его автоматически, когда требуется ввод, но не для вывода. Применимы следующие возможности при использовании Terminal I/O в реальном времени:
Примечания: (1) ITM расшифровывается как Instrumentation Trace Macrocell [1]. Это специальные аппаратные буферы, предназначенные для обмена данными трассировки. [Вывод в файл лога] Можно настроить вывод сообщений printf в файл лога, для этого есть диалог выбора файла Terminal I/O Log File, доступный во время отладки через меню Debug -> Logging -> Set Terminal I/O Log File. Файл лога в реальном времени можно просматривать командой powershell Get-Content, она работает аналогично утилите tail. powershell Get-Content bin\Debug\TermIO.log -encoding UTF8 -Wait Важное замечание: если проект скомпилирован с поддержкой семихостинга, и в программе есть вызовы printf, которые это используют, то он будет работать только под управлением отладчика! Т. е. если выйдите из отладчика и передерните питание (или сбросите микроконтроллер), то программа зависнет не первом же вызове функции семихостинга (printf). [Ссылки] 1. Instrumentation Trace Macrocell site:developer.arm.com. |