文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Linux嵌入式系统开发之Led开发

Linux嵌入式系统开发之Led开发

时间:2010-11-06  来源:☆&寒 烟☆

"革命?革谁的命啊,是PC吗,把电源拔了,不就可以解决问题了,还那么费劲.."小王眨巴着眼睛说。

"啊?我晕,算啦,不跟你纠结这些问题了,咱们开始正题吧"我苦笑而无奈的说。

看看咱们的开发板,有四个led灯,对吧,这次就是向办法用程序来点亮它,请看下边的代码:

#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/ioctl.h>

int main(int argc, char **argv)
{
        int on;
        int led_no;
        int fd;

        if(argc != 3 ||sscanf(argv[1],"%d",&led_no) !=1 ||
                       sscanf(argv[2],"%d",&on) !=1 ||
                on < 0 || on > 1 || led_no <0 || led_no>3)
        {
                fprintf(stderr,"Usage:Leds led_no 0|1\n");
                exit(1);
        }

        //打开/dev/leds0设备文件
        fd = open("/dev/leds0",0);
       if(fd < 0)
       {
                fd = open("/dev/leds",0);
       }
       if(fd <0 )
       {
                perror("open device leds");
                exit(1);
       }

       //通过系统调用ioctl和输入的参数控制led
       ioctl(fd, on ,led_no);

       //关闭设备句柄
        close(fd);
       return 0;
}

看这段代码,极其相当简单吧,在宿主机上用arm-linux-gcc –o led_control led_test,就会生成led_control的程序,通过上节咱们说的ftp下载到开发板上,就可以运行了,比如:

./led_control 0 1   //点亮0号灯

./led_control 1 1   //点亮1号灯
./led_control 2 1   //点亮2号灯

./led_control 3 1   //点亮3号灯

"快看快看,真的亮了哦,真好玩.."小王高兴的拍着手说。

"小王,别玩了,你给我分析下代码,看看你的理解能力。”

"嗯?我感觉关键在于ioctl(fd, on ,led_no); 其他都是些检测和准备工作,对吧?而且有种奇怪的感觉.."小王试探着说。

"继续"

"ioctl(fd, on ,led_no); 如果led设备是字符设备的话, 这个函数就是不是调用你前边给我讲的那么多的字符设备驱动中的ioctl()函数"小王不自信的说。

"嗯,真聪明,你能把今天的和前边的联系起来看,真是不错,不过这段时间咱们就把设备驱动放放,先做上层的调用控制设备,等先有个形象的认识后,我们在回过头来,细看底层对应的设备驱动,会更加形象的认识理解"我心里的那个兴奋劲,真是不用提了..

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载