目标:在开发板上执行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模块相关推荐

  1. Floodlight 入门 之 起步篇 - 建立一个Floodlight模块

    Floodlight 入门 之 起步篇 - 建立一个Floodlight模块 2017-3-1 网上也有不少关于Floodlight的入门教程了,我写该博文的目的主要是问了整理个人在学习和使用Floo ...

  2. linux添加windows网络打印机,Linux Mint如何添加windows分享的网络打印机?

    1.安装samba sudo apt-get install samba 2.找到系统打印机选项 通过 Menu-->>控制中心-->>系统管理找到 Printers选项,双击 ...

  3. 嵌入式linux添加环境变量,Linux环境变量

    前言: 1. 环境变量是操作系统环境设置的变量,适用于整个系统的用户进程: 2. 环境变量可以在命令中设置,但是用户注销的时候将会丢失这些设置值: 3. 若要重复适用,则最好在.profile中定义: ...

  4. 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 安 ...

  5. linux 添加宋体字符集,Linux下安装中文宋体

    1,#cd /usr/share/fonts/default 2,mkdir -p ./truetype/simsun 3,取得simsun.ttc文件:如果网上下载不到则在windows (c:/w ...

  6. linux添加定时器防抖,linux驱动2.3按键中断-定时器防抖

    本节目标: 通过定时器来防止按键抖动,测试程序是使用上节的:阻塞操作的测试程序 一.引入 如下图所示,在没有定时器防抖情况下,按键没有稳定之前会多次进入中断,使得输出多个相同信息出来 按键波形图,如下 ...

  7. arch linux添加用户,Arch Linux配置教程

    以arch的基本系统为基础,我们可以对其进行各种配置操作,让其更符合个人喜好.下面介绍了一些常用的配置. 1.用户管理 新安装的arch只有一个root用户,使用root用户来进行日常系统管理是很危险 ...

  8. linux添加中文字库主线任务,Linux 添加中文字体库

    背景:润乾报表 win上面的项目直接上传到linux 上,但预览&下载报表时乱码 如果含有斜线的单元格或统计图的报表在网页上发布时,统计图或斜线单元格里的汉字会变成小方框,此时往往是服务器端操 ...

  9. linux添加变量6,Linux下查看和添加环境变量

    $PATH:决定了shell将到哪些目录中寻找命令或程序,PATH的值是一系列目录,当您运行一个程序时,Linux在这些目录下进行搜寻编译链接. 编辑你的 PATH 声明,其格式为: PATH=$PA ...

最新文章

  1. jupyter 写入csv pandas_Pandas 最详细教程在这里
  2. yolo类检测算法解析——yolo v3
  3. RedHat/CentOS发行版本号及内核版本号对照表
  4. sso和oauth2.0的简单了解学习
  5. python链表_使用python实现链表操作
  6. C++笔记-远程线程注入
  7. BZOJ 2049: [Sdoi2008]Cave 洞穴勘测——LCT
  8. 内容分发网络CDN(互联网技术)
  9. 全新开始fighting
  10. Spring mvc+ Hibernate的基础dao类。
  11. python双循环_双for循环到Python列表理解
  12. 20行代码简单python爬虫,爬虫实例
  13. FPGA——1位全加器的实现
  14. Android直播APP源码搭建中豪华物特效的实现
  15. kindeditor 编辑器手机访问默认为HTML编辑
  16. 灵感分享|10个优秀网站设计实例赏析及原型分享
  17. Artifact “xxx - xxxx“:war exploded: 部署工件时出错。请参阅服务器日志了解详细
  18. mySQL提取姓氏_MySQL 提取姓名大写首字母缩写
  19. 零基础转行IT学习什么好?
  20. LAND网络渗透测试

热门文章

  1. Linux下pppoe开机自动连接,Linux 系统 PPPoE 宽带连接设置方法
  2. 关于fedora35下载速度慢的办法
  3. P3799 妖梦拼木棒——枚举+组合数学
  4. 问题随记 ——【Windows】无法加载文件 C:\Users\Administrator\Documents\WindowsPowerShell\profile.ps1
  5. 什么是HDMI延长器?HDMI延长器应用在什么场合
  6. 使用了代理服务器之后突然浏览器不能打开网页的解决方法
  7. 海外生活: 胆小鬼驾车行走多伦多
  8. java socket 连接邮箱_Java与邮件系统交互之使用Socket验证邮箱是否存在
  9. 爬虫之ADSL拨号代理
  10. python-ppt