硬件说明:LED1连到s3c2410的GPM0脚,且低电平时LED1亮。
GPM配置寄存器地址为0x7F008820,且[3:0]位为0001时代表GPM0脚为输出功能。
GPM数据寄存器地址为0x7F008824,且[0]位用于控制GMP0脚输出的电平。
GPM上拉配置寄存器地址为0x7F008828。
代码文件:led.S
.text .global main main: stmfd sp!, {r0-r12, lr} mov r0, #1 ldr r1, GPMCON str r0, [r1] lightLED1: mov r0, #0 ldr r1, GPMDAT str r0, [r1] b lightLED1 ldmfd sp!, {r0-r12, pc} GPMCON: .word 0x7F008820 GPMDAT: .word 0x7F008824 GPMPUD: .word 0x7F008828
连接脚本led.lds
取得lds模板
#arm-none-linux-gnueabi-ld --verbose > led.lds
修改led.lds为 如下内容
OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(main) SECTIONS { . = 0x50008000 ; .text : { *(.text) ; } .align = 4 ; }
编译代码
#arm-none-linux-gnueabi-as led.S -o led.o #arm-none-linux-gnueabi-ld -T led.lds led.o -o led #arm-none-linux-gnueabi-objcopy -O binary led /tftpboot/led.bin
运行程序
在u-boot命令状态
$tftp 0x50008000 led.bin $go 0x50008000
运行结果
LED1长亮