linux驱动之Hello world

接触驱动好多年了,但一直没有一个系统的归纳,现在重新从最简单的hello world驱动说起,后续将持续更新其它的驱动,所有的驱动TQ2440开发板进行学习

 

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>"/*调试级别的消息*/

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

 

hello.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_ALERT "Hello world!\n");

	return 0;
}

static void hello_exit(void)
{
	printk(KERN_ALERT "Good bye!\n");
}

module_init(hello_init);
module_exit(hello_exit);

 

 

 

///makefile///

obj-m := hello.o
KERNEL_DIR := /lib/modules/$(shell uname -r)/build
#KERNEL_DIR := /opt/linux-2.6.30.4/
PWD := $(shell pwd)

all:
	make -C ${KERNEL_DIR} M=${PWD} modules
clean:
	rm -rf *.o *.ko

 

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目标文件依赖hell.o



 

 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值