>Как вы обходите эти ограничения и отлаживаете сложные участи ПО? Я просто такие не пишу.
Любая сложная хрень дробится на мелкие и понятные. И отлаживаются по частям. Вся периферия отвязана от остального кода и описывается в одном хидере. Соответственно, переход с камня на камень быстр и прост.
JTAG никогда не использовал. Максимум - лог по UART. А обычно светодиода хватает.
Алгоритм такой:
Пишется основная прога. Пофиг где, в МК или на писюке (ну окромя ассемблерокодинга). Отлаживаешь. Как отладил все алгоритмы, начинаешь писать низкоуровневую периферийку чтобы привязать к МК. Пишешь на уровне положить байт в кольцевой буфер. Обработка прерывания проверяется светодиодом на уровне зашёл - зажёг, вышел - погасил (точнее, гляжу осциллографом ну и ясное дело надо понимать, что должно быть на осцилле). Как по частям всё заработало, усё. Аппаратура работает. Потом всё вместе склеиваешь.