linux底层驱动内核,Linux底层驱动开发需要学习哪些内容

本文介绍了Linux底层驱动开发所需掌握的知识,包括硬件基础、makefile编写、驱动编译及加载,强调了内存管理和锁机制的重要性。此外,还提到了字符设备驱动的关键数据结构cdev和file_operations,以及如何注册和注销字符设备。最后,讨论了设备号的分配和释放,以及file_operations结构体中各成员函数的作用。
摘要由CSDN通过智能技术生成

Linux底层驱动开发需要学习哪些内容想必这是很多学习Linux的朋友十分头疼的问题,今天就让我来告诉大家我们到底该学习哪些内容呢?

1. 要会一些硬件知识,比如Arm接口编程

2. 学会写简单的makefile

3. 编一应用程序,可以用makefile跑起来

4. 学会写驱动的makefile

5. 写一简单char驱动,makefile编译通过,可以insmod, lsmod, rmmod. 在驱动的init函数里打印hello world, insmod后应该能够通过dmesg看到输出。

6. 写一完整驱动, 加上read, write, ioctl, polling等各种函数的驱动实现。 在ioctl里完成从用户空间向内核空间传递结构体的实现。

7. 写一block驱动, 加上read,write,ioctl,poll等各种函数实现。

8. 简单学习下内存管理, 这个是难的,明白各种memory alloc的函数实现细节。这是Linux开发的基本功。

9. 学习锁机制的应用,这个不是难的但是容易犯错的,涉及到很多同步和并发的问题。

10. 看内核中实际应用的驱动代码。 你会发现基本的你已经知道了, 大的框架都是一样的, 无非是read, write, ioctl等函数的实现, 但里面包含了很多很多细小的实现细节是之前不知道的。 这时候就要考虑到很多别的问题而不仅仅是基本功能的实现。 推荐您看2.6.20中integrated的一个驱动 kvm, 记得是在driver/lguest下,很好玩的, 就是Linux下的虚拟机驱动, 代码不长,但功能强大。有能力的可以自己写一操作系统按照要求做成磁盘镜像加载到虚拟机中, 然后客户机可以有自己的4G虚拟地址空间。

11. 看完驱动欢迎您进入Linux kernel学习中来。 简单的方法,跟着ldd(Linux devive driver)做一遍。

1、 Makefile 是如何编写

eg:

# 这是上面那个程序的 Makefile 文件

main:main.o mytool1.o mytool2.o

gcc -o main main.o mytool1.o mytool2.o

main.o:main.c mytool1.h mytool2.h

gcc -c main.c

mytool1.o:mytool1.c mytool1.h

gcc -c mytool1.c

mytool2.o:mytool2.c mytool2.h

gcc -c mytool2.c

分析:

在 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 有三个非常有用的变量.分别是$@,$^,$

$@--目标文件; $^--所有的依赖文件; $

1、 字符设备驱动

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;

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值