LINUX 驱动开发.ppt
《LINUX 驱动开发.ppt》由会员分享,可在线阅读,更多相关《LINUX 驱动开发.ppt(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、LINUX驱动开发郑灵翔郑灵翔郑灵翔郑灵翔郑灵翔郑灵翔Agenda基本原理内核模块设备驱动的结构Linux 2.6内核设备模型中断处理各种接口设计与驱动开发实例厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系郑灵翔郑灵翔郑灵翔郑灵翔LINUX设备的分类字符设备字符设备 串口,终端,触摸屏串口,终端,触摸屏 ls ls-l/dev/ttyS0-l/dev/ttyS0crw-rw-rwcrw-rw-rw-1 root -1 root uucpuucp 4,64 4 4,64 4月月 1 19:56/dev/ttyS01 19:56/dev/ttyS0块设备块设备 FLASH
2、FLASH,RAMDISKRAMDISK,硬盘,硬盘 ls ls-l/dev/mtdblock3 -l/dev/mtdblock3 brw-r-rbrw-r-r-1 505 -1 505 505505 31,3 Feb 19 2005/dev/mtdblock3 31,3 Feb 19 2005/dev/mtdblock3网络设备网络设备ifconfigifconfig-a-a厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系郑灵翔郑灵翔郑灵翔郑灵翔设备文件与设备号用户通过设备文件访问设备每个设备用一个主设备号和次设备号标识厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯
3、工程系厦门大学通讯工程系郑灵翔郑灵翔郑灵翔郑灵翔设备驱动的功能管理I/O设备上层软件的抽象操作与设备操作的转换厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系郑灵翔郑灵翔郑灵翔郑灵翔内核模块Linux内核运行时动态扩展的一种技术一组可以动态加载/卸载的代码Linux驱动以内核模块的方式实现厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系郑灵翔郑灵翔郑灵翔郑灵翔LINUX内核模块的框架static static intint init_routineinit_routine(void)(void)void void cleanup_routine(
4、voidcleanup_routine(void)module_init(init_routinemodule_init(init_routine););module_exit(cleanup_routinemodule_exit(cleanup_routine););MODULE_LICENSE(GPL);MODULE_LICENSE(GPL);厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系郑灵翔郑灵翔郑灵翔郑灵翔内核模块的编译和加载KconfigMakefile厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系郑灵翔郑灵翔郑灵翔郑灵翔Kcon
5、fig与Makefile的关系厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系郑灵翔郑灵翔郑灵翔郑灵翔Kconfig语法config config options类型定义类型定义依赖性定义依赖性定义帮助定义帮助定义厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系郑灵翔郑灵翔郑灵翔郑灵翔Kconfig示例厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系郑灵翔郑灵翔郑灵翔郑灵翔Makefile示例定义示例 obj-yobj-y+=+=hello.ohello.o obj-mobj-m+=+=hello.ohello.o obj
6、obj-$(CONFIG_HELLO_MODULE)+=-$(CONFIG_HELLO_MODULE)+=hello.ohello.o编译 make-C M=$PWD modulesmake-C M=$PWD modules厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系郑灵翔郑灵翔郑灵翔郑灵翔设备驱动的结构驱动与内核的接口驱动与内核的接口 注册注册/卸载卸载 VFSVFS接口接口 数据交互数据交互 中断注册中断注册硬件设备接口硬件设备接口 硬件探测硬件探测 初始化初始化 读写访问读写访问 设备控制设备控制厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系厦门大学通
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LINUX 驱动开发 驱动 开发
限制150内