- 1、本文档共46页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式应用程序设计第8章 嵌入式Linux设备驱动编程 第1章 搭建嵌入式Linux开发环境 第2章 嵌入式文件I/O编程 第3章 嵌入式Linux多任务编程 第4章 嵌入式Linux进程间通行 第5章 嵌入式Linux多线程编程 第6章 嵌入式Linux网络编程 第7章 Qt图形编程 第8章 嵌入式Linux设备驱动编程 第9章 Qt聊天项目设计 8.1 设备驱动编程基础 8.2 字符设备驱动编程 8.3 GPIO驱动程序实例 8.4 按键驱动编程实例 8.5 小结 8.6 思考与练习 8.1.1 Linux设备驱动概述 设备驱动概念 操作系统是通过各种驱动程序来驾驭硬件设备的,它为用户屏蔽了各种各样的设备,驱动硬件是操作系统最基本的功能,并且提供统一的操作方式。设备驱动程序是操作系统最基本的组成部分之一,在Linux内核源程序中也占有60%以上。因此,熟悉驱动的编写是很重要的。 Linux的一个重要特点就是将所有的设备都当做文件进行处理,这一类特殊文件就是设备文件(通常在/dev目录下),这样在应用程序看来,硬件设备只是一个设备文件,应用程序可以象操作普通文件一样对硬件设备进行操作,这样就大大方便了对设备的处理。 8.1.1 Linux设备驱动概述 Linux系统的设备分为三类:字符设备、块设备和网络设备。 字符设备通常指像普通文件或字节流一样,以字节为单位顺序读写的设备, 如并口设备、虚拟控制台等。 块设备通常指一些需要以块为单位随机读写的设备,如IDE硬盘、SCSI硬盘、光驱等。 网络设备通常是指通过网络能够与其他主机进行数据通信的设备,如网卡等。 8.1.1 Linux设备驱动概述 设备驱动程序的特点 内核代码 内核接口 内核机制和服务 可装载 可设置 动态性 8.1.1 Linux设备驱动概述 设备驱动程序与整个软硬件系统的关系 8.1.2 Linux内核模块编程 设备驱动和内核模块 Linux设备驱动属于内核的一部分,Linux内核的一个模块可以以两种方式被编译和加载。 直接编译进Linux内核,随同Linux启动时加载; 编译成一个可加载和删除的模块。 8.1.2 Linux内核模块编程 模块相关命令 lsmod列出当前系统中加载的模块 rmmod是用于将当前模块卸载。 insmod和modprobe是用于加载当前模块 8.1.2 Linux内核模块编程 Linux内核模块编程 一个Linux内核模块主要由以下几个部分组成。 模块加载函数(必须) 模块卸载函数(必须) 模块许可证声明(必须 模块参数(可选) 模块导出符号(可选) 模块作者等信息声明(可选) 8.1.2 Linux内核模块编程 Linux内核模块编程 模块加载函数 static int __init initialization_function(void) { /* 初始化代码 */ } module_init(initialization_function); 模块卸载函数 static void __exit cleanup_function(void) { /* 释放代码 */ } module_exit(cleanup_function); 8.1.2 Linux内核模块编程 Linux内核模块编程 通常来说,模块卸载函数要完成与模块加载函数相反的功能 若模块加载函数注册XXX,则模块卸载函数应该注销XXX。 若模块加载函数动态申请了内存,则模块卸载函数应释放该内存。 若模块加载函数申请了硬件资源(中断、DMA通道、I/O端口和I/O内存等)的占用,则模块卸载函数应释放这些硬件资源。 若模块加载函数开启了硬件,则卸载函数中一般要关闭硬件。 8.1.2 Linux内核模块编程 Linux内核模块编程 模块参数 “module_param(参数名,参数类型,参数读/写权限)”为模块定义一个参数 static char *str_param = Linux Module Program; static int num_param = 4000; module_param(num_param, int, S_IRUGO); module_param(str_param, charp, S_IRUGO); 8.1.2 Linux内核模块编程 Linux内核模块编程 导出符号 EXPORT_SYMBOL(符号名); EXPORT_SYMBOL_GPL(符号名); 模块声明与描述 MODULE_AUTHOR(author); MODULE_DESCRIPTION(description); MODULE_VERSION(version_string); MODU
您可能关注的文档
- 嵌入式系统技术教程 教学课件 作者 张石 第四章ARM程序设计基础.ppt
- 嵌入式系统技术教程 教学课件 作者 张石 第五章 应用系统设计与调试.ppt
- 嵌入式系统技术教程 教学课件 作者 张石 第一章ARM微处理器概述.ppt
- 嵌入式系统技术教程 教学课件 作者 张石 教学安排.ppt
- 嵌入式系统技术与设计 第2版 教学课件 作者 华清远见教育集团 刘洪涛 苗德行 第1章 嵌入式系统概述.ppt
- 嵌入式系统技术与设计 第2版 教学课件 作者 华清远见教育集团 刘洪涛 苗德行 第2章 ARM体系结构与指令集1.ppt
- 嵌入式系统技术与设计 第2版 教学课件 作者 华清远见教育集团 刘洪涛 苗德行 第3章 ARM汇编语言程序设计1.ppt
- 嵌入式系统技术与设计 第2版 教学课件 作者 华清远见教育集团 刘洪涛 苗德行 第4章 嵌入式软件基础实验.ppt
- 嵌入式系统技术与设计 第2版 教学课件 作者 华清远见教育集团 刘洪涛 苗德行 第5章 ARM应用系统设计.ppt
- 嵌入式系统技术与设计 第2版 教学课件 作者 华清远见教育集团 刘洪涛 苗德行 第7章 嵌入式操作系统及开发简述.ppt
- 剧本杀行业报告:内容创作规范与剧本市场拓展策略.docx
- 剧本杀行业区域市场区域文化特色与市场潜力分析报告.docx
- 剧本杀行业区域市场拓展实战案例研究.docx
- 剧本杀行业区域市场拓展路径与模式探索报告.docx
- 剧本杀行业区域市场竞争态势与品牌差异化策略研究报告.docx
- 剧本杀行业2025年西北区域市场市场细分领域竞争态势与品牌竞争策略分析研究报告.docx
- 剧本杀行业2025年西北市场拓展前景预测报告.docx
- 剧本杀行业2025年长沙市场发展潜力分析报告.docx
- 剧本杀行业2025年长三角市场竞争策略与布局分析.docx
- 医疗行业数据合规:2025年数据安全法实施后的合规监管挑战与应对.docx
最近下载
- 《第一单元 生活中的音乐学习项目二 音乐开启心灵之窗》教案(表格式)七年级音乐人教版(2024新版).pdf VIP
- 成功标书大餐——15份浙江省自然科学基金申请书.pdf VIP
- (辽宁富士电梯)系统故障代码及说明.doc VIP
- 2025版高考政治全程一轮复习必修2第一单元生产资料所有制与经济体制第一课我国的生产资料所有制课件.pptx VIP
- 陕西省专业技术人员继续教育2025公需课《党的二十届三中全会精神解读与高质量发展》20学时题库及答案.docx VIP
- 伤口换药护理操作.pptx VIP
- 贵州01-贵州省居住建筑节能设计标准DBJ52-49-20082.pptx VIP
- 《2023年度中国展览数据统计报告》.docx
- 城市名居商住楼房地产估价报告.doc VIP
- [说明]富士变频器维修与故障处理.doc VIP
文档评论(0)