Цитата(sergeeff @ Apr 12 2007, 10:55)

Да дело не в этих процедурах. Скорее всего в startup модуле прописана таблица прерываний в короткой форме, т.е. в виде branch instruction. Но это позволяет адресоваться в пределах 32 Mb.
Надо просто создать эту таблицу в виде load PC instruction:
Vector_Init_Block
LDR pc, Reset_Addr
LDR pc, Undefined_Addr
LDR pc, SVC_Addr
LDR pc, Prefetch_Addr
LDR pc, Abort_Addr
NOP ;Reserved vector
LDR pc, IRQ_Addr
LDR pc, FIQ_Addr
Reset_Addr DCD Start_Boot
Undefined_Addr DCD Undefined_Handler
SVC_Addr DCD SVC_Handler
Prefetch_Addr DCD Prefetch_Handler
Abort_Addr DCD Abort_Handler
DCD 0 ;Reserved vector
IRQ_Addr DCD IRQ_Handler
FIQ_Addr DCD FIQ_Handler
Про это хорошо написано в RealView Compilation Tools Developer Guide (ARM DUI 0203G)
на сайте ARM'a.
Сделал всё по Вашей рекомендации и согласно документу - не помогло.
Цитата(Сергей Борщ @ Apr 12 2007, 11:22)

Был в похожей ситуации. Вкратце так: загрузчик настраивает контроллер прерываний по-своему, отрабатывает, передает управление основной программе. Основная программа, надеясь на настройки контроллера прерываний по умолчанию прописывает только свои значения и разрешает прерывания. Срабатывает какое-то из непереназначенных прерываний загрузчика и программа улетает в несуществующий обработчик. Здесь может быть что-то похожее?
При старте ядро успевает выполнить несколько инструкций из флеша до того, как управление перехватит JTAG и остановит его. За это время старый код вполне мог успеть проинициализировать контроллер прерываний. Может поэтому под отладчиком и работает?
При выходе из-загрузчика там запрещаются все прерывания, а при входе в основную программу вектора переназначаются...
Вообще, попробовал написать простейший проект с мигающим светодиодом - даже с ним сложности возникли - нестабильно стартует и всё. Под дебагером работает устойчиво. Может в загрузчике где-то проблема. Не понятно в какую сторону копать...