Есть ли способ отправить данные непосредственно на порт JTAG из приложения? (Cortex-M3)
Я использую NXP LPC1769, который содержит Cortex-M3. До сих пор я обращался к нему только через интерфейс JTAG, но теперь я должен сделать это наоборот. ИТ-подпрограмма должна считывать определенные части памяти и немедленно отправлять их на порт JTAG. Есть ли способ сделать это?
* ОБНОВЛЕНИЕ: После нескольких часов исследований я нашел кое-что, что могло бы помочь: Cortex-M3 поддерживает ITM (Instrumentation Trace Macrocell), который может отправлять данные через вывод TDO порта JTAG. Теперь у меня вопрос: как это сделать? Я нашел только специфичные для отладчика приложения ITM, где в моем случае я хочу иметь возможность отправлять конкретные сообщения JTAG (или записывать определенные регистры DP/AP) из запущенного приложения.
1 ответ
Есть несколько способов сделать ввод / вывод хоста через порт JTAG. Первый, к которому я обычно обращаюсь, называется полухостинг. Semihosting использует точки останова процессора для предоставления отлаженной плате ввода-вывода хосту. Механизм объясняется немного подробнее здесь: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0471h/Bgbjjgij.html.
То, как вы можете включить полухостинг в своем отладчике, будет зависеть от того, какой инструмент вы используете. Например, поток по настройке полухостинга в IDC LPCXpresso можно найти здесь: https://www.lpcware.com/content/forum/configure-lpcxpresso-use-semihosting и руководство по GNU Arm Eclipse можно найти здесь.: https://mcuoneclipse.com/2014/09/11/semihosting-with-gnu-arm-embedded-launchpad-and-gnu-arm-eclipse-debug-plugins/.
Недостатком полухостинга является то, что он медленный по сравнению с использованием ITM.
Другой способ, о котором вы упоминаете в своем вопросе, - это использование функциональности ITM (Instrumentation Trace Macrocell). В отличие от полухостинга, ITM может работать, не дожидаясь, пока адаптер JTAG запросит у него данные, если включен вывод SWO или был настроен отдельный выход UART. Как и в случае с полухостингом, детали будут меняться в зависимости от используемых вами инструментов.
Руководство по использованию ITM в качестве стандартного вывода в IDC LPCXpresso можно найти здесь: https://www.lpcware.com/content/faq/lpcxpresso/how-use-itm-printf.