2011-04-08 驱动的写法

先规定驱动接口文件的特定格式:

DRV_XXX.c

DEV_XXX.c

drv_XXX_i.h

1.drv_XXX_i.h是对外接口.

 

2

DRV_XXX.c里面都是以下面的函数接口:

(开放在magic.c里面)

{                                     

     &DRV_DTOS_MInit,
     &DRV_DTOS_MExit,
     &DRV_DTOS_MOpen,
     &DRV_DTOS_MClose,
     &DRV_DTOS_MRead,
     &DRV_DTOS_MWrite,
     &DRV_DTOS_MIoctrl

}

DRV_DTOS_MInit是最先会被执行的函数(在结构体中的解释: //在install/reset模块时使用,若模块需要后台任务,可以在此启动)

DRV_DTOS_MIoctrl函数应该是在 esDEV_Plugin("//drv//dtos.drv", 0, 0, 1);时调用,并有一个DRV_CMD_PLUGIN命令进来(细节不管).

而通常在对DRV_CMD_PLUGIN命令进行处理时要用esDEV_DevReg("USERDTOS", "DTOS", &dtos_dev_ops, 0);将驱动注册,以便在程序中使用.

 

3

DEV_XXX.c

中也是下面的函数接口:

__dev_devop_t dtos_dev_ops =
{
    DEV_DTOS_Open,
    DEV_DTOS_Close,
    DEV_DTOS_Read,
    DEV_DTOS_Write,
    DEV_DTOS_Ioctrl
};
供上面esDEV_DevReg作参数用.

这样,在程序中,用下面方法:

{
  ES_FILE *p_tpfile;
  p_tpfile = eLIBs_fopen("b://USERDTOS//DTOS", "r+");
  if( !p_tpfile )
  {
   __err(" open dtos driver error /n");
   return EPDK_FAIL;
  }

  eLIBs_fioctrl(p_tpfile, DRV_DTOS_CMD_INIT, 0, NULL);
  eLIBs_fclose(p_tpfile);
 }
就可操作DEV_DTOS_Ioctrl函数了(上面的eLIBs_fioctrl(p_tpfile, DRV_DTOS_CMD_INIT, 0, NULL),肯定调用DEV_DTOS_Ioctrl来对DRV_DTOS_CMD_INIT命令进行处理).

真正驱动的初始化就是在DEV_DTOS_Ioctrl对DRV_DTOS_CMD_INIT命令进行处理时实现.

 

上面的结构就是为了封装,但个人认为过于繁琐,可能为了与系统其它方面兼容有关.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值