- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux驱动小解一.doc
驱动针对的对象是存储器和外设(包括cpu内部集成的存储器和外设),而不是针对cpu核。Linux将存储器和外设分为3大基础大类。
字符设备
块设备
网络设备
字符设备:指那些必须以串行顺序依次进行访问的设备。不经过系统的快速缓冲,对于flash设备而言,符合块设备的特点,但是我们还是以字符设备方式访问
块设备:可以任意顺序进行访问,以块为单位进行操作。经过系统的快速缓冲
虽然说两种设备有很大的差异,但是对于用户而言,他们都是使用文件接口函数来进行访问的,open(),close(),read(),write()等。
网络设备:Linux系统中,网络设备是针对数据包的发送和接收而设计的,它并不对应于文件系统的节点。与其他两个设备与内核之间通信方式完全不同。
对于一个Linux设备驱动与整个软硬件的系统的关系:
从用户应用程序—(c库)—linux系统调用接口—操作系统—硬件。
在操作系统中,有Linux文件系统、进程管理、内存管理、套接字等等
在操作系统和硬件之间的关系:
对于字符设备而言:Linux文件系统—字符设备驱动—硬件。
对于块设备而言:Linux文件系统—磁盘/Flash文件系统—块设备驱动—硬件
对于网络设备而言:套接字—TCP/IP—网络设备驱动—硬件
利用led驱动程序,提前体验一下驱动模块。
对于每一个模块而言
module_init(light_init);
在模块加载函数中,首先,根据主设备号和次设备生成dev_t,dev_t dev = MKDEV(light_major,0);要申请字符设备号:register_chrdev_region(dev,1,”LED”)
或者alloc_chrdev_region(dev,0,1,”LED”);light_major=MAJOR(dev);
分配设备结构体内存light_dev = kmalloc(sizeof(struct light_dev),
GFP_KERNEL);memset(light_dev,0,sizeof(struct light_deb))
设置字符设备cdev结构体:light_setup_cdev(light_devp,0)
Light_gpio_init();
module_exit(xxx_exit);
在模块卸载函数中:首先,删除字符设备结构体cdev_del(light_devp-cdev)。其次, 释放light_init中分配的内存。
最后删除设备unsigister_chrdev_region(MKDEV(LIGHT_MAJOR,0,1))
Linux内核的组成部分
Linux内核主要有进程调度(SCHED)、内存管理(MM)、虚拟文件系统(VFS)、网络接口(NET)和进程间通信(IPC)
进程调度:
启动内核线程函数:pid_t kernel_thread(int(*fun)(void),void *arg,unsigned long flags);
内存管理:
内存管理主要的作用是控制多个进程安全的共享主内存区域。当cpu提供内存管理单元的时候,linux内存管理完成每个进程进行虚拟内存到物理内存的转换。
虚拟文件系统:
网络接口:
网络接口对各种网络标准的存取和各种网络硬件的支持。在Linux中网络接口可以分为网络协议和网络驱动程序,网络协议部分是负责实现各种可能的网络传输协议,网络设备驱动程序负责与硬件设备通信,每一种可能的硬件设备都有相应的设备驱动程序。
进程间通信:
Linux支持进程间的多种通信机制,包含信号量、共享内存、管道、消息队列等
ARM处理器分为7中工作模式:用户模式(usr)、快速中断模式(fiq)、外部中断模式(irq)、管理模式(svc)、数据访问终止模式(abt)、系统模式(sys)、未定义指令中止模式(umd)
Linux内核模块
一个linux内核模块主要由以下几个部分组成:
模块加载函数:
当通道、过insmod或modprobe命令加载内核没,模块时,模块的加载函数回自动的被内核执行,完成本模块的相关初始化过程。
模块卸载函数:
当通过rmmod命令卸载某模块的时候模块的写在函数回自动的被内核执行,完成与模块加载相反的功能
模块许可申明函数:
许可证(LICENSE)声明描述内核模块的许可权限
模块参数(可选)
模块导出符号(可选)
模块作者等信息声明(可选)
Linux字符设备驱动结构
cdev结构体:在cdev中,两个很重要的成员:dev_t dev(设备号)和file_operation(支持操作结构体)
同时Linux还提供了一组函数用于操作cdev结构体
void cdev_init(struct dcev *,struct file_operatio
您可能关注的文档
- LED的基本术语VF.doc
- LED的封装结构及技术.doc
- LED的散热.doc
- led综述·····.doc
- led芯片知识.doc
- LED芯片知识大了解.doc
- LED英文术语汇总.doc
- LED行业摸底报告V..doc
- LED行业状况分析.doc
- LED输入输出功能应用设计.doc
- 新视野二版听说1第6单元示范1课件.ppt
- 【参考答案】 联络口译(第二版) 《联络口译》(第二版)参考答案.pdf
- 梅大高速茶阳路段“5·1”塌方灾害调查评估报告.docx
- 虹吸雨水PE管施工节点标准做法.pdf
- 2025消防设施施工质量常见通病防治手册,典型图示+规范要求.pptx
- 新视野大学英语(第二版)读写教程 4 空军工程大学编U05B.ppt
- E英语教程2(智慧版)Unit 6.pptx
- E英语教程3(智慧版)Unit 7.ppt
- 新视野二版读写1第4单元课件Section A How to Make a Good Impression.pptx
- E英语视听说教程4(智慧版)4-U2课件(2024版)U2.pptx
最近下载
- 2021年首届北京市大学生模拟法庭竞赛16进8淘汰赛赛题(二).docx VIP
- 2025年无锡工艺职业技术学院单招职业适应性测试题库及参考答案.docx VIP
- 旋元佑文法(2019新版)-01第一章 基本句型.docx
- 【地理】2023年云南省昆明市初中学业质量诊断性检测试题(解析版).pdf VIP
- 城市热岛效应.pptx VIP
- 小学科学新教科版一年级下册全册教案(2025春).pptx.doc
- 高教版 职业道德与法治 第四课在工作中做合格建设者.pptx VIP
- 固态法白酒行业深度研究分析报告(2024-2030版).docx
- 2025年高中生物研究性课题研究报告范文.pdf VIP
- 中山大学肿瘤学硕士复试试题.doc
文档评论(0)