初级驱动模板之【hello】

linux内核模块基本组成

===============

1. 模块头文件

#include<linux/init.h>

#include<linux/module.h>

2. 模块加载函数(入口函数)

初始化工作

3. 模块卸载函数

一般跟加载函数完成相反的工作

4. 模块许可声明

"GPL" : 表示你有发布软件的自由

/*************************************************************************
	> File Name: hello.c
	> Author: 梁惠涌
	> Addr:
	> Created Time: 2015年05月15日 星期五 20时16分57秒
 ************************************************************************/
//1  头文件
#include<linux/init.h>
#include<linux/module.h>

//2  模块加载
static int  __init hello_init(){
    printk(KERN_INFO"hello is module!\n");
    return 0;
}

//3  模块卸载
static void __exit hello_exit(){
    printk(KERN_INFO"hello is unmod!\n");
}

//4  模块许可声明
module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("GPL");
ifeq ($(KERNELRELEASE),)
	KERNELDIR =/home/farsight/work/kernel/linux-3.0.8
	PWD =$(shell pwd)
modules:
	$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
	cp hello.ko /opt/filesystem/s5pv210
modules_install:
	$(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install
clean:
	rm -rf *.so *.o *.ko  .tmp_versions *.mod.c *.order *.symvers
else
	obj-m :=hello.o
endif

时间: 2024-12-22 09:37:46

初级驱动模板之【hello】的相关文章

初级驱动模板之实现【驱动模板信息】

博客:http://blog.csdn.net/muyang_ren /************************************************************************* > File Name: hello.c > Author: 梁惠涌 > Addr: > Created Time: 2015年05月15日 星期五 20时16分57秒 ************************************************

linux驱动开发重点关注内容--摘自《嵌入式Linux驱动模板精讲与项目实践》

本文摘自本人拙著 <嵌入式Linux驱动模板精讲与项目实践> 初步看起来Linux设备驱动开发涉及内容非常多,而须要实现驱动的设备千差万别.事实上做一段时间驱动之后回首看来主要就是下面几点: (1)对驱动进行分类.先归纳为哪个类型的驱动.归类正确再利用内核提供的子系统进行开发,往往会发现事实上非常多通用的事情内核已经帮我们做了,一个优秀的驱动project师应该最大程度上利用内核的资源.内核已经实现的毕竟稳定性强.可移植性高. (2)找到内核的提供的子系统.接下来就是要制作该子系统对该类设备提

Linux开源模块移植概述暨交叉编译跨平台移植总结--摘自《嵌入式Linux驱动模板精讲与项目实践》

本文摘自<嵌入式Linux驱动模板精讲与项目实践>一书中的"开发与调试技巧". Linux的强大威力就在于有很多开源项目可以使用,通常很多需求可以通过寻找相关的开源模块做为快速解决方案.要把这些开源模块应用到嵌入式中,其中一个关键点就是要使用交叉编译工具对开源项目进行交叉编译. 根据具体情况,下载的开源项目在组织上有很多情况,在此对各种情况进行归类介绍. 1. 下载的开源软件包找不到Makefile 对于这种开源包通常是采用configure的方式组织的,那么第一步就是使用

Linux开源模块迁移概述暨交叉编译跨平台移植总结--从《嵌入式Linux驱动模板简洁和工程实践》

本文摘录<嵌入式Linux驱动模板简洁和工程实践>一本书"开发和调试技术". Linux强大的是,有那么多的开源项目可以使用.通常非常需要可以通过寻找相关的源模块被定义为高速的解决方案.使这些开源模块的嵌入.对开源项目进行交叉编译. 依据详细情况.下载的开源项目在组织上有非常多情况,在此对各种情况进行归类介绍. 1. 下载的开源软件包找不到Makefile 对于这样的开源包一般是採用configure的方式组织的,那么第一步就是使用软件包中的configure生成Makef

Linux MTD子系统 _从模型分析到Flash驱动模板

MTD(Memory Technology Device)即常说的Flash等使用存储芯片的存储设备,MTD子系统对应的是块设备驱动框架中的设备驱动层,可以说,MTD就是针对Flash设备设计的标准化硬件驱动框架.本文基于3.14内核,讨论MTD驱动框架. MTD子系统框架 设备节点层:MTD框架可以在/dev下创建字符设备节点(主设备号90)以及块设备节点(主设备号31), 用户通过访问此设备节点即可访问MTD字符设备或块设备. MTD设备层: 基于MTD原始设备, Linux在这一层次定义出

misc设备驱动模板-linux

闲来无事,丢个misc驱动模板就跑  #include <linux/kernel.h> #include <linux/module.h> #include <linux/miscdevice.h> #include <linux/fs.h> #include <linux/types.h> #include <linux/moduleparam.h> #include <linux/slab.h> #include &

【驱动】Linux初级驱动系列框架

[系统环境搭建] 1.uboot的命令 set serverip 192.168.7.xx set ipaddr 192.168.7.xxx set bootcmd tftp 20800000 zImage\;bootm 20800000 //开发模式 set bootcmd nand read 20800000 40000 2000000\;bootm 20800000 //产品模式 set bootargs root=/dev/nfs nfsroot=192.168.7.xx:/opt/ro

喜羊羊系列之【初级驱动--模块通信】

#include<linux/init.h> #include<linux/module.h> int add(int i,int j){ return i+j; } int sub(int i,int j){ return i-j; } EXPORT_SYMBOL(add); EXPORT_SYMBOL(sub); MODULE_LICENSE("GPL"); #include<linux/init.h> #include<linux/mod

Angular 2 + 折腾记 :(7) 初步了解表单:模板驱动及数据驱动及脱坑要点

前言 表单在整个系统中的作用相当重要,这里主要扯下响应表单的实现方式. 首先需要操作表单的模块引入这两个模块: import { FormsModule, ReactiveFormsModule } from '@angular/forms'; 表单控件响应的几种状态 模板驱动表单依赖FormsModule,数据驱动的表单依赖FormsModule,ReactiveFormsModule 一般做表单校验及操作推荐用数据驱动的方式,好维护和理解.. 模板驱动 模板驱动:主要是依赖[(ngModel