реклама на сайте
подробности

 
 
> LPC2364-KEIL-startup.s, Почему в стартапе происходид DataAbort?
Цырен
сообщение Jul 9 2007, 14:15
Сообщение #1


Частый гость
**

Группа: 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
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Цырен   LPC2364-KEIL-startup.s   Jul 9 2007, 14:15
- - dmyl   Посмотрите свежую еррату на чип, раздел МАМ. Прове...   Jul 9 2007, 14:30
- - sensor_ua   Кайл 3.11 или другой?   Jul 9 2007, 18:10
- - Цырен   2 dmyl Ок посмотрю, спасибо. Но ведь МАМ даже не у...   Jul 10 2007, 06:57
|- - dmyl   У меня после загрузки из иара МАМ ставится в 2. На...   Jul 10 2007, 10:06
|- - sensor_ua   Цитата(Цырен @ Jul 10 2007, 09:57) 2 dmyl...   Jul 11 2007, 15:12
- - 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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th August 2025 - 19:27
Рейтинг@Mail.ru


Страница сгенерированна за 0.01367 секунд с 7
ELECTRONIX ©2004-2016