|
LPC2364-KEIL-startup.s, Почему в стартапе происходид DataAbort? |
|
|
|
Jul 9 2007, 14:15
|

Частый гость
 
Группа: Validating
Сообщений: 184
Регистрация: 26-06-07
Из: Санкт-Петербург
Пользователь №: 28 714

|
Вообщем, стартап код начинается так: Reset LDR PC, ResetAddr (1*) LDR PC, UndefinedAddr LDR PC, SWI_Addr LDR PC, PrefetchAddr LDR PC, DataAbortAddr (2*) DCD 0xb9205f80 ;DCD 0xb9206e50 LDR PC, [PC, #-0x120] ; pc <- VICVectAddr using pc relative addressing (NEW) LDR PC, FIQ_Addr
ResetAddr DCD ResetInit UndefinedAddr DCD Undefined SWI_Addr DCD SWInterrupt PrefetchAddr DCD PrefetchAbort DataAbortAddr DCD DataAbort DCD 0 IRQ_Addr DCD 0 FIQ_Addr DCD FIQ_Exception
При дебагинге через JTAG процессор переходит по адресу 1* ResetAddr. В ней происходит следующее (инициализация стэков, инициализация системной периферии и вваливание в основной код):
ResetInit BL InitStack ;Initialize the stack BL TargetResetInit ;Initialize the target board B __main ;Jump to the entry point of C program
ПРОБЛЕМА: Процессор после обработки InitStack входит в режим DataAbort и переходит по метке 2* DataAbortAddr в соответствующий обработчик, где процессор ожидает вечный цикл. При этом PC успевает перейти на метку(функцию) TargetResetInit и прямо в начале этой функции проц уходит в режим DataAbort. Последнее понятно почему - скорее всего конвееризация обработки команд. Что не так с InitStack?
InitStack MOV R0, LR ;Build the SVC stack MSR CPSR_c, #SVC32Mode LDR SP, =StackSvc (размер 64*4 слов) ;Build the IRQ stack MSR CPSR_c, #IRQ32Mode LDR SP, =StackIrq (размер 256*4 слов) ;Build the FIQ stack MSR CPSR_c, #FIQ32Mode LDR SP, =StackFiq (размер 64*4 слов) ;Build the DATAABORT stack MSR CPSR_c, #ABT32Mode LDR SP, =StackAbt (размер 64*4 слов) ;Build the UDF stack MSR CPSR_c, #UDF32Mode LDR SP, =StackUnd (размер 64*4 слов) ;Build the SYS stack MSR CPSR_c, #SYS32Mode LDR SP, =StackUsr (размер 1024*4 слов) !!!!!!!!!!!!!!!! <- может слишком большой?
MOV PC, R0
|
|
|
|
|
 |
Сообщений в этой теме
Цырен LPC2364-KEIL-startup.s Jul 9 2007, 14:15 dmyl Посмотрите свежую еррату на чип, раздел МАМ.
Прове... Jul 9 2007, 14:30 sensor_ua Кайл 3.11 или другой? Jul 9 2007, 18:10 dmyl У меня после загрузки из иара МАМ ставится в 2. На... Jul 10 2007, 10:06 Andy Mozzhevilov а если пошагово выполнять код, то все нормально ил... Jul 10 2007, 11:01 Цырен 2 Andy Mozzhevilov
Помоему, действительно процу п... Jul 11 2007, 10:17  Andy Mozzhevilov Цитата(Цырен @ Jul 11 2007, 16:17) 2 Andy... Jul 11 2007, 10:41  a3r3 Цитата(Цырен @ Jul 11 2007, 14:17) ...
0x... Jul 11 2007, 10:55   Юрий Санвальд Цитата(a3r3 @ Jul 11 2007, 14:55) Это пер... Jul 11 2007, 12:47    a3r3 Цитата(Юрий Санвальд @ Jul 11 2007, 16:47... Jul 12 2007, 10:50 Цырен Действительно, в стэк-поинтере адрес, который вооб... Jul 11 2007, 13:35 Сергей Борщ Цитата(Цырен @ Jul 11 2007, 16:35) спрошу... Jul 11 2007, 14:01 Цырен Кажецца я всосал!!!
Дело в том, что ко... Jul 12 2007, 08:02 Сергей Борщ Цитата(Цырен @ Jul 12 2007, 11:02) но инт... Jul 12 2007, 10:27
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|