- 论坛徽章:
- 0
|
- 1 #include"atmel.h"
- 2
- 3 .global GTopHalfEntry
- 4 .global Hang
- ~~~~~~~~~~~~~~ why global?
- 5
- 6 GTopHalfEntry:
- 7 ldr pc,vect_reset
- 8 ldr pc, vect_undef
- 9 ldr pc, vect_swi
- 10 ldr pc, vect_iabort
- 11 ldr pc, vect_dabort
- 12 .word 512
- 13 ldr pc, vect_irq
- 14 ldr pc, vect_fiq
- 15
- 16 vect_reset:
- 17 .word handle_reset
- 18 vect_undef:
- 19 .word handle_undef
- 20 vect_swi:
- 21 .word handle_swi
- 22 vect_iabort:
- 23 .word handle_iabort
- 24 vect_dabort:
- 25 .word handle_dabort
- 26 vect_irq:
- 27 .word handle_irq
- 28 vect_fiq:
- 29 .word handle_fiq
- 30
- 31 handle_fiq:
- 32 handle_irq:
- 33 handle_dabort:
- 34 handle_iabort:
- 35 handle_swi:
- 36 handle_undef:
- ~~~~~~~~~~~~~ no exception handler needed in a simple case.
-
- 37 handle_reset:
- 38 msr cpsr, #((ARM_MODE_SVC) | (ARM_INT_MASK))
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ msr cpsr, #(ARM_MODE_SVC | ARM_INT_MASK)
-
- 39 @LED
- 40 ldr r0, =GPIOA_BASE
- 41 ldr r1, =(1<<14)|(1<<23)
- 42 str r1, [r0]
- ~~~~~~~~~~~~~~ "str r1, [r0, #PIO_PER]" is prefer
- 43 str r1, [r0,#PIO_OER]
- 44 str r1, [r0,#PIO_CODR]
- 45 mov r1, #(1<<15)
- 46 ldr r0, =WDT
- 47 str r1, [r0]
- ~~~~~~~~~~~~~~ str r1, [r0, #xxxx]
- 48 @set_clock
- 49 ldr r0, =PMC_BASE
- 50 ldr r1, =(0x20<<16)|(0x3f<<8)|(0x20000000)|0x3
- 51 str r1, [r0,#CKGR_PLLAR]
- 52 L1:
- 53 ldr r1, [r0,#PMC_SR]
- 54 tst r1, #0x2
- 55 beq L1
- 56 ldr r1, =0x102
- 57 str r1, [r0,#PMC_MCKR]
- 58
- 59 L2:
- 60 ldr r1, [r0,#PMC_SR]
- 61 tst r1, #0x8
- 62 beq L2
- 63 @init_uart
- 64 ldr r0, =GPIOA_BASE
- 65 ldr r1, =(1<<9)|(1<<10)
- ~~~~~~~~~~~~~~~~~ mov r1, #((1 << 10) | (1 << 9))
- 66 str r1, [r0,#PIO_PDR]
- 67 @peripheral a
- 68 str r1, [r0,#PIO_ASR]
- 69 @interrupt disable
- 70 ldr r0, =DBUG_BASE
- 71 mvn r1, #0
- 72 str r1, [r0,#DBGU_IDR]
- 73 @Debug Unit Control Register
- 74 mov r1, #0x15c
- 75 str r1, [r0]
- 76 @Baud rate
- 77 mov r1, #55
- ~~~~~~~~~~~~~~~~ DO NOT use any magic number!
- 78 str r1, [r0,#DBGU_BRGR]
- 79 mov r1, #0x800
- 80 str r1, [r0,#DBGU_MR]
- 81 L3:
- 82 ldr r1, [r0,#DBGU_SR]
- 83 tst r1, #0x2
- 84 beq L3
- 85 mov r1, #97
- ~~~~~~~~~~~~~~~ mov r1, #'a'
- 86 str r1, [r0,#DBGU_THR]
- ~~~~~~~~~~~~~~~~~~~~~~~ use "strb" instead!
- 87 b L3
- 88 Hang:
- 89 b Hang
复制代码 |
|