ARM裸机开发(一)LED控制

        以下裸机程序基于GT2440,编译器为arm-linux-gcc-4.4.3。

      程序的功能为:开机上电首先跳转到复位异常处理,在复位异常处理里关闭看门狗,然后执行LED控制程序,程序运行结果为板上4个LED全亮。

led.S文件:

 1 @寄存器物理地址宏定义
 2 #define WTCON  0x53000000 
 3 #define GPBCON 0x56000010 
 4 #define GPBDAT 0x56000014
 5 #define GPBUP  0x56000018
 6 #define nGPB_OUTPUT ((1<<10)|(1<<12)|(1<<14)|(1<<16))
 7 
 8 .section .text
 9 .global _start
10 _start:
11     b    reset          @跳到复位异常处理程序
12 
13 reset:
14     bl disable_watchdog @跳到关闭看门狗子程序
15     bl control_led      @跳到控制LED子程序
16 loop:
17     b loop              @死循环
18 
19 disable_watchdog:
20     ldr r0,=WTCON      @加载看门狗寄存器地址
21     bic r1,r0,#0x20
22     str r1,[r0]        @写入看门狗寄存器
23     mov pc,lr          @返回
24 
25 control_led:
26     ldr r0,=GPBCON     @加载IO寄存器地址
27     orr r1,r0,#nGPB_OUTPUT
28     str r1,[r0]
29     ldr r0,=0x0        @输出低电平(LED亮)
30     ldr r1,=GPBDAT
31     str r0,[r1]
32     mov pc,lr          @返回

makefile文件:

1 led.bin:
2     arm-linux-gcc -g -c -o led.o led.S
3     arm-linux-ld -Ttext 0x00000000 -g led.o -o led_elf
4     arm-linux-objcopy -O binary -S led_elf led.bin
5     rm -f led_elf led.o
6 
7 clean:
8     rm -f led.bin

在终端下执行make编译生成led.bin二进制文件,通过BIOS烧写到nand flash,从nand flash启动。

原文地址:https://www.cnblogs.com/lknlfy/p/2656670.html