关闭

Linux驱动学习(模块1)

标签: linux驱动
149人阅读 评论(0) 收藏 举报
分类:

驱动学习第一篇 hello world

hello.c

/*************************************************************************
*       > File Name: hello.c
*       > Author: Devil_box
*       > Mail: 18855953390@163.com
*       > Created Time: 2016年05月20日 星期五 14时07分58秒
*       > Introduction: 
 ************************************************************************/
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>

MODULE_LICENSE ("GPL");


//模块加载函数
int __init init_module (void)
{
        printk("This module was added by the kernel!\n");
        return 0;
}


//模块卸载函数
void __exit cleanup_module (void)
{
        printk("This module was removed by the kernel!\n");
}


Makefile

NELRELEASE enviroment value
ifeq ($(KERNELRELEASE),)
#It's NULL, so to set the enviroment value


KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD :=$(shell pwd)

modules:
        $(MAKE) -C $(KERNELDIR) M=$(PWD) modules

modules_install:
        $(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install

clean:
        rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions Module* modules*



.PHONY: modules modules_install clean
#To create obj file
else
                obj-m := hello.o
endif

在终端里面 执行make,如下图所示:
这里写图片描述
生成ko文件。
再在root用户下,将ko文件加载到内核里面去。insmod 内核名
这里写图片描述

查看模块是否加载进去 lsmod
这里写图片描述
说明已经加载了进去,打印内核输出语句 dmesg
这里写图片描述
说明模块加载进内核并正常初始化
卸载模块 rmmod 内核名
这里写图片描述
查看内核输出结果

说明模块正常被卸载并打印卸载信息。

内核模块学习第一篇完!!

0
0

猜你在找
【直播】计算机视觉原理及实战—屈教授
【套餐】深度学习入门视频课程—唐宇迪
【套餐】Hadoop生态系统零基础入门--侯勇蛟
【套餐】嵌入式Linux C编程基础--朱有鹏
【套餐】2017软考系统集成项目——任铄
【套餐】Android 5.x顶级视频课程——李宁
【直播】广义线性模型及其应用——李科
【直播】从0到1 区块链的概念到实践
【直播】机器学习之凸优化——马博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:56917次
    • 积分:1311
    • 等级:
    • 排名:千里之外
    • 原创:75篇
    • 转载:7篇
    • 译文:0篇
    • 评论:5条
    文章分类
    最新评论