linux添加hello驱动,Linux驱动之建立一个hello模块
目标:在开发板上执行insmod hello.ko能在控制台打印出hello init;接着执行rmmod会在控制台打印出hello exit
建立一个hello模块的步骤如下:
1、建立一个hello.c文件,敲入一下代码
#include
#include
int major;
static int first_drv_init(void)
{
printk("hello init\n");
return ;
}
static void first_drv_exit(void)
{
printk("hello exit\n");
}
module_init(first_drv_init);//在insmod后会将first_drv_init调用
module_exit(first_drv_exit); //在rmmod后会将first_drv_exit调用
MODULE_LICENSE("GPL");//GPL协议
2、建立一个Makefile,填入如下代码,其中KERN_DIR为需要装载模块的内核源码路径,此源码路径必须成功编译过内核并且在开发板上跑起来。
KERN_DIR = /work/system/linux-2.6.22.6
all:
make -C $(KERN_DIR) M=`pwd` modules //M='pwd'表示当前目录。这句话的意思是利用内核目录下的Makefile规则来编译当前目录下的模块
clean:
make -C $(KERN_DIR) M=`pwd` modules clean
rm -rf modules.order
obj-m +=hello.o//调用内核目录下Makefile编译时需要用到这个参数
3、执行Make后,在目录下会产生hello.ko文件
4、将hello.ko文件拷贝到开发板的文件系统上。执行insmod可以看到有hello init输出,在执行rmmod可以看到有hello exit输出。
5、第一个模块建立成功
Linux驱动学习之常用的模块操作命令
1.常用的模块操作命令 (1)lsmod(list module,将模块列表显示),功能是打印出当前内核中已经安装的模块列表 (2)insmod(install module,安装模块),功能是向当前 ...
Linux驱动入门——构建和运行模块
Hello world模块 本文介绍如何向内核中添加一个hello模块.该模块的功能是在模块加载时,向系统日志输出"hello world\n" 在模块卸载时输出"Goo ...
在linux里如何建立一个快捷方式,连接到另一个目录
用软链接 用法:ln -s 源目录 目标快捷方式, 比如你要在/etc下面建立一个叫LXBC553的快捷方式,指向/home/LXBC,那就是 ln -s /home/LXBC /etc/LXBC ...
Linux驱动之内核加载模块过程分析
Linux内核支持动态的加载模块运行:比如insmod first_drv.ko,这样就可以将模块加载到内核所在空间供应用程序调用.现在简单描述下insmod first_drv.ko的过程 1.in ...
(57)Linux驱动开发之三Linux字符设备驱动
1.一般情况下,对每一种设备驱动都会定义一个软件模块,这个工程模块包含.h和.c文件,前者定义该设备驱动的数据结构并声明外部函数,后者进行设备驱动的具体实现. 2.典型的无操作系统下的逻辑开发程序是: ...
Linux驱动学习步骤(转载)
1. 学会写简单的makefile 2. 编一应用程序,可以用makefile跑起来 3. 学会写驱动的makefile 4. 写一简单char驱动,makefile编译通过,可以insmod, ls ...
1.7见识一下什么叫Linux驱动:LED
1.任何的Linux驱动都有一个装载函数(装载驱动时调用)和一个卸载函数(卸载驱动时调用): 2.装载函数和卸载函数分别通过module_init和module_exit宏指定.
Linux驱动开发学习的一些必要步骤
1. 学会写简单的makefile 2. 编一应用程序,可以用makefile跑起来 3. 学会写驱动的makefile 4. 写一简单char驱动,makefile编译通过,可以insmod, ...
嵌入式linux驱动开发之给linux系统添加温度传感器模块
忙了几天,终于可以让ds18b20在自己的开发板的linux系统上跑了!虽然ds18b20不是什么新鲜玩意,但是想想知己可以给linux系统添加模块了还是有点小鸡冻呢! 虽然说现在硬件的资源非常丰富而 ...
随机推荐
Java中的URL类
Java的网络类可以让你通过网络或者远程连接来实现应用.而且,这个平台现在已经可 以对国际互联网以及URL资源进行访问了.Java的URL类可以让访问网络资源就像是访问你本地的文件夹一样方便快捷.我们 ...
BaseAdapter的getView()方法
getView()是BaseAdapter的一个重要方法.为了研究getView()方法,使用了以下的类. // apk列表 class list_apk extends BaseAdapter{ p ...
SCCM 2007 R2部署、操作详解系列之概念
站点类型 在安装站点时,您决定它将是主站点还是辅助站点.然后,在安装其他站点时,您可以选择将其安排到层次结构关系中,以便父站点管理子站点,中央站点收集所有站点信息,从而进行集中式管理.也可以根据业务和 ...
weak 弱引用的实现方式
来源:冬瓜争做全栈瓜 链接:https://desgard.com/weak/ 对于 runtime 的分析还有很长的路,最近在写 block 系列的同时,也回顾一下之前疏漏的细节知识.这篇文章是关于 ...
linux mail 配置
1:sudo apt-get install sendmail sendmail-cf2:ps aux | grep sendmail3.配置/etc/mail/sendmail.mc FEAT ...
使用 Oracle Sql plus的一点经验
1 当你输入的语句有错误的时候,不用重新输入语句,直接输入ed就会出现一个文本文档显示之前输入的语句,这样你可以在文本文档里面修改语句,最后点保存. 2 三个set:设置每行显示的记录长度:SE ...
netty初探(1)
参考目录: 1. user-guide : http://netty.io/wiki/user-guide-for-4.x.html 2. demo: http://netty.io/wiki/ 3. ...
shell命令一行代码搞定【转】
查看文件内容-while: cat 1.txt|while read line;do echo $line;done while read line; do echo $line; done < ...
解决 eclipse buildpath的jar包不能复制到tomcat lib下的问题
环境: Eclipse 版本 Mars. 问题描述: Eclipse 开发的JavaWeb项目,通过buildpath的引入的jar包无法发布到tomcat对应应用的Lib 下. 解决办法: 1. 手 ...
JS实战
1. jquery取消点击事件 $("#dashboard").unbind("click"); 2.jquery绑定鼠标滑过,离开事件 $("#da ...
linux添加hello驱动,Linux驱动之建立一个hello模块相关推荐
- Floodlight 入门 之 起步篇 - 建立一个Floodlight模块
Floodlight 入门 之 起步篇 - 建立一个Floodlight模块 2017-3-1 网上也有不少关于Floodlight的入门教程了,我写该博文的目的主要是问了整理个人在学习和使用Floo ...
- linux添加windows网络打印机,Linux Mint如何添加windows分享的网络打印机?
1.安装samba sudo apt-get install samba 2.找到系统打印机选项 通过 Menu-->>控制中心-->>系统管理找到 Printers选项,双击 ...
- 嵌入式linux添加环境变量,Linux环境变量
前言: 1. 环境变量是操作系统环境设置的变量,适用于整个系统的用户进程: 2. 环境变量可以在命令中设置,但是用户注销的时候将会丢失这些设置值: 3. 若要重复适用,则最好在.profile中定义: ...
- linux添加qcc,Alpine Linux添加Let’s Encrypt CA证书或者自签CA证书
Alpine Linux添加Let's Encrypt CA证书或者自签CA证书 1. 用docker进行查看 进入容器, docker run -it alpine:latest /bin/sh 安 ...
- linux 添加宋体字符集,Linux下安装中文宋体
1,#cd /usr/share/fonts/default 2,mkdir -p ./truetype/simsun 3,取得simsun.ttc文件:如果网上下载不到则在windows (c:/w ...
- linux添加定时器防抖,linux驱动2.3按键中断-定时器防抖
本节目标: 通过定时器来防止按键抖动,测试程序是使用上节的:阻塞操作的测试程序 一.引入 如下图所示,在没有定时器防抖情况下,按键没有稳定之前会多次进入中断,使得输出多个相同信息出来 按键波形图,如下 ...
- arch linux添加用户,Arch Linux配置教程
以arch的基本系统为基础,我们可以对其进行各种配置操作,让其更符合个人喜好.下面介绍了一些常用的配置. 1.用户管理 新安装的arch只有一个root用户,使用root用户来进行日常系统管理是很危险 ...
- linux添加中文字库主线任务,Linux 添加中文字体库
背景:润乾报表 win上面的项目直接上传到linux 上,但预览&下载报表时乱码 如果含有斜线的单元格或统计图的报表在网页上发布时,统计图或斜线单元格里的汉字会变成小方框,此时往往是服务器端操 ...
- linux添加变量6,Linux下查看和添加环境变量
$PATH:决定了shell将到哪些目录中寻找命令或程序,PATH的值是一系列目录,当您运行一个程序时,Linux在这些目录下进行搜寻编译链接. 编辑你的 PATH 声明,其格式为: PATH=$PA ...
最新文章
- jupyter 写入csv pandas_Pandas 最详细教程在这里
- yolo类检测算法解析——yolo v3
- RedHat/CentOS发行版本号及内核版本号对照表
- sso和oauth2.0的简单了解学习
- python链表_使用python实现链表操作
- C++笔记-远程线程注入
- BZOJ 2049: [Sdoi2008]Cave 洞穴勘测——LCT
- 内容分发网络CDN(互联网技术)
- 全新开始fighting
- Spring mvc+ Hibernate的基础dao类。
- python双循环_双for循环到Python列表理解
- 20行代码简单python爬虫,爬虫实例
- FPGA——1位全加器的实现
- Android直播APP源码搭建中豪华物特效的实现
- kindeditor 编辑器手机访问默认为HTML编辑
- 灵感分享|10个优秀网站设计实例赏析及原型分享
- Artifact “xxx - xxxx“:war exploded: 部署工件时出错。请参阅服务器日志了解详细
- mySQL提取姓氏_MySQL 提取姓名大写首字母缩写
- 零基础转行IT学习什么好?
- LAND网络渗透测试
热门文章
- Linux下pppoe开机自动连接,Linux 系统 PPPoE 宽带连接设置方法
- 关于fedora35下载速度慢的办法
- P3799 妖梦拼木棒——枚举+组合数学
- 问题随记 ——【Windows】无法加载文件 C:\Users\Administrator\Documents\WindowsPowerShell\profile.ps1
- 什么是HDMI延长器?HDMI延长器应用在什么场合
- 使用了代理服务器之后突然浏览器不能打开网页的解决方法
- 海外生活: 胆小鬼驾车行走多伦多
- java socket 连接邮箱_Java与邮件系统交互之使用Socket验证邮箱是否存在
- 爬虫之ADSL拨号代理
- python-ppt