一、开发环境
1、硬件平台:FS2410(s3c2410)
2、主机:Ubuntu 10.10
二、LED的原理图:
三、有关LED的GPIO口的配置信息:
1、配置GPFCON寄存器,设置GPF4-7为输出
2、配置GPFDAT,设置LED灯亮与灭
四、主要步骤:
(1)通过设置GPFCON将GPF4-7设置为输出
(2)设置GPFDAT,可以将led灯亮或灭,GPFDAT的相应位置1灯灭,置0灯亮
由此可以控制led灯的亮灭。
五、详细的源代码:
NAND flash启动(start.S)(注意是大写的S)
1、关狗
2、设置栈
以下是start.S的代码:
.text
.global _start
_start:
#define WATCHDOG 0x53000000
ldr r0, =WATCHDOG //关看门狗
mov r1, #0
str r1, [r0]
ldr sp, =1024*4 //设置堆栈
bl main //跳转进入main函数
loop:
b loop
led.c :(s3c2410.h 文件可以由keil下获取)
#include "s3c2410.h"
void delay(long long max) //延迟函数
{
int i, j;
for(i = 0; i < max; i++)
for(j = 0; j < max; j ++);
}
int main(void)
{
int i;
GPFCON = GPFCON & (~(0xff << 8)) | (0x55 << 8); //设置GPF4-7为输出
GPFDAT &= ~(0xf << 4); //将4个LED灯开启
while(1)
{
for(i = 0; i < 5; i++)
{
GPFDAT = GPFDAT | (0xf << i); //利用循环设置流水灯
delay(500);
}
GPFDAT &= ~(0xf << 4); //4个LED灯开启
}
return 0;
}
Makefile:
led.bin: start.S led.c
arm-none-linux-gnueabi-gcc -c start.S -o start.o
arm-none-linux-gnueabi-gcc -c led.c -o led.o
arm-none-linux-gnueabi-ld -Ttext 0x30008000 start.o led.o -o led
arm-none-linux-gnueabi-objcopy -O binary -S led led.bin
clean:
rm -f *.o led.bin
主要步骤:
1、$make
2、$cp led.bin /tftpboot
以下在secureCRT上操作:
3、tftp 30008000 led.bin
4、go 30008000