您的位置:首页 > 编程语言 > Go语言

点亮一个LED

2012-02-10 21:23 661 查看
硬件说明: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长亮
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  output 脚本 go c