Hi,
I think that the problem is at the stack initialization. I
disassemble the code at __wake_up and the address that generates the data
abort ...
0x00012568 E1A0C00D MOV R12,R13
0x0001256C E92DDFF0 STMDB R13!,{R4-R12,R14-PC}
0x00012570 E24CB004 SUB R11,R12,#0x00000004
0x00012574 E3500000 CMP R0,#0x00000000
0x00012578 E24DD004 SUB R13,R13,#0x00000004
0x0001257C E50B102C STR R1,[R11,#-0x002C]
0x00012580 0A000031 BEQ 0x0001264C
0x00012584 E10F8000 MRS R8,CPSR
0x00012588 E3883080 ORR R3,R8,#0x00000080
0x0001258C E121F003 MSR CPSR_c,R3
0x00012590 E1A06002 MOV R6,R2
0x00012594 E5B04004 LDR R4,[R0,#0x0004]!
0x00012598 E1A03000 MOV R3,R0
0x0001259C E1540003 CMP R4,R3
0x000125A0 E1A09003 MOV R9,R3
0x000125A4 0A000024 BEQ 0x0001263C
0x000125A8 E59F7094 LDR R7,[PC,#0x0094]
0x000125AC E59FA094 LDR R10,[PC,#0x0094]
0x000125B0 E5140004 LDR R0,[R4,#-0x0004] <----------- DATA ABORT
R4=0XE597FF018
0x000125B4 E51B202C LDR R2,[R11,#-0x002C]
0x000125B8 E5903000 LDR R3,[R0]
0x000125BC E1130002 TST R3,R2
0x000125C0 0A00001A BEQ 0x00012630
0x000125C4 E3A02000 MOV R2,#0x00000000
0x000125C8 E10F5000 MRS R5,CPSR
0x000125CC E3853080 ORR R3,R5,#0x00000080
0x000125D0 E121F003 MSR CPSR_c,R3
0x000125D4 E5802000 STR R2,[R0]
0x000125D8 E590303C LDR R3,[R0,#0x003C]
0x000125DC E1530002 CMP R3,R2
0x000125E0 1A00000A BNE 0x00012610
0x000125E4 E5971004 LDR R1,[R7,#0x0004]
0x000125E8 E280203C ADD R2,R0,#0x0000003C
0x000125EC E5872004 STR R2,[R7,#0x0004]
0x000125F0 E580703C STR R7,[R0,#0x003C]
0x000125F4 E5821004 STR R1,[R2,#0x0004]
0x000125F8 E5812000 STR R2,[R1]
0x000125FC E59A3000 LDR R3,[R10]
0x00012600 E2833001 ADD R3,R3,#0x00000001
0x00012604 E58A3000 STR R3,[R10]
0x00012608 EBFFFE60 BL 0x00011F90
0x0001260C E3A02001 MOV R2,#0x00000001
0x00012610 E121F005 MSR CPSR_c,R5
0x00012614 E3520000 CMP R2,#0x00000000
0x00012618 0A000004 BEQ 0x00012630
0x0001261C E5143008 LDR R3,[R4,#-0x0008]
0x00012620 E3130001 TST R3,#0x00000001
0x00012624 0A000001 BEQ 0x00012630
0x00012628 E2566001 SUBS R6,R6,#0x00000001
0x0001262C 0A000002 BEQ 0x0001263C
0x00012630 E5944000 LDR R4,[R4] <--------- DATA ABORT R4=0XE597FF018
0x00012634 E1540009 CMP R4,R9
0x00012638 1AFFFFDC BNE 0x000125B0
0x0001263C E121F008 MSR CPSR_c,R8
0x00012640 EA000001 B 0x0001264C
0x00012644 022EB344 EOREQ R11,R14,#0x10000001
0x00012648 022F30E0 EOREQ R3,PC,#0x000000E0
0x0001264C E91BAFF0 LDMDB R11,{R4-R11,R13,PC}
0x00012650 E1A0C00D MOV R12,R13
Is the value of R4 the stack pointer register? the value of R4 in two cases
is 0xE97FF018.
It's the problem in the head-armv.S ?
Thanks
-----Mensaje original-----
De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
En nombre de rflores
Enviado el: miércoles, 14 de febrero de 2007 13:38
Para: 'uClinux development list'
Asunto: RE: [uClinux-dev] uClinux on AT91 (Data abort in __wake_up)
Hi Erwin,
Following your advise I have programmed my own bootloader in order
to trace the "data abort exception" when running uClinux.
The address that contains the instructions that cause the data abort
are:
0x022125B0 and 0x02212630, the data abort is generated
continuously by the instructions located in these addresses.
These addresses are in __wake_up (I attach the system.map).
Any suggestions about the error?, what source code can I check out?
Thanks, Ramón
-----Mensaje original-----
De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
En nombre de rflores
Enviado el: martes, 13 de febrero de 2007 11:48
Para: 'uClinux development list'
Asunto: RE: [uClinux-dev] uClinux on AT91
OK, thanks Erwin,
How I can debug the kernel? Which debugger I can use?
Thanks, Ramón
-----Mensaje original-----
De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
En nombre de Erwin Authried
Enviado el: lunes, 12 de febrero de 2007 16:55
Para: uClinux development list
Asunto: Re: [uClinux-dev] uClinux on AT91
Am Montag, den 12.02.2007, 15:09 +0100 schrieb rflores:
> RedBoot> go 0x02200000
>
>
>
> But in the ARM ocuurs a Data Abort Exception.
>
>
>
> ¿Whats wrong? ¿ That other parameters I must change to run uClinux?
>
there can be 1000 reasons for an exception, without any detail it is
impossible to figure out the reason. You have to do some debugging to
see what happens. If you can figure out the address of the exception,
look into System.map where that happens.
Regards,
Erwin
_______________________________________________
uClinux-dev mailing list
[email protected]
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by [email protected]
To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev
_______________________________________________
uClinux-dev mailing list
[email protected]
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by [email protected]
To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev
_______________________________________________
uClinux-dev mailing list
[email protected]
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by [email protected]
To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev