Цитата(jcxz @ Jun 16 2016, 06:26)

Да и как-то пробовал я выводить отладку через J-Link, имхо: при этом нарушается реалтайм работы устройства, такое ощущение, что вывод через отладочный JTAG подтормаживает работу устройства,
по сравнению с обычной работой без лога или с логом в UART. Правда пробовал это не через SWD, а через JTAG. И может что-то не так сделал.
Ну ещё бы. Semihosting - это старый механизм. Довольно гибкий, но крайне медленный:
- софт в контроллере на каждый putchar() выставляет брекпоинт.
- отладчик "ловит" этот брекпоинт, считывает переданный байтик (по определённой комбинации регистров, насколько я помню), отправляет в консоль.
Помимо двунаправленной консоли, можно ещё кучу "плюшек" организовать, но, вроде б, это так никто и не поддержал. Подробности есть на arm.com в разделе "ARM Compiler Software Development Guide" -> "Semihosting".
Но постоянные остановки ядра на пользу реалтайму не идут, конечно же.
SWO - это совсем другая штука. Ядро кладёт байтик в специальный регистр, а дальше "оно само". Но тут канал однонаправленный (впрочем, в 99% случаев отладочный канал такой и нужен).
Цитата(jcxz @ Jun 16 2016, 06:26)

Но, имхо, работа с подключенным эмулятором и без оного - бывает несколько разной и нужно иметь возможность отладки и без подключенного эмулятора.
Это если только энергосбережение какое-то отлаживать. Но там и внешний уарт мешать будет.
А так - SWD и SWO штуки независимые, можно использовать только что-то одно.