- 13
- 0
- 约8.29千字
- 约 33页
- 2017-06-20 发布于福建
- 举报
驱动程序嵌入式系统
驱动硬件是操作系统最基本的功能。它通过驱动程序来操作硬件。 驱动程序是内核和硬件之间的接口,为应用程序屏蔽了硬件的细节。 驱动程序最为操作系统最基本组成部分,具有以下功能: 对设备初始化和释放。驱动程序要完成设备注册,初始化及对设备的卸载 数据传送。驱动程序最重要的功能就是在内核,硬件和应用程序之间传送数据。即把数据从内核传到硬件和从硬件读取数据;读取应用程序传给设备文件的数据和回送应用程序要求的数据 检测和处理设备出现的错误。 驱动程序通常是以内核模块的形式加载进内核 或直接 编译进内核,(但编译进内核是某些驱动运行的唯一方法。例如:console驱动,flash驱动和对至少一种文件系统的支持等等。)是内核的一部分。与应用程序的执行过程不同,模块通常只是预先向内核注册自己,当内核需要时响应请求。 用户的应用程序以设备文件方式访问驱动程序。即linux把设备当文件,通过文件系统对设备进行访问 所有的设备的驱动程序有共性,了解驱动程序的结构,对嵌入式系统的开发有价值 Linux的设备管理 嵌入式Linux设备驱动程序的设计大致包括以下步骤: 向系统申请也可以动态获得主、次设备号。 实现设备初始化和卸载模块。(以模块方式) 设计对设备文件操作。如定义file_operations结构。 设计对设备文件操作调用。如read、write等操作。 实现中断服务函数,用request_irq向内核注册。 将驱动程序编译到内核或编译成模块,用ismod命令加载。 生成设备节点文件。 应用程序与内核模块的比较 源程序:有main();没有main(内核模块结构) 编译:gcc;gcc加参数(幻33) 运行:运行命令;模块加载(用命令insmod rmmod 或内核裁减,以模块方式或编译进内核,由内核需要时调用) 内核模块结构 #include linux/kernel.h // 说明是个内核功能 #include linux/module.h // 声明是一个模块 … … // 其它header信息 int init_module( ) { … … // 加载时,初始化模块的编码 如注册register_chrdev } … … … … // 期望该模块所能实现的一些功能函数,如open()、 release()、write()、 read()、ioctl()等函数 … … void cleanup_module( ) { … … // 卸载时,注销模块的编码 } Linux内核模块结构介绍 #include linux/module.h //所有模块都需要的头文件 #include linux/init.h // initexit相关宏 static int __init hello_init (void) { printk(Hello module init\n); return 0; } Linux内核模块结构介绍 static void __exit hello_exit (void){ printk(Hello module exit\n);} module_init(hello_init);module_exit(hello_exit); Linux内核模块结构介绍 gcc -D__KERNEL__ -DMODULE -DLINUX -I /usr/src/linux2.4/include -c -o hello.o hello.c insmod ./hello.o ………… rmmod hello 驱动程序的测试 在该驱动模块程序编译加载后,再在/dev目录下创建模块设备文件chrdev,使用命令: #mknod /dev/chrdev c major minor 其中“c”表示moduledev是字符设备,“major”是moduledev的主设备号。(该字符设备驱动程序编译加载后,可在/proc/devices获得主设备号) 函数scull_open()的流程图 图8-5 函数scull_write()的流程图 图8-6 函数scull_read()的流程图 图8-7 函数scull_ioctl()的流程图 图8-8 函数scull_release()的流程图 图8-9 字符设备驱动程序的测试函
您可能关注的文档
- 锻造工艺学精简版.ppt
- 锻造毕业设计答辩ppt.ppt
- 锻造技术知识点金属热处理.doc
- 镇痛药及镇咳祛.ppt
- 镀锡工艺从入门到精通 .ppt
- 锡柴国Ⅳ培训教材.ppt
- 镜像光泽度计技术报告.doc
- 镀膜玻璃国内外标准.ppt
- 长城汽车天津新厂实习报告.doc
- 长安公司CPS推进方法介绍.ppt
- 安徽省华师联盟2025-2026学年高三上学期1月质量检测生物试卷+答案.doc
- 安徽省华师联盟2025-2026学年高三上学期1月质量检测语文试卷+答案.doc
- 四川省绵阳南山中学实验学校2025-2026学年高三上学期1月月考数学含答案.doc
- 2026届辽宁省大连市高三上学期双基考试物理试卷+答案.doc
- 辽宁名校联盟2026年1月高三上期末联考质量检测化学含答案.doc
- 辽宁名校联盟2026年1月高三上期末联考质量检测生物含答案.doc
- 辽宁名校联盟2026年1月高三上期末联考质量检测英语含答案.doc
- 辽宁名校联盟2026年1月高三上期末联考质量检测政治含答案.doc
- 黑龙江省龙江教育联盟2026年1月高三上学期期末考试化学含答案.doc
- 黑龙江省龙江教育联盟2026年1月高三上学期期末考试生物含答案.doc
原创力文档

文档评论(0)