DriverModule_01
最小驱动模块:
最简单的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的更多相关文章
随机推荐
- Ubunut PPA源概述
Ubuntu 自带的“软件”应用,可以安装海量软件,既包括发行者支持的软件.社区支持的软件,也包括专有驱动和版权软件.有时,我们需要的软件通过这些渠道仍然无法找到.这时,可以到 PPA 软件源中查找. ...
- 使用acme.sh快速生成SSL证书
起因 早上收到了一封来自MySSL EE <noreply@notify.myssl.com>的邮件提示证书即将过期, 少于7天,但是acme.sh应该是60天自动renew的.于是查看下 ...
- CentOS桥接网卡配置
网桥方式配置步骤 1.增加网桥设备br0 vi /etc/sysconfig/network-scripts/ifcfg-br0 DEVICE=br0 ONBOOT=yes TYPE=Bridge B ...
- ChinaVis2015 第一天会议
第二届 ChinaVis 2015 在天津举行,非常幸运发现者个会议,并在导师的带领下參与本次会议. 主要要是以可视化与可视分析为背景进行讲座,以马匡六为Speaker.袁晓如,张加万等致辞开幕式. ...
- Rails + rabl
当我们使用rails generate scaffold的方式生成MVC的时候,rails会自己主动给我们生成一系列的文件,包含了怎样用json显示model的view.这样事实上默认了你的系统是一个 ...
- OCP将结束容器产业这个颠覆性产业的标准格式之争
编者注:本文英文版来自VentureBeat,中文版由天地会珠海分舵编译.当以Docker为首的容器正在席卷全球.蔚然成风的颠覆着原来的应用开发和公布方式的时候,容器标准之争却从来没有消停过.而标准之 ...
- HDU - 2254 奥运 (求等比数列和)
Description 北京迎来了第一个奥运会,我们的欢呼声响彻中国大地,所以今年的奥运金牌 day day up! 比尔盖兹坐上鸟巢里,手里摇着小纸扇,看的不亦乐乎,被俺们健儿的顽强拼搏的精神深深的 ...
- 在jsp页面中导入BootStrap中的文件
BootStrap应该放在项目的根目录下面 然后因为我的jsp页面跟html页面是写在HTML文件夹中,所以我路径的导入应该像下面的图一样,退回到上级目录再写路径.
- android framework 02
Android底层开发1.安装Ubuntu系统2.Ubuntu配置开发环境: sudo apt-get install git-core gnupg flex bison gperf zip sudo ...
- elasticsearch index 之 create index(二)
创建索引需要创建索引并且更新集群index matedata,这一过程在MetaDataCreateIndexService的createIndex方法中完成.这里会提交一个高优先级,AckedClu ...