Linux驱动之HelloWorld

本文详细介绍了如何在Ubuntu 12.04环境下使用C语言编写Linux内核驱动,包括创建模块、Makefile配置以及加载与验证模块的过程,通过实例演示了从基本概念到实际操作的完整流程。

  最近看android的一些源码,里面有一些功能是用驱动实现的。于是就兴起看了一些驱动相关的东西,准备日后深入。这没有技术含量的水文,仅作为日后的备忘吧。

  系统使用的是ubuntu 12.0.04,内核是3.2.0。看很多别人的说法是写驱动之前先要编译内核源码树,但貌似在这个系统上是不要的,直接写C文件和Makefile文件,很快就能测试了。c文件如下:

  

 1 #include<linux/init.h>
 2 #include<linux/kernel.h>
 3 #include<linux/module.h>
 4 
 5 MODULE_LICENSE("zhongjinwen BSD/GPL");
 6 static int hello_init(void)
 7 {
 8     printk(KERN_ALERT"Hello,world\n");
 9     return 0;
10 }
11 
12 static void hello_exit(void)
13 {
14     printk(KERN_ALERT"Goodbye,Hello world\n");
15 }
16 module_init(hello_init);
17 module_exit(hello_exit);

Makefile文件:

obj-m:=hello.o
KERNELDIR:=/lib/modules/$(shell uname -r)/build
all:
    make -C $(KERNELDIR) M=$(shell pwd) modules
clean:
    rm -rf *.o *.order *.mod.c *.ko *.symvers

  终端输入make,会生成相应的ko文件。

  然后sudo insmod ./hello.ko。这时应该已经加载成功,可以使用sudo lsmod命令查看是否有hello这个模块。另外,输入命令cat /var/log/syslog,看到最后面显示“Hello,World”,也说明模块加载成功。

  linux驱动是一块比较难的内容,好好加油吧。

 

转载于:https://www.cnblogs.com/zhizhizhiyuan/p/3645983.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值