歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Tiny6410-LED驅動

想寫一個tiny6410驅動,通過該驅動可以查看led的開關狀態和設置開關。代碼是在tiny6410-led驅動代碼原有的代碼的基礎上改的,先貼出一部分關鍵代碼。

static long sbc2440_leds_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
{
  int ioarg,ret;
 switch(cmd) {
  unsigned tmp;
 case 0:
  ioarg = ((readl(S3C64XX_GPKDAT) >> 4) & 0XF); 
            ret = __put_user(ioarg,(int *)arg); 
            break; 
 case 1:
  tmp = readl(S3C64XX_GPKDAT);
  tmp &= ~(1 << (4 + (arg/10)));
  tmp |= ( (!(arg%10)) << (4 + (arg/10)) );
  writel(tmp, S3C64XX_GPKDAT);
  //printk (DEVICE_NAME": %d %d\n", arg, cmd);
  return 0;
 default:
  return -EINVAL;
 }
}
 
應用測試程序關鍵代碼如下
 if(argc == 1) 
    { 
        ioctl(fd,0,&arg); 
        printf("led dat: %d\n",arg); 
    } 
    else 
    { 
       
        arg=atoi(argv[1]);
        ioctl(fd,1,arg); 
    } 
 
效果圖:

把開發板上第二個燈點亮,,讀取值為13:即1101.。成功。。

Copyright © Linux教程網 All Rights Reserved