打印

sed1335 at91rm9200 下带linux操作系统下的驱动

[复制链接]
1593|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhangyanab|  楼主 | 2008-7-10 12:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
需要移植一个现成的应用程序,所以要自己写个关于1335驱动的函数。下面是驱动中的ioctl函数。writecommand是写命令,writdata是写数据。在应用层调用的时候命令和数据都是unsigned char型。在用应用程序测试的时候,好像是没有能够成功调用ioctl函数。高手给指点一二!

#define U8 unsigned char

static int  LCDIoctl(struct inode *inode,struct file * file,unsigned long cmd,unsigned long  arg)
{
   int ret=0;
   switch(cmd) 
   {
    case writecommand:
    {
        U8  pdata;
        if(copy_from_user((U8 *)&pdata, (U8*) arg, sizeof(arg)))
        {
            printk("copy_from_user:error ");
            ret = -EFAULT;
        }
        else
        {
             printk("writ command  ");
        LcdWriteCommand(pdata);        
        }
        break;        
    }
    case writedata:
    {
        U8  pdata;
        if(copy_from_user((U8 *)&pdata, (U8*) arg, sizeof(arg)))
        {
            printk("copy_from_user:error ");
            ret = -EFAULT;
        }
        else
        {
             printk("writ command  ");
        LcdWriteData(pdata);        
        }
        break;
    
    }
        default:
             return -EINVAL;
    }
    return ret;
}
难道是在调用ioctl时候,值传递有问题??

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

6

帖子

0

粉丝