1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
| /***********************************************************************
| * File: start.S
| * Version: 1.0.0
| * Copyright: 2011 (c) Guo Wenxue <guowenxue@gmail.com>
| * Description: This ASM used to disable watch dog and interrupt, then call C code to
| * turn the four LEDs on/off on FL2440 board.
| * ChangeLog: 1, Release initial version on "Mon Mar 21 21:09:52 CST 2011"
| *
| ***********************************************************************/
|
| #define pWTCON 0x53000000 /* Watch dog register address */
| #define INTMSK 0x4A000008 /* Interupt-Controller base addresses */
| #define INTSUBMSK 0x4A00001C
|
| #define LED0 5 /*LED0 use GPB5*/
| #define LED1 6 /*LED1 use GPB6*/
| #define LED2 8 /*LED2 use GPB8*/
| #define LED3 10 /*LED3 use GPB10*/
|
|
| .text
| .align 2
| .global _start
|
| _start:
|
| /* Disable watch dog */
| ldr r0, =pWTCON /*Save pwTCON address in r0*/
| mov r1, #0x0 /*Set r1=0x0*/
| str r1, [r0] /*Move the data in r1 to the address specify by r0*/
|
|
| /* mask all IRQs by setting all bits in the INTMR - default */
| mov r1, #0xffffffff
| ldr r0, =INTMSK
| str r1, [r0]
|
| ldr r0, =INTSUBMSK
| ldr r1, =0x7fff /*There are 15 bits used in INTSUBMSK on S3C2440*/
| str r1, [r0]
|
| bl led_init
|
| loop:
| mov r0,#LED0
| bl turn_led_on
|
| mov r0,#LED1
| bl turn_led_on
|
| mov r0,#LED2
| bl turn_led_on
|
| mov r0,#LED3
| bl turn_led_on
|
| mov r0,#LED0
| bl turn_led_off
|
| mov r0,#LED1
| bl turn_led_off
|
| mov r0,#LED2
| bl turn_led_off
|
| mov r0,#LED3
| bl turn_led_off
|
| b loop
|
| @bl main
|
| halt_loop:
| b halt_loop
|
|