ARM裸机程序--GPIO实验 LED(1)

ARM裸机程序–GPIO实验 LED (1)

代码清单如下:
1 . Makefile

CROSS = arm-linux-
CFLAGS = -nostdlib -c -Wall -g
TARGET = leds
OBJS := start.o $(TARGET).o

LDFILE = $(TARGET).lds

$(TARGET).bin:$(OBJS)
    $(CROSS)ld -T$(LDFILE) -o $(TARGET)_elf $^
    $(CROSS)objcopy -O binary -S $(TARGET)_elf $@
    $(CROSS)objdump -D -m arm $(TARGET)_elf > $(TARGET).dis
%.o: %.c
    $(CROSS)gcc $(CFLAGS) -o $@ $<
%.o: %.s
    $(CROSS)gcc $(CFLAGS) -o $@ $<
clean:
    rm -f *.bin *elf *.dis *.o

2 . start.s

.text
.global _start
_start:
    @ disable watchdog
    ldr r3, =0x53000000
    mov r4, #0x0
    str r4, [r3]

    @ setup stack
    ldr sp, =1024*4

    bl _main
halt_loop:
    b halt_loop

3 . leds.s

.equ GDBCON, 0x56000010
.equ GDBDAT, 0x56000014
.equ LOOPTIME, 0x00010000

.global _main
_main:

    ldr r0, =GDBCON @ set GDB5-8 output

    mov r1, #(0x55<<10)
    str r1, [r0]

    mov r1, #0
    ldr r0, =GDBDAT
loop:
    mvn r2, r1, lsl #5
    str r2, [r0]
    add r1, r1, #1
    cmp r1, #16
    moveq r1, #0
    bl delay

    b loop
delay:
    ldr r3, =LOOPTIME
delay1:
    sub r3, r3, #1
    cmp r3, #0x0
    bne delay1
    mov pc,lr
.end

4 . leds.lds

SECTIONS{
    . = 0x00000000;
    .text : {
        *(.text);
        *(.rodata);
        }
    .data ALIGN(4): {
        *(.data);
        }

    .bss ALIGN(4): {
        *(.bss);
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值