1、编写开发板GPIO (通用IO)的驱动测试程序,要求led1、led3实现跑马亮灯状态,每盏灯亮两秒一次,持续3秒。
开发板:友善之臂mini2440
解:
1.跑马灯
(1) 打开ubuntu系统,打开终端,输入命令“arm-linux-gcc 2_1_paomadeng.c –o paomadeng”交叉编译生成开发板上可以执行的文件paomadeng。
(2) 将文件paomadeng移动到arm开发板中。
(3) 在arm开发板中使用命令“chmod 777 paomadeng”修改paomadeng文件的权限,使它的权限被修改为所有者、所属组、其他人都拥有读、写、和执行的权限。
(4) arm开发板中使用命令“ps”查看系统现在进行着的进程,如果arm开发中已经运行着一个关于led控制的进程,记住它的pid,使用命令杀死该进程。
(5) arm开发板执行命令“./paomadeng”可以看到led1灯和led3灯形成跑马灯的效果。led1灯和led3灯同时只有一盏灯亮,亮的时间为2秒和3秒交替循环。
/******************2_1_paomadeng.c*********/
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/ioctl.h>
int main()
{
int led_fd;
if((led_fd=open("/dev/leds0",0))<0)
{
if((led_fd=open("/dev/leds",0))<0)
{
printf("open device leds failed\n");
return -1;
}
}
ioctl(led_fd,0,0);
ioctl(led_fd,0,1);
ioctl(led_fd,0,2);
ioctl(led_fd,0,3);
while(1)
{
ioctl(led_fd,0,0);//led1灭
ioctl(led_fd,1,2);//led3亮
sleep(2);
ioctl(led_fd,1,0);//led1亮
ioctl(led_fd,0,2);//led3灭
sleep(3);
}
close(led_fd);
return 0;
}