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启动。