热门关键字:  PHP  Cisco  seo  网络广告 虚拟主机 中文域名
当前位置 :| 主页>服务器>Linux服务器>

为系统处理器编写Linux设备驱动程序

来源:赛迪网技术社区 作者:Tanya Ortega  时间:2006-10-08 点击:

misc_register()用主编号10调用 register_chrdev(),设备名称和函数表指针通过miscdevice数据结构获得。同样,miscdevice 数据结构还保存设备驱动程序所使用的次要号码。

以下是在设备驱动程序代码内注册 EP9312 触摸屏采用的函数调用:

misc_register(&ep93xx_ts_miscdev)

数据结构 ep93xx_ts_miscdev 是对触摸屏硬件的内核访问,定义如下:

static struct miscdevice ep93xx_ts_miscdev = 
  {
EP93XX_TS_MINOR, /* device minor number */
"ep93xx_ts", /* name of the device */
&ep93xx_ts_fops /* device file operations */
/* table pointer */
  }

其他类型设备驱动程序采用次要号码区分设备。

硬件接口函数在设备驱动器内即被静态定义,当设备注册时,由内核通过传递给操作系统的文档操作函数指针获得。指针列表定义如下:

static struct file_operations ep93xx_ts_fops =
  {
owner: THIS_MODULE,
read: ep93xx_ts_read,
write: ep93xx_ts_write,
poll: ep93xx_ts_poll,
open: ep93xx_ts_open,
release: ep93xx_ts_release,
fasync: ep93xx_ts_fasync,
  }

初始化触摸屏设备后,即需创建文档系统特殊文件,以便协助应用程序代码访问设备。创建 EP9312 触摸屏特殊文件的 mknod 命令如下:

mknod /dev/misc/ep93xx_ts c 10 240

该步骤即可在根目录系统下的初始化文档初始化 Linux 时得到执行,也可在命令提示里实现手动操作。

以下是用户级应用代码的一个实例,通过文档系统特殊文件访问触摸屏设备:

#define TS_DEV "/dev/misc/ep93xx_ts"
  int read_ts() 
  {
int fd, nbytes;
short data[3];
  fd = open("/dev/misc/ep93xx_ts", O_NONBLOCK); 
  if ( fd < 0 ) 
{
printf("Unable to open touch screen device %s!
", TS_DEV);
exit(1);
}
nbytes = read(pd_fd, data, sizeof(data)); 
close(fd);
if (nbytes != sizeof(data)) 
return 0;
return 1;
  }

 


最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册
赞助商连接