Linux内核驱动程序Hello

1、printk打印输出的优先级

#define  KERN_EMERG     "<0>"/*紧急事件消息,系统崩溃之前提示,表示系统不可用*/
#define  KERN_ALERT      "<1>"/*报告消息,表示必须立即采取措施*/
#define  KERN_CRIT        "<2>"/*临界条件,通常涉及严重的硬件或软件操作失败*/
#define  KERN_ERR         " <3>"/*错误条件,驱动程序。常用KERN_ERR来报告硬件的错误*/
#define KERN_WARNING   "<4>"/*警告条件,对可能出现问题的情况进行警告*/
#define KERN_NOTICE   "<5>"/*正常但又重要的条件用于提醒常用于与安全相关的消息*/
#define KERN_INFO         "<6>"/*提示信息,如驱动程序启动时,打印硬件信息*/
#define KERN_DEBUG      "<7>"/*调试级别的消息*/

这些事内核打印出的基本消息,但是需要注意的不是那个宏定义都可以在终端上显示、但是可以肯定的一点是,你在调试的时候用到这些宏定义,一定在某些地方有显示,比喻在日志等一些文件下显示。

2,Makefile几个关键的语句说明

make -C $(KERNELDIR) M=$(PWD) modules

这句话的意思:

-C是改变make的执行目录,

$(KERNELDIR)是你本机的kernel的路径

M=$(PWD) modules 这个使Makefile在试图生成模块前,回到模块源码目录。说的直接点就是把改Makefile同目录下的modules给到M,执行make指令。

KERNELDIR:=/usr/src/kernels/2.6.25-14.fc9.i686

这个目录地址是你虚拟机的正确地址。注意2.6.25-14.fc9.i686这个是对应你的Linux主机的/usr/src/kernels下的文件夹的名称

obj-m:=hello.o目标文件依赖hello.o

开始写代码:

/*hello_module.c*/
#include<linux/init.h>
#include<linux/kernel.h>
#include<linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
    printk(KERN_EMERG "Hello ,Linux Driver!\n");
    return 0;
}
static void hello_exit(void)
{
    printk(KERN_EMERG "Hello Diver Exit !\n");
}
module_init(hello_init);
module_exit(hello_exit);

makefile文件

注意你的.c文件和你的makefile要放在同一个目录里面

执行make

补充:

1,Makefile的编写:

注意clean:

  make -C $(KERNELDIR) SUBDIRS=$(PWD) clean

这样可以全部清除其他文件,只留下Makefile和my.c,呵呵!

1,Linux 驱动程序开发体验篇HELLO

http://www.cnblogs.com/xmphoenix/archive/2011/10/24/2223148.html

2,linux 系统 ko模块编译

http://blog.csdn.net/elfylin/article/details/5908265

Linux内核驱动程序Hello

时间: 2024-10-09 18:34:10

Linux内核驱动程序Hello的相关文章

在Ubuntu上为Android增加硬件抽象层(HAL)模块访问Linux内核驱动程序(老罗学习笔记3)

在Android硬件抽象层(HAL)概要介绍和学习计划一文中,我们简要介绍了在Android系统为为硬件编写驱动程序的方法.简单来说,硬件驱动程序一方面分布在Linux内核中,另一方面分布在用户空间的硬件抽象层中.接着,在Ubuntu上为Android系统编写Linux内核驱动程序一文中举例子说明 了如何在Linux内核编写驱动程序.在这一篇文章中,我们将继续介绍Android系统硬件驱动程序的另一方面实现,即如何在硬件抽象层中增加硬件模块来和内核驱动程序交互.在这篇文章中,我们还将学习到如何在

在Ubuntu上为Android系统内置C可执行程序测试Linux内核驱动程序

文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6571210 在前一篇文章中,我们介绍了如何在Ubuntu上为Android系统编写Linux内核驱动程序.在这个名为hello的Linux内核驱动程序中,创建三个不同的文件节点来供用户空间访问,分别是传统的设备文件/dev/hello.proc系统文件/proc/hello和devfs系统属性文件/sys/class/hello/hello/v

在Ubuntu上为Android系统编写Linux内核驱动程序

文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6568411 在智能手机时代,每个品牌的手机都有自己的个性特点.正是依靠这种与众不同的个性来吸引用户,营造品牌凝聚力和用户忠城度,典型的代表非iphone莫属了.据统计,截止2011年5月,AppStore的应用软件数量达381062个,位居第一,而Android Market的应用软件数量达294738,紧随AppStore后面,并有望在8月份

在Ubuntu上为Android系统编写Linux内核驱动程序(老罗学习笔记1)

在智能手机时代,每个品牌的手机都有自己的个性特点.正是依靠这种与众不同的个性来吸引用户,营造品牌凝聚力和用户忠城度,典型的代表非iphone莫属了.据统计,截止2011年5月,AppStore的应用软件数量达381062个,位居第一,而Android Market的应用软件数量达294738,紧随AppStore后面,并有望在8月份越过AppStore.随着Android系统逐步扩大市场占有率,终端设备的多样性亟需更多的移动开发人员的参与.据业内统计,Android研发人才缺口至少30万.目前,

【转】第一个Linux内核驱动程序

原文网址:http://blog.csdn.net/nexttake/article/details/8181008 刚看 O’REILLY 写的<LINUX 设备驱动程序>时.作者一再强调在编写驱动程序时必须 建立内核树.所谓内核树,我的理解和网上资料说的一致就是内核源码的一种逻辑形式. 先查看自己OS使用的内核版本[email protected]:~$ uname -r2.6.22-14-generic           /*  这是我显示的结果 */如果安装系统时,自动安装了源码.在

在linux内核文件中添加自己的驱动,添加自己的linux驱动,编译自己的linux驱动程序方法和例子图文

此文章为done原创,转载请写明出处,尊重原创. 写这个文章,我参考了网上的一些博客: http://bbs.chinaunix.net/thread-3634524-1-1.html http://www.bkjia.com/gjrj/800182.html 也参考了参考了 <linux驱动开发详解>3.4章节,实现建立自己驱动目录. 文章中的驱动范例是:linux设备驱动开发详解第二版 的 global mem tow,宋宝华主编的书本光盘源码 在我们学习了linux的驱动之后,我们都想编

Linux内核--网络栈实现分析(十一)--驱动程序层(下)

本文分析基于Linux Kernel 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7555870 更多请查看专栏,地址http://blog.csdn.net/column/details/linux-kernel-net.html 作者:闫明 注:标题中的”(上)“,”(下)“表示分析过程基于数据包的传递方向:”(上)“表示分析是从底层向上分析.”(下)“表示分析是从上向下分析. 在博文Linux内核--网络栈

戴文的Linux内核专题:03 驱动程序【转】

转自:http://www.lai18.com/content/432194.html 驱动程序是使内核能够沟通和操作硬件或协议(规则和标准)的小程序.没有驱动程序,内核不知道如何与硬件沟通或者处理协议(内核实际上先发送指令给BIOS,然后BIOS传给硬件). Linux的内核代码在驱动程序文件夹中以源代码的形式包含了许多驱动程序.驱动文件夹中的每个文件夹会在下面说明.在配置和 编译内核时,这样有助于你了解驱动程序.否则,用户可能会在编译时加入不必要的或者漏掉重要的驱动.驱动代码通常会包含一个单

Linux内核--网络栈实现分析(三)--驱动程序层+链路层(上)

本文分析基于Linux Kernel 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7497260 更多请看专栏,地址http://blog.csdn.net/column/details/linux-kernel-net.html 作者:闫明 注:标题中的”(上)“,”(下)“表示分析过程基于数据包的传递方向:”(上)“表示分析是从底层向上分析.”(下)“表示分析是从上向下分析. 经过前面两篇博文的分析,已经对L