加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

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

发布时间:2016-05-29 23:04:32 所属栏目:Linux 来源:网络整理
导读:引 言 编写 Linux 设备驱动程序无疑是一项复杂的工作。本文将集中介绍非标准硬件的设备驱动程序编写,探讨硬件应用编程接口,并借用 Cirrus Logic EP9312 片上

ideproc 处理PIO模式转换,并被映射到结构特殊函数 ep93xx_ideproc()。rwproc 和dmaproc 都处理DMA模式转换。rwproc 向ep93xx_rwproc()映射,dmaproc向ep93xx_dmaproc()映射。高级IDE驱动程序检测这些指针是否无效。如果确为无效,则放弃结构特殊函数而采用默认函数。ideproc()和dmaproc()均系基于IOCTL的函数,可执行一系列高级IDE驱动程序定义的ioctls命令。rwproc()函数为特殊转换速度和方向设置IDE控制器。这些EP9312结构特殊函数都在文件驱动程序/ide/ide-ep93xx.c内得到定义。函数原型示意如下:

static void ep93xx_ideproc(ide_ide_action_t action, ide_drive_t * drive, void * buffer, unsigned int count)
  static void ep93xx_dmaproc(ide_dma_action_t action, ide_drive_t *drive)
  static void ep93xx_rwproc(ide_drive_t * drive, ide_dma_action_t action)

此外,一部分结构特殊执行命令也是几个IDE普通宏命令的再定义。它们是直接读写IDE设备的宏命令。文件 /include/asm/mach/ide.h 下的宏映射到EP9312 定义。

#define OUT_BYTE(b, p) ep93xx_ide_outb((b), (p))
  #define OUT_WORD(w, p) ep93xx_ide_outw((w), (p))
  #define IN_BYTE(p) ep93xx_ide_inb((p))
  #define IN_WORD(p) ep93xx_ide_inw((p))

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读