--- In , "Richard Rauscher" <richard@m...>
wrote:
> Looks like you just have the addresses of the
handlers, rather than
> instructions
Thank for replay. But it's don't work.
I have:
37 // Runtime Interrupt Vectors
38 // -------------------------
39 Vectors:
40 0000 18F09FE5 ldr pc, Reset_Addr
41 0004 18F09FE5 ldr pc, Undef_Addr
42 0008 18F09FE5 ldr pc, SWI_Addr
43 000c 18F09FE5 ldr pc, PAbt_Addr
44 0010 18F09FE5 ldr pc, DAbt_Addr
45 0014 0000A0E1 nop
46 0018 F0FF1FE5 ldr pc,[pc,#-0xFF0] // IRQ -
read the VIC
47 001c 18F09FE5 ldr pc,FIQ_Addr // FIQ -
_fiq
48
49 0020 44000000 Reset_Addr: .word Reset_Handler
50 0024 40000000 Undef_Addr: .word Undef_Handler
51 0028 40000000 SWI_Addr: .word SWI_Handler
52 002c 40000000 PAbt_Addr: .word PAbt_Handler
53 0030 40000000 DAbt_Addr: .word DAbt_Handler
54 0034 00000000 .word 0 /* Reserved Address */
55 0038 40000000 IRQ_Addr: .word IRQ_Handler
56 003c 40000000 FIQ_Addr: .word FIQ_Handler
57
58
59 Undef_Handler:
60 SWI_Handler:
61 PAbt_Handler:
62 DAbt_Handler:
63 IRQ_Handler:
64 FIQ_Handler:
65 0040 0E0000EA b . //
undefined
67 .endfunc
68
69
70 // Setup the operating mode & stack.
71 // ---------------------------------
72 .global _start, start, _mainCRTStartup
73 .func _start
74
75 _start:
76 start:
77 _mainCRTStartup:
78 Reset_Handler:
79
80 // Initialize Interrupt System
81 // - Set stack location for each mode
82 // - Leave in System Mode with Interrupts Disabled
83 // -----------
84 0044 98009FE5 ldr r0,=_stack
85 0048 DBF021E3 msr CPSR_c,#MODE_UND|I_BIT|F_BIT //
Undefined Instruction Mode
86 004c 00D0A0E1 mov sp,r0
...
...
...
If I run my program from 0x44 it's work.
If I run from 0 it's don't work.
BUT! If I run from 0x04 or 0x08 it's work! From 0x0C and 0x10 don't
work.
main.elf: file format elf32-littlearm
Disassembly of section .text:
00000000 <_boot>:
0: e59ff018 ldr pc, [pc, #24] ; 20 <Reset_Addr>
4: e59ff018 ldr pc, [pc, #24] ; 24 <Undef_Addr>
8: e59ff018 ldr pc, [pc, #24] ; 28 <SWI_Addr>
c: e59ff018 ldr pc, [pc, #24] ; 2c <PAbt_Addr>
10: e59ff018 ldr pc, [pc, #24] ; 30 <DAbt_Addr>
14: e1a00000 nop (mov r0,r0)
18: e51ffff0 ldr pc, [pc, #-4080] ; fffff030
<_stack+0xbfffeb30>
1c: e59ff018 ldr pc, [pc, #24] ; 3c <FIQ_Addr>
00000020 <Reset_Addr>:
20: 00000044 andeq r0, r0, r4, asr #32
00000024 <Undef_Addr>:
24: 00000040 andeq r0, r0, r0, asr #32
00000028 <SWI_Addr>:
28: 00000040 andeq r0, r0, r0, asr #32
0000002c <PAbt_Addr>:
2c: 00000040 andeq r0, r0, r0, asr #32
00000030 <DAbt_Addr>:
30: 00000040 andeq r0, r0, r0, asr #32
34: 00000000 andeq r0, r0, r0
00000038 <IRQ_Addr>:
38: 00000040 andeq r0, r0, r0, asr #32
0000003c <FIQ_Addr>:
3c: 00000040 andeq r0, r0, r0, asr #32
00000040 <DAbt_Handler>:
40: eafffffe b 40 <DAbt_Handler>
00000044 <_mainCRTStartup>:
44: e59f0098 ldr r0, [pc, #152] ; e4 <.text+0xe4>
48: e321f0db msr CPSR_c, #219 ; 0xdb
4c: e1a0d000 mov sp, r0
50: e2400004 sub r0, r0, #4 ; 0x4
54: e321f0d7 msr CPSR_c, #215 ; 0xd7
58: e1a0d000 mov sp, r0
5c: e2400004 sub r0, r0, #4 ; 0x4
60: e321f0d1 msr CPSR_c, #209 ; 0xd1
64: e1a0d000 mov sp, r0
68: e2400004 sub r0, r0, #4 ; 0x4
6c: e321f0d2 msr CPSR_c, #210 ; 0xd2
70: e1a0d000 mov sp, r0
74: e2400080 sub r0, r0, #128 ; 0x80
78: e321f0d3 msr CPSR_c, #211 ; 0xd3
7c: e1a0d000 mov sp, r0
80: e2400004 sub r0, r0, #4 ; 0x4
84: e321f0df msr CPSR_c, #223 ; 0xdf
In simulator (mVision3) my program working.
> to load the PC with the address. Here's a
snippet of how mine
(working)
> looks:
>
> .global _startup
> .func _startup
> _startup:
>
> # Exception Vectors
> # Mapped to Address 0.
> # Absolute addressing mode must be used.
> # Dummy Handlers are implemented as infinite loops which can be
> modified.
>
> Vectors: LDR PC, Reset_Addr
> LDR PC, Undef_Addr
> LDR PC, SWI_Addr
> LDR PC, PAbt_Addr
> LDR PC, DAbt_Addr
> NOP /* Reserved
> Vector */
> LDR PC,[PC,#-0xFF0]
> LDR PC, FIQ_Addr
>
> Reset_Addr: .word Reset_Handler
> Undef_Addr: .word Undef_Handler
> SWI_Addr: .word SWI_Handler
> PAbt_Addr: .word PAbt_Handler
> DAbt_Addr: .word DAbt_Handler
> .word 0 /* Reserved
> Address */
> IRQ_Addr: .word IRQ_Handler
> FIQ_Addr: .word FIQ_Handler
> ...and the disassembly listing:
> FW.elf: file format elf32-littlearm
>
> Disassembly of section .text:
>
> 00000000 <_startup>:
> 0: e59ff018 ldr pc, [pc, #24] ; 20 <Reset_Addr>
> 4: e59ff018 ldr pc, [pc, #24] ; 24 <Undef_Addr>
> 8: e59ff018 ldr pc, [pc, #24] ; 28 <SWI_Addr>
> c: e59ff018 ldr pc, [pc, #24] ; 2c <PAbt_Addr>
> 10: e59ff018 ldr pc, [pc, #24] ; 30 <DAbt_Addr>
> 14: e1a00000 nop (mov r0,r0)
> 18: e51ffff0 ldr pc, [pc, #-4080] ; fffff030
> <VPB_DIV_ADDR+0x1fe02f30>
> 1c: e59ff018 ldr pc, [pc, #24] ; 3c <FIQ_Addr>
>
> 00000020 <Reset_Addr>:
> 20: 000000a0 andeq r0, r0, r0, lsr #1
>
> 00000024 <Undef_Addr>:
> 24: 00000040 andeq r0, r0, r0, asr #32
>
> 00000028 <SWI_Addr>:
> 28: 00000050 andeq r0, r0, r0, asr r0
>
> 0000002c <PAbt_Addr>:
> 2c: 00000060 andeq r0, r0, r0, rrx
>
> 00000030 <DAbt_Addr>:
> 30: 00000070 andeq r0, r0, r0, ror r0
> 34: 00000000 andeq r0, r0, r0
>
> 00000038 <IRQ_Addr>:
> 38: 00000080 andeq r0, r0, r0, lsl #1
>
> 0000003c <FIQ_Addr>:
> 3c: 00000090 muleq r0, r0, r0
> As an aside, this works with both Keil (windows) and gnu (linux)
build
> environments.
>
> hth,
>
> --rich
>
> -----Original Message-----
> From: dimaissaev [mailto:dimaissaev@y...]
> Sent: Wednesday, December 15, 2004 1:44 AM
> To:
> Subject: [lpc2000] LPC2294 GCC Start
>
> Hello.
>
> I have found that if I (with Philips Utility) say "go from
> addres
> 0x50"
>
> /*
> .text 0x00000000 0x10c crt0.o
> 0x000000ec reset
> 0x00000000 _boot
> 0x00000050 _mainCRTStartup
> 0x000000ec abort
> 0x00000050 _start
> 0x000000ec _reset
> 0x000000ec exit
> 0x00000050 start
> */
>
> everything ok. What the EC address? What that mean?
>
> (I'm use "WinARM")
> Why "go from 0x00 don't work"?
>
> click here
> <http://us.ard.yahoo.com/SIG9a1p115/M)4855.5468653.6549235.
3001176/
>
D=groups/S06554205:HM/EXP03190260/A$55397/R=0/SIG9u9qmi7/
*htt
> p://smallbusiness.yahoo.com/domains/>
>
> <http://us.adserver.yahoo.com/l?M)4855.5468653.6549235.3001176/
D=group
> s/S=:HM/A$55397/randd2678086
> ________________________________
>
> > .
|