字符设备驱动程序0910指南.ppt

  1. 1、本文档共40页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2-1 字符设备驱动程序基本结构 cmd 参数的定义 不推荐用0x1,0x2,0x3之类的值 Linux对ioctl()的cmd参数有特殊的定义 构造命令编号的宏: _IO(type,nr)用于构造无参数的命令编号; _IOR(type,nr,datatype)用于构造从驱动程序中读取数据的命令编号; _IOW(type,nr,datatype)用于写入数据的命令; _IOWR(type,nr,datatype)用于双向传输。 type和number位字段通过参数传入,而size位字段通过对datatype参数取sizeof获得。 设备类型(type) 序列号(number) 方向(direction) 数据尺寸(size) 8bit 8bit 2bit 13/14bit 2-1 字符设备驱动程序基本结构 Ioctl函数模板 int xxx_ioctl( struct inode *inode, struct f ile *filp, unsigned int cmd, unsigned long arg) { ... switch (cmd) { case XXX_CMD1: ... break; case XXX_CMD2: ... break; default: ///*不能支持的命令 */ return - ENOTTY; } return 0; } 阶段总结 本节介绍了字符设备驱动结构 2-2 添加驱动程序到内核 配置内核 编译内核 添加驱动程序到内核中 2-2 添加驱动程序到内核 配置内核 配置命令包括: make config make menuconfig make xconfig make gconfig 可通过“上”、“下”、“左”、“右”键移动菜单,选择某项按“Y”,取消 选择按“N”,如果选择某项编译为模块按“M”,进入子菜单按“Enter”,返回 上一级菜单按 “Esc” 使用make config、make menuconfig等命令后,会生成一个.config配置文件(是 隐身文件,通过ls –a才能看到) 2-2 添加驱动程序到内核 编译内核 可用如下命令编译内核: make ARC=arm CROSS_COMPILE=arm-linux- uImage 源代码根目录的Makefile中将ARCH和CROSS_COMPILE直接指定为arm和arm-linux-,如: 这样就没有必要每次编译的时候都指定体系结构和交叉编译器了,只须使用下面命令就可以了: make uImage ARCH ?= arm CROSS_COMPILE ?= arm-linux- 2-2 添加驱动程序到内核 添加驱动程序到内核 Linux 2.6内核的配置系统由以下3个部分组成。 Makefile:分布在Linux内核源代码中的Makefite 定义Linux内核的编译规则 配置文件(Kconfig):给用户提供配置选择的功能。 配置工具: 包括配置命令解释器(对配置脚本中使用的配置命令进行解释) 配置用户界面(提供字符界面和图形界面)。 这些配置工具都是使用脚本语言编写的,如Tcl/TK、Perl等。 在Linux内核中增加程序需要完成以下3项工作。 将编写的源代码复制到Linux内核源代码的相应目录。 在目录的Kconfig文件中增加新源代码对应项目的编译配置选项。 在目录的Makefile文件中增加对新源代码的编译条目。 2-2 添加驱动程序到内核 实例:在内核源代码drivers/char目录下为ARM体系结构新增my_module字符驱动 步骤: 1.在driver/char目录下创建文件my_module.c 2.修改Makefile和Kconfig 为新增目录创建Kconfig和Makefile Kconfig Makefile 阶段总结 配置和编译Linux内核的方法 如何将驱动程序加入到内核中---Makefile Kconfig 2-3 用户空间调用设备驱动程序 创建设备节点 $mknod /dev/node_name c major minor 示例代码 int main(void) { int dev_fd; char read_buf[10]; ? dev_fd = open(/dev/node_name,O_RDWR | O_NONBLOCK); if ( d

文档评论(0)

00625 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档