ARM LED裸机实验(gun汇编)

开发环境OPENJTAG+2440+ECLIPSE

GPxCON每两个位控制一个一个引脚:00输入,01输出,10特殊功能

初始化三个寄存器:rGPxCON,rGPxUP,rGPxDAT

crt0.S

@******************************************************************************
@ File:crt0.S
@ 功能:LED点灯程序,点亮LED1
@******************************************************************************       

.text
.global _start
_start:
       LDR     R0,=0x56000050      @ R0设为GPfCON寄存器。此寄存器
                                        @ 用于选择端口B各引脚的功能:
                                        @ 是输出、是输入、还是其他
        MOV     R1,#0x00000400
       STR     R1,[R0]             @ 设置GPf5为输出口, 位[10:9]=0b01
       LDR     R0,=0x56000054      @ R0设为GPfDAT寄存器。此寄存器
                                        @ 用于读/写端口f各引脚的数据
        MOV     R1,#0x00000000      @ 此值改为0x00000020,
                                        @ 可让LED1熄灭
        STR     R1,[R0]             @ GPB5输出0,LED1点亮
MAIN_LOOP:
            B       MAIN_LOOP

Makefile

CC      = arm-elf-gcc
LD      = arm-elf-ld
AR      = arm-elf-ar
OBJCOPY = arm-elf-objcopy
OBJDUMP = arm-elf-objdump
CFLAGS 		:= -Wall -O2
CPPFLAGS   	:= -nostdinc 

objs := crt0.o @汇编后的文件添加到此处
all:led.bin

led.bin: $(objs)
	${LD} -Tled.lds -Ttext 0x00000000 -o led_elf $^
	${OBJCOPY} -O binary -S led_elf $@
	${OBJDUMP} -D -m arm led_elf > led.dis
	
%.o:%.c
	${CC} -g -c -o $@ $<

%.o:%.S
	${CC} -g -c -o $@ $<

clean:
	make  clean -C lib
	rm -f led.bin led_elf led.dis *.o


led.lds

OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
OUTPUT_ARCH(arm)
ENTRY(_start)
SECTIONS
{
	. =0x00000000; @运行地址内部4Kram

	. = ALIGN(4);
	.text :
	{
		crt0.o	(.text)
		*(.text)
	}

	. = ALIGN(4);
	.rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }

	. = ALIGN(4);
	.data : { *(.data) }

	. = ALIGN(4);
	.got : { *(.got) }

	. = .;
	__u_boot_cmd_start = .;
	.u_boot_cmd : { *(.u_boot_cmd) }
	__u_boot_cmd_end = .;

	. = ALIGN(4);
	__bss_start = .;
	.bss (NOLOAD) : { *(.bss) . = ALIGN(4); }
	_end = .;
}


如果想要在eclipse下进行仿真调试还需要一个init文件用于初始化内存时钟等
将crt0.s Makefile 和led.lds三个文件放到Linux下即可编译,注意编译前讲Makefile中的elf改为GCC

工程下载地址http://download.csdn.net/detail/wyc7425/6270603

你可能感兴趣的:(ARM,GUN)