linux驱动学习之HelloWorld

作者: daodaoliang@yeah.net
日期: 2017年8月8日10:46:59
版本: V 0.0.1


0x00 背景描述

  • 在linux系统下,系统内核分为三种类型,字符设备/块设备/网络设备
  • 第一个驱动程序 hello world 将按照块设备进行

0x01 测试驱动代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <linux/init.h>;
#include <linux/module.h>;
//内核2.6以上版本建议我们加上这个license
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 "Goodbye, cruel world\n");
}
module_init(hello_init);
module_exit(hello_exit);

0x02 MakeFile文件编写

1
2
3
4
5
6
7
obj-m:=hello.o
KERNELDIR:=/lib/modules/4.4.0-98-generic/build
PWD:=$(shell pwd)
modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
modules_install:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install

0x03 编译操作

1
make

0x04 安装驱动

动态加载驱动模块:

1
insmod hello.ko

查看已安装的模块:

1
lsmod

查看打印输出:

1
2
dmesg | tail
#可以看到 helloworld。
daodaoliang wechat
点击上面图片后用微信扫描,你就能认识一个有趣的灵魂了呀。
请我喝杯咖啡吧