Linux驱动学习(模块1)

原创 2016年05月30日 17:59:30

驱动学习第一篇 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 内核名
这里写图片描述
查看内核输出结果

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

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

linux内核驱动模块编程框架---(hello world模块)

linux内核驱动模块编程框架,模块Makefile文件,模块的常用操作命令(模块的加载卸载命令);重点来说下注册的回调函数,static int __init hello_init(void)和st...
  • YuZhiHui_No1
  • YuZhiHui_No1
  • 2014年10月18日 13:55
  • 2380

Linux下3G模块驱动加载方法

《ARM Linux开发-warewin 2G/3G无线传输(DTU)和路由器—笔记》 模块型号:中兴MC2716 内核版本:linux-2.6.36 加载过程如下: 1、模块ID号添加 进...
  • u013033022
  • u013033022
  • 2014年01月13日 17:12
  • 3406

Linux驱动静态加载和动态加载详解

说明:这是我最近给单位写的一篇文档,没有什么复杂的东东,对刚接触linuxdriver的朋友或许有点帮助。文档本来是针对我们自己的产品的,有些地方(路径、mknod、动态分配主设备号等)本来应该改改,...
  • Watson2016
  • Watson2016
  • 2016年08月08日 20:06
  • 3176

《Linux设备驱动程序》——构造和运行模块

一、设置测试系统  1、
  • Explorer_day
  • Explorer_day
  • 2014年10月30日 20:57
  • 1057

分享Linux内核学习和驱动开发的经验

回复 1# shenlanyouyu  临时想起一些说一下吧: 1. 分享Linux内核学习和驱动开发的经验。 内核学习 Linux 内核功能越来越完善,如果没有充裕的...
  • ruanjianruanjianruan
  • ruanjianruanjianruan
  • 2015年10月07日 22:47
  • 3712

嵌入式 linux驱动模块编译(初学者)

linux 模块编译步骤(转) 本文将直接了当的带你进入linux的模块编译。当然在介绍的过程当中,我也会添加一些必要的注释,以便初学者能够看懂。之所以要写这篇文章,主要是因为从书本上学的话,可...
  • skdkjxy
  • skdkjxy
  • 2013年12月02日 14:55
  • 1315

Linux 下wifi 驱动开发(三)—— SDIO接口WiFi驱动浅析

对于SDIO接口的wifi,首先,它是一个sdio的卡的设备,然后具备了wifi的功能,所以,注册的时候还是先以sdio的卡的设备去注册的。然后检测到卡之后就要驱动他的wifi功能了,显然,他是用sd...
  • zqixiao_09
  • zqixiao_09
  • 2016年04月09日 19:11
  • 18809

如何学好linux设备驱动

Linux系统目前主要维护2.4和2.6两个内核版本,在http://www.kernel.org/ 网站上已经可以下载到最新的2.6内核linux-2.6.38.6,及最新的2.4内核linux-2...
  • shuilaner_
  • shuilaner_
  • 2017年01月10日 16:32
  • 1238

Linux 下wifi 驱动开发(二)—— WiFi模块浅析

一、什么是wifi 模块         百度百科上这样定义:         Wi-Fi模块又名串口Wi-Fi模块,属于物联网传输层,功能是将串口或TTL电平转为符合Wi-Fi无线网络通信标准的嵌入...
  • zqixiao_09
  • zqixiao_09
  • 2016年04月09日 19:10
  • 10333

linux内核模块和驱动程序的编写

linux内核是一个整体是结构.因此向内核添加任何东西.或者删除某些功能 ,都十分困难.为了解决这个问题.  引入了内核机制.从而可以动态的想内核中添加或者删除模块.  模块不被编译在内核中,...
  • dj0379
  • dj0379
  • 2016年02月16日 15:06
  • 1082
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux驱动学习(模块1)
举报原因:
原因补充:

(最多只允许输入30个字)