|
Засёк, что проц входит в ДАТА АБОРТ режим, из-за того что при возникновении прерывания указатель стека указывает на несуществующий адрес. Но вот где указатель стэка мог съехать на какое-то левое значение не могу понять. В начале я его инициализирую, записываю корректный адрес. По ходу выполнения программы - останавливаю программу - указатель правильный. Как только прерывание происходит - первая же команда прерывания (STMDB SP, {...}) вызывает Data Abort, потому что стек-пойнтер указывает чёрт знает куда...
Вот. может есть у кого мысли почему стэк-пойнтер неправильный? И еще, вроде в описании написано, что для каждого режима свой стек-пойнтер. Скажите, я правильно его инициализирую: перехожу в режим IRQ, инициализирую стек-пойнтер, возвращаюсь в режим USR.
И для господина Ы: в ИАРе отлаживаю тоже из флеши, и таких глюков нет. Более того, как я уже говорил, можно после отладки в ИАРе, не отключая питания, вытащить разъем JTAG'а и прерывание будет нормально работать, причём даже хардварный резет не портит дело.
Всем спасибо, особенно г-ну Ы за отзывчивость.
E-mail: info@telesys.ru