1.2 简单的驱动源码分析

1、简单的驱动源码

#include <linux/module.h>    //module_init() module_exit()
#include <linux/init.h>      //__init __exit

//__init是一个宏定义,#define __init xxx,作用是编译时,将__init修饰的
//函数放入.init.text中,内核启动时会统一加载.init.text段,加载后释放
static int __init chrdev_module_init(void)
{
    //printk是内核源码中用来打印信息的函数,KERN_DEBUG是打印级别
    printk(KERN_DEBUG "chrdev_module_init");
    
    return 0;
}

static void __exit chrdev_module_exit(void)
{
    printk(KERN_DEBUG "chrdev_module_exit");
}

module_init(chrdev_module_init);
module_exit(chrdev_module_exit);

//宏定义
MODULE_LICENSE("GPL")                 //模块的许可证
MODULE_AUTHOR("xy_L")                 //模块的作者
MODULE_DESCIPTION("chrdev module")    //模块的描述
MODULE_ALIAS("module_test")           //模块的别名

2、printk打印级别

#define KERN_EMERG   "<0>"   /* systemis unusable */
#define KERN_ALERT   "<1>"   /* actionmust be taken immediately */
#define KERN_CRIT    "<2>"   /*critical conditions */
#define KERN_ERR     "<3>"   /* errorconditions */
#define KERN_WARNING "<4>"   /* warning conditions */
#define KERN_NOTICE  "<5>"   /* normalbut significant */
#define KERN_INFO    "<6>"   /*informational */
#define KERN_DEBUG   "<7>"   /*debug-level messages */

3、Makefile

# 开发板的linux内核的源码树目录
KERN_DIR = /root/driver/kernel

obj-m    += module_test.o

all:
    make -C $(KERN_DIR) M=`pwd` modules 

.PHONY: clean    
clean:
    make -C $(KERN_DIR) M=`pwd` modules clean

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值