【设计分享】linux硬件驱动实例及编译模块加载

 


刚接触硬件底层驱动,通过小实例实现对代码编写,模块加载等的基本了解

一、新建hello.c文件

#include <linux/init.h>       
#include <linux/module.h>      


static int  __init  hello_init(void)      /*模块加载函数,通过insmod命令加载模块时,被自动执行*/
{
  printk(KERN_INFO " Hello World !\n");
  return 0;
}
static void  __exit  hello_exit(void)    /*模块卸载函数,当通过rmmod命令卸载时,会被自动执行*/
{
  printk(KERN_INFO " goodbye World !\n ");
}

module_init(hello_init);
module_exit(hello_exit);
      
MODULE_LICENSE("Dual BSD/GPL");  

二、在该目录下建立Makefile,在编译时自动调用该文件

obj-m :=hello.o                               //目标文件
#module-objs := file1.o file.o      //当模块有多个文件组成时,添加本句
KDIR :=/home/zengyihe/build      //内核路径,注意是指内核build路径,不是内核源文件路径
PWD := $(shell pwd)                    //模块源文件路径
all:
$(MAKE)  -C  $(KDIR)  M=$(PWD)  modules
@rm -rf *.mod.*                    //注意,Makefile的开始不要空格,只能是TAB
@rm -rf .*.cmd
@rm -rf *.o
@rm -rf Module.*
clean:
rm -rf *.ko


运行编译:make

对产生的文件:insmod   hello.ko    这样便将模块加载到内核中去了,此时可以看到屏幕上打印出 

Hello World !
移除模块:rmmod hello  此时显示出

goodbye World !



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值