以下裸机程序基于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 _start10 _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,#0x2022 str r1,[r0] @写入看门狗寄存器23 mov pc,lr @返回24 25 control_led:26 ldr r0,=GPBCON @加载IO寄存器地址27 orr r1,r0,#nGPB_OUTPUT28 str r1,[r0]29 ldr r0,=0x0 @输出低电平(LED亮)30 ldr r1,=GPBDAT31 str r0,[r1]32 mov pc,lr @返回
makefile文件:
1 led.bin:2 arm-linux-gcc -g -c -o led.o led.S3 arm-linux-ld -Ttext 0x00000000 -g led.o -o led_elf4 arm-linux-objcopy -O binary -S led_elf led.bin5 rm -f led_elf led.o6 7 clean:8 rm -f led.bin
在终端下执行make编译生成led.bin二进制文件,通过BIOS烧写到nand flash,从nand flash启动。