Цитата(IgorMarx @ Apr 17 2009, 04:05)

Здравствуйте.
Во-первых, при остановке по брейкпоинту или ещё как программисты любят наблюдать вкладки периферии и Watch. Я тоже. Не не забывайте, что содержимое этой вкладки, которую вам показывает дебаггер после бряка, он (дебаггер) достаёт через JTAG. Это значит, что он заставляет ядро процессора лезть и перечитывать всю периферию, которая отображается в отладчике, включая панель Watch. Как вы думаете, что будет, если процессор покажет вам состояние, скажем, регистра чтения FIFO, или VICVectAddr? В первом случае ваша программа после продолжения выполнения может эти данные уже не прочитать. Во втором случае ситуация может оказаться ещё интереснее: внутренняя логика VIC управляется чтением и записью будет переключена чтением этого регистра, что должно быть сделано в прерывании, и чтобы сбросить логику, нужно опять же выполнить запись в этот регистр, что должно быть сделано в последних инструкциях обработчика.
Отсюда вывод: при остановке в прерывании у вас НЕ ДОЛЖНЫ ОТОБРАЖАТЬСЯ в отладчике как либо любые регистры, чтение которых меняет логику работы периферии.
Это не верно, по крайней мере в общем случае. Если это так для ЛПЦ, то это очень странно. Механизм JTAG не использует никакие функции ядра. Это соверщенно независимая система. О том что какой-то регистр бы прочитан через JTAG, ядро узнать никак не может.
Другое дело что если вы пишете в регистр который управляется записью или чтением, то опять таки это не тоже самое, как если бы ядро его записало. В этом случае возможны как раз серьезные глюки, в зависимости от того, как устроен процессор. Что вы и наблюдаете. Кстати, а зачем было подвергать прогрмамму такому издевательству -- сбрасывать прерывание?