ubuntu下的driver编译环境构建以及第一个字符驱动:helloworld

ubuntu下是可以进行一些驱动开发和调试的,编译driver所依赖的kernel header其实Ubuntu也是有提供的。

一、安装kernel header:

1.1获取Ubuntu的内核版本号:

1
uname -r

我这里的运行结果:

  5.4.0-42-generic

1.2 安装

 那么,直接安装对应的kernel header就可以执行如下命令:

1
sudo apt install linux-headers-`uname -r`

安装成功后,可以分别在/usr/src和/lib/modules/下找到对应内核版本号的目录:

如我这里就是:

/lib/modules/5.4.0-42-generic

/usr/src/5.4.0-42-generic

 二、makefile

makefile是很重要的一个环节,配置如下:

1
2
3
4
5
6
7
8
9
obj-m += char_hello.o
 
CURRENT_PATH:=$(shell pwd)
LINUX_KERNEL_PATH:=/lib/modules/$(shell uname -r)/build
 
all:
    $(MAKE) -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) modules
clean:
    $(MAKE) -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) clean

 三、字符驱动:hello world

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <linux/init.h>
#include <linux/module.h>
 
int hello_init(void)
{
    printk("Hello, world\n");
    return 0;
}
void hello_exit(void)
{
    printk("Goodbye, Hello world\n");
}
module_init(hello_init);
module_exit(hello_exit);<br>MODULE_LICENSE("GPL");<br>MODULE_AUTHOR("bigcatio");<br>MODULE_DESCRIPTION("A good start");<br>MODULE_VERSION("0.0.1");

 执行make命令后,即可在目录下产生char_hello.ko,再执行sudo insmod char_hello.ko即可加载好第一个字符驱动。

1
sudo insmod char_hello.ko

 

此时,在终端里并不会看到hello world的信息。需要再执行如下命令:

1
sudo dmesg -c

 结果如下:

 

1
2
[ 1326.583627] Hello, world
[ 1326.583673] Hello, world

 

此外还可以执行命令modinfo char_hello.ko来查看ko中的相关信息。

1
modinfo char_hello.ko

 结果如下:

1
2
3
4
5
6
7
8
9
10
filename:       /home/bcc/coding_bigcatio/driver_build_under_ubuntu/./char_hello.ko
version:        0.0.1
description:    A good start
author:         bigcatio
license:        GPL
srcversion:     8636B623A76BDC7801FFE25
depends:       
retpoline:      Y
name:           char_hello
vermagic:       5.4.0-53-generic SMP mod_unload

 

posted @   稀里糊涂的胡闹  阅读(470)  评论(0)    收藏  举报
编辑推荐:
· C#.Net筑基-泛型T & 协变逆变
· dotnet 代码调试方法
· DbContext是如何识别出实体集合的
· 一次 .NET 性能优化之旅:将 GC 压力降低 99%
· MySQL索引完全指南:让你的查询速度飞起来
阅读排行:
· 我救了一个网站,性能提升了1500 多倍!
· .NET程序员的多语言笔记本:Polyglot Notebook
· 免费开源 .NET OpenCV 迷你运行时全平台发布
· 经验贴!万字总结网卡丢包及ping延迟等网络问题排查思路
· 用好索引的10条军规
点击右上角即可分享
微信分享提示