最小驱动模块:

最简单的Makefile

无配置文件

最小驱动的四部分

  头文件

  声明模块信息

  模块驱动的入口、出口

  功能区

关于这个头文件的分析:

linux头文件的位置,例如#include<linux/module.h>的头文件,

它是在linux源码目录下的 include/linux/module.h文件。

头文件的内容主要有,GPL协议,如果你不声明GPL协议,

你的模块将无法在linux中使用。

#include<linux/init.h>

包含初始化宏定义的头文件,代码中的函数module_init和module_exit

在此文件中

入口函数module_init(x)

出口函数module_exit(x)

写一个整体的例子:

新建文件 mini_linux_module.c

#include<linux/init.h>

#include<linux/module.h>

MODULE_LICENSE(" Dual BSD/GPL");  //一个协议

MODULE_AUTHOR("TOPEET")           //作者

//下面这里是功能区

static init hello_init(void)

{

printk(KERN_EMERG "HELLO WORLD enter ! \n");  //进入的时候打印文字  ,红字部分是权限

return 0;

}

static init hello_exit(void)

{

}

module_init(hello_init);

module_init(hello_exit);

上面代码已经写完了。

下面是驱动模块的编译,

一般和linux源码放在一起编译,

这样可以省掉makefile文件。

编译流程分析:

make命令

会调用makefile

系统会进行linux模块的编译

查找用的哪个linux源码

搜集信息

返回到linux模块编译

找到要编译的.c文件

生成.ko文件

实验操作部分:

拷贝两个文件到虚拟机,执行Make命令,编译生成KO文件

在window下写的Makefile文件拷贝到Linux中可能会有点小问题

主要是Tab问题

all和clean参数后面的必须添加Tab键,

否则会报错“*** missing separator Stop”

编译会生成KO文件,KO就是驱动模块。模块就需要加载模块和卸载模块。

开发板运行最小linux系统

使用U盘(或者tf卡),将KO文件拷贝到linux最小系统

加载U盘 mount /dev/sda1   /mnt/udisk/ (查看使用手册)

加载模块、查看模块、卸载模块

insmod加载模块命令

lsmod查看模块命令

rmmod卸载模块命令

小结:

linux代码中记得添加GPL协议

掌握驱动入口和出口函数的调用(也可以说是宏的调用)

对Makefile文件有简单的了解,回访写

掌握加载、查看、卸载模块的命令

DriverModule_01的更多相关文章

随机推荐

  1. C# double保留四位小数

    2.保留N位,四舍五入 . decimal d= decimal.Round(decimal.Parse("0.55555"),4); 3.保留N位四舍五入 Math.Round( ...

  2. java实现折半查找

    package althorgrim;/** * 1.必须采用顺序存储结果 * 2.关键字必须有序 * @author hanrk-2734 * */public class TestBinarySe ...

  3. Copying GC (Part one)

    目录 GC复制算法 copy()函数 将传递给自己的参数复制,然后递归复制其孩子 new_obj()函数 执行过程 缺点 Cheney的GC复制算法 copy()函数 执行过程 被隐藏的队列 优缺点 ...

  4. 喜马拉雅FM

    import requestsimport jsonstart_url ='https://www.ximalaya.com/revision/play/album?albumId=3595841&a ...

  5. CCF模拟 无线网络

    无线网络 时间限制: 1.0s 内存限制: 256.0MB   问题描述 目前在一个很大的平面房间里有 n 个无线路由器,每个无线路由器都固定在某个点上.任何两个无线路由器只要距离不超过 r 就能互相 ...

  6. Introducing ASLR for FreeBSD

    Shawn WebbOliver Pinter10 July 2014http://www.hardenedbsd.org/ [ 1. Introduction ]Security in FreeBS ...

  7. 怎样更好的设计android图标,拉伸不变形等等系列长处,并且减小apk大小

    android mvp框架:dileber(https://github.com/dileber/dileber.git) 继续为大家介绍android mvp开源框架 dileber  今天主要是字 ...

  8. [易飞]一张领料单单身仓库&quot;飞了&quot;引起的思考

    [摘要]我司每月月初10号前財务要出报表.故10号前要做完毕本月结. PMC经理接到仓管员反馈. 物料-30408011003在账上怎么还有那么多?上次发料的时候已发完. 相应的领料单:5403-20 ...

  9. 第一天,Mysql安装,DDL(数据库定义语言),DBA,DML(数据库操纵语言),导入外面的sql文件

    把“D:\mysql-5.6.22-winx64\bin”添加到系统环境变量path中了,然后在任意目录可访问mysql等命令,这样如登录等操作就不需要进入MySQL安装目录才好执行! MySQL下载 ...

  10. mvc的个别对输入数据的验证

    一.手工验证绑定的参数 二.使用ValidationAttribute特性 三.让数据类型实现IValidatableObject接口 四.让数据类型实现IDataErrorInfo接口 http:/ ...