- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux驱动开发学习的一些必要步骤
HYPERLINK /hoys/archive/2010/12/24/1916379.html Linux驱动开发学习的一些必要步骤
1. 学会写简单的makefile
2. 编一应用程序,可以用makefile跑起来
3. 学会写驱动的makefile
4. 写一简单char驱动,makefile编译通过,可以insmod, lsmod, rmmod. 在驱动的init函数里打印hello world, insmod后应该能够通过dmesg看到输出。
5. 写一完整驱动, 加上read, write, ioctl, polling等各种函数的驱动实现。 在ioctl里完成从用户空间向内核空间传递结构体的实现。
6. 写一block驱动, 加上read,write,ioctl,poll等各种函数实现。
7. 简单学习下内存管理, 这个是最难的,明白各种memory alloc的函数实现细节。这是Linux开发的基本功。
8. 学习锁机制的应用,这个不是最难的但是最容易犯错的,涉及到很多同步和并发的问题。
?9. 看内核中实际应用的驱动代码。 你会发现最基本的你已经知道了, 大的框架都是一样的, 无非是read, write, ioctl等函数的实现, 但里面包含了很多很多细小的实现细节是之前不知道的。 这时候就要考虑到很多别的问题而不仅仅是基本功能的实现。 推荐您看2.6.20中integrated的一个驱动 kvm, 记得是在driver/lguest下,很好玩的, 就是Linux下的虚拟机驱动, 代码不长,但功能强大。有能力的可以自己写一操作系统按照要求做成磁盘镜像加载到虚拟机中, 然后客户机可以有自己的4G虚拟地址空间。
10. 看完驱动欢迎您进入Linux kernel学习中来。 最简单的方法,跟着ldd(Linux devive driver)做一遍。
Makefile 是如何编写
eg:
# 这是上面那个程序的 Makefile 文件 1
main:main.o mytool1.o mytool2.o 2
gcc -o main main.o mytool1.o mytool2.o 3
main.o:main.c mytool1.h mytool2.h 4
gcc -c main.c 5
mytool1.o:mytool1.c mytool1.h 6
gcc -c mytool1.c 7
mytool2.o:mytool2.c mytool2.h 8
gcc -c mytool2.c 9
分析:
在 Makefile 中也#开始的行都是注释行.Makefile 中最重要的是描述文件的依赖关系的说
明.一般的格式是: Linux 操作系统 C 语言编程入门
target: components //表示的是依赖关系
TAB rule //规则
main:main.o mytool1.o mytool2.o 表示我们的目标(target)main 的依赖对象(components)是 main.o mytool1.o mytool2.o 当倚赖的对象在目标修改后修改的话,就要去执行规则一行所指定的命令.就象我们的上
面那个 Makefile 第3行所说的一样要执行 gcc -o main main.o mytool1.o mytool2.o
(注意规则一行中的 TAB表示那里是一个 TAB 键)
Makefile 有三个非常有用的变量.分别是$@,$^,$代表的意义分别是:
$@--目标文件; $^--所有的依赖文件; $--第一个依赖文件。
字符设备驱动
Linux字符设备驱动的关键数据结构cdev及file_operations结构体的操作方法,并分析了Linux字符设备的整体结构,给出了简单的设计模板.
2.1、驱动结构
1) cdev结构体(cdev结构体描述字符设备)
定义:
1 struct cdev {
3 struct kobject kobj; /* 内嵌的kobject对象 */
4 struct module *owner; /*所属模块*/
5 struct file_operations *ops; /*文件操作结构体*/
6 struct list_head list;
7 dev_t dev; /*设备号*/ 定义了设备号
8 unsigned int count;
9 };
dev_t 成员定义了设备号,为 3
您可能关注的文档
- K3+4415箱涵施工方案.doc
- K72+800圆管涵施工方案doc文档.doc
- K6K7质量管理协议.doc
- k32+231钢筋混凝土盖板涵工程施工组织设计2.doc
- K78+63552-2m盖板涵接长方案吊轨梁.doc
- KA2003DH型小电流选线装置技术协议.doc
- KAD-108A+门禁用户使用手册.doc
- Ka-50无线电导航手册.doc
- K78+6582-2m盖板涵涵接长方案吊轨梁.doc
- K53+83355~K53+86355右幅左侧挡土墙施工方案.doc
- 2024高考物理一轮复习规范演练7共点力的平衡含解析新人教版.doc
- 高中语文第5课苏轼词两首学案3新人教版必修4.doc
- 2024_2025学年高中英语课时分层作业9Unit3LifeinthefutureSectionⅢⅣ含解析新人教版必修5.doc
- 2024_2025学年新教材高中英语模块素养检测含解析译林版必修第一册.doc
- 2024_2025学年新教材高中英语单元综合检测5含解析外研版选择性必修第一册.doc
- 2024高考政治一轮复习第1单元生活与消费第三课多彩的消费练习含解析新人教版必修1.doc
- 2024_2025学年新教材高中英语WELCOMEUNITSectionⅡReadingandThi.doc
- 2024_2025学年高中历史专题九当今世界政治格局的多极化趋势测评含解析人民版必修1.docx
- 2024高考生物一轮复习第9单元生物与环境第29讲生态系统的结构和功能教案.docx
- 2024_2025学年新教材高中英语UNIT5LANGUAGESAROUNDTHEWORLDSect.doc
最近下载
- 会计学原理23版 英文版课件WildFAP23eCh05PPT.pptx
- 华为公司职类职种职级体系的划分及职业发展通道设计.pdf VIP
- 建筑解析流水别墅.pptx
- 2025届高三英语复习语法填空专题(24张PPT).pptx VIP
- 基于PLC的磨矿控制系统设计.docx
- 有限元分析论文.doc VIP
- 苏教版小学科学五年级上册第四单元《水在自然界的循环》大单元教学设计(含练习).docx
- 聚氯乙烯热收缩膜标签验收标准.doc VIP
- 2023年安徽省高中学业水平合格性考试数学试卷真题(含答案详解) (2).pdf VIP
- 2025届江苏省南菁高级中学物理高一第一学期期中达标检测模拟试题含解析.doc
文档评论(0)