Board logo

标题: ZLG7290+HHARM9-EDU [打印本页]

作者: fklk    时间: 2007-7-6 10:41     标题: ZLG7290+HHARM9-EDU

用ZLG7290做了一个8x8的板子,现在要在华恒——EDU的的板子上驱动起来,

读写函数不正确,那位高手能看看是什么毛病不?
static ssize_t  zlg_rd(struct file *filep,char * buffer,size_t length,loff_t * off)
{
    int ret = 0,i;
    U8 rdata;

    dbuf = kmalloc(5*sizeof(char) , GFP_KERNEL);

    Init_Iic();

    /*SYSAvi*/  
    _Rd2410Iic(ZLG_SLAVE_ADDR,REG_Sys,&(rdata));
    dbuf[0] = rdata;

    /*Key_value*/
     _Rd2410Iic(ZLG_SLAVE_ADDR,REG_Key,&(rdata));
        dbuf[1] = rdata;

    /*Repeat*/   
     _Rd2410Iic(ZLG_SLAVE_ADDR,REG_Cnt,&(rdata));
        dbuf[2] = rdata;

    /*Function*/   
     _Rd2410Iic(ZLG_SLAVE_ADDR,REG_Func,&(rdata));
        dbuf[3] = rdata;
 /*Fastpresscound*/   
     _Rd2410Iic(ZLG_SLAVE_ADDR,REG_Fprc,&(rdata));
        dbuf[4] = rdata;
    copy_to_user(buffer,dbuf,5);
    kfree(dbuf);
    return ret;
}


static ssize_t  zlg_wr(struct file *filep,char * buffer,size_t length,loff_t * off)
{
    U8 data;
    int ic , ret = 0;
    unsigned int reg, mreg, lreg;
    dbuf = kmalloc(length*sizeof(char),GFP_KERNEL);

    copy_from_user(dbuf,buffer,length);
    Init_Iic();

   
    for(ic = 0;ic < length; ic+=2)
    {
        //mreg = dbuf[ic];
        //lreg = dbuf[ic+1];
        //reg = mreg<<8|lreg;
        reg = dbuf[ic];
        data = dbuf[ic+1];
            _Wr2410Iic(ZLG_SLAVE_ADDR,reg,data);
    }
    kfree(dbuf);
    return ret;
       
       
}





欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0