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的更多相关文章
随机推荐
- OpenCV中InputArray和OutputArray使用方法
原文链接:http://blog.csdn.net/yang_xian521/article/details/7755101 看过OpenCV源代码的朋友,肯定都知道很多函数的接口都是InputArr ...
- POJ 3641 Pseudoprime numbers (miller-rabin 素数判定)
模板题,直接用 /********************* Template ************************/ #include <set> #include < ...
- Spring MVC源码——Servlet WebApplicationContext
上一篇笔记(Spring MVC源码——Root WebApplicationContext)中记录了下 Root WebApplicationContext 的初始化代码.这一篇来看 Servlet ...
- CODEVS——T1052 地鼠游戏
http://codevs.cn/problem/1052/ 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 D ...
- 欢天喜地迎国庆,国产开源编程语言 RPP 1.87 公布!
更新例如以下: 1.支持超级宏 2.修复bug 下载地址: https://github.com/roundsheep/rpp 超级宏能够随意定义语法,制约你的仅仅有想象力: void main() ...
- js---12数据类型,数据类型转换,NaN,
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...
- Elasticsearch之marvel(集群管理、监控)插件安装之后的浏览详解
前提 Elasticsearch之插件介绍及安装 https://i.cnblogs.com/posts?categoryid=950999&page=2 (强烈建议,从头开始看) 比如,我 ...
- api h5 sdk 接入的说明
api 接入 :纯后台接入没有页面 h5接入: 有页面的接入 需要和客户交互 客户输入内容 sdk 接入:需要对方的sdk文件 植入文件
- Python爬虫之『urlopen』
本文以爬取百度首页为示例来学习,python版本为python3.6.7,完整代码会在文章末附上 本次学习所用到的python框架:urllib.request 本次学习所用到的函数: urllib. ...
- Hive通过查询语句向表中插入数据过程中发现的坑
前言 近期在学习使用Hive(版本号0.13.1)的过程中,发现了一些坑,它们也许是Hive提倡的比关系数据库更加自由的体现(同一时候引来一些问题).也许是一些bug.总而言之,这些都须要使用Hive ...