本次试验主要是针对fl2440开发板实验的,实现的功能是实现开发板上的四个LED间隔的闪烁,实验环境,虚拟机,开发板,ubuntu11.04
头函数:int.s主要功能实现main函数的导入
.text
.global _star
_star:
ldr r0,=0x53000000
mov r1,#0x0
str r1,[r0]
ldr sp,=1024*4
bl main
loop:
b loop
main函数:
#define GPBCON (*(volatile unsigned *)0x56000010)
#define GPBDAT (*(volatile unsigned *)0x56000014)
#define GPBUP (*(volatile unsigned *)0x56000018)
///////////////////////////////////////////////////////////////////////////////////////////////////////////
延时函数,主要实现LED间隔闪烁(具体延时时间尽量长点,否则效果不明显)
///////////////////////////////////////////////////////////////////////////////////////////////////////////
void delay(int i)
{
for(;i>0;i--);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int main(void){
GPBCON = 0xddd7fd; //set GPB0、GPB5、GPB6、GPB8、GPB10 as output
GPBUP = 0x00; //use pull up function
GPBDAT = (1<<5|1<<6|1<<8|1<<10);
GPBDAT &= 0xffe; //shut buzzer
while(1) { //light all leds
GPBDAT = (1<<5|1<<6|1<<8|1<<10);
delay(300000);
delay(300000);
GPBDAT &= ~(1<<5|1<<6|1<<8|1<<10);
delay(300000);
delay(300000);
}
return 0;
}
Makefile文件:
led.bin:int.s led.c
arm-linux-gcc -g -c -o int.o int.s
arm-linux-gcc -g -c -o led.o led.c
arm-linux-ld -Ttext 0x00300000 -g int.o led.o -o led_elf
arm-linux-objcopy -O binary -S led_elf led.bin
#arm-linux-gcc -o led.bin int.o led.o
clean:
rm -rf int.o led.o led_elf
成功的图片