通俗一点的问题就是“如何写一个内核驱动?”
新手往往并不明白驱动的具体定义是什么,我们往往拿到一款芯片,然后要给这个芯片写一个驱动代码,但是这个驱动代码到底是什么样子的?应该怎么写?就是面临的第1个问题。其实我们通常说的驱动是一个很模糊的概念,也是很多概念的集合。狭义上的驱动就是 ”驱动操作系统上一个外设运行的软件“,比如我们买了一个新显卡,就需要安装一下显卡驱动,显卡才能跑起来。对于驱动工程师来说,驱动就是实现上述功能的代码,也就是我们常说的“写一个驱动”。
那么,到底如何写一个“驱动代码”呢,对于Linux驱动工程师来说,就是要搭一个驱动的代码框架,最简单常见的框架就是下面这个样子的(Linux驱动的hellow world)。
#include <linux/module.h>
static int __init hello_world_init(void)
{
return 0;
}
static void __exit hello_world_exit(void)
{
}
module_init(hello_world_init);
module_exit(hello_world_exit);
新手看了就纳闷了,因为上面根本没有 驱动driver 2字,这是因为驱动在内核中是以模块的形式存在的,写一个驱动其实就是写一个驱动模块,也就是要先搭一个模块代码的框架,要想学会写驱动,就要先学会写模块,用模块。
模块其实就是给内核写的一种插件。内核有很多种插件类型,模块就是其中的一种,而驱动就是一种模块的实现。
扩展阅读:Linux内核模块的运行原理 - 模块是如何跑起来的?。
代码写完了,那如何让他跑起来呢,请先阅读
标签:代码,Linux,内核,模块,world,驱动 From: https://www.cnblogs.com/riveruns/p/17657138.html