首页 > 系统相关 >搭一个Linux内核驱动框架 - 如何写一个Linux内核驱动?

搭一个Linux内核驱动框架 - 如何写一个Linux内核驱动?

时间:2023-08-25 15:56:49浏览次数:44  
标签:代码 Linux 内核 模块 world 驱动

通俗一点的问题就是“如何写一个内核驱动?”

新手往往并不明白驱动的具体定义是什么,我们往往拿到一款芯片,然后要给这个芯片写一个驱动代码,但是这个驱动代码到底是什么样子的?应该怎么写?就是面临的第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

相关文章

  • Linux中su命令与sudo命令的区别
    su命令与sudo命令是Linux中比较常用的命令,sudo是以root用户方式执行命令,su是用来变更其他使用者的身份来执行命令。那么Linux中su命令与sudo命令的区别是什么?我们通过这篇文章详细讲解一下。1、关于密码两个命令的最大区别是:sudo命令需要输入当前用户的密码,su命令需要......
  • 逐梦起航 职等你来,北京校区Linux运维89期开班啦!
    8月心情,喜忧参半。8月是一个特殊的季节,它是夏季的最后一个月份,也是当代大学生的一个新起点,有人因为高考得利,即将远离家乡,背起小小的行囊奔赴大学;有人则因为高考失利,面临着重新规划自己学习和职业道路的挑战。与此同时,在这个毕业的季节,有人选择出国深造,有人选择托关系找工......
  • Linux CPU 使用率统计
    CPU使用率统计脚本:for((i=0;i<10000;++i))dotop-n1|awk-F'[,|]+'/'%Cpu'/'{printf("%s%.01f\n",strftime("[%Y-%m-%d%H:%M:%S]",systime()),100-$11);}';sleep1;done运行效果:$for((i=0;i<10000;++i))do......
  • Linux
    Linux一、目录结构与用途/bin:系统命令目录/sbin:超级命令目录,只有超级管理员才能执行的命令/boot:系统目录,类似于Windows中的C盘/dev:设备文件目录,硬盘、光驱、U盘都属于设备文件,/dev/sr0代表光驱设备,注意,此目录下的文件没有办法直接使用,必须先挂载/etc:代表系统的配......
  • Linux安装oracle23c
    官网下载:1.rpm包oracle-database-free-23c-1.0-1.el8.x86_64.rpmoracle-database-preinstall-23c-1.0-0.5.el8.x86_64.rpm2.安装依赖包上传compat-openssl10-1.0.2u-1.el9.x86_64.rpm包并且进行安装此依赖包需要先进行安装rpm-ivhcompat-openssl10-1.0.2u-1.el9......
  • 4步搞清Linux任务调度(定时任务)——cron
    1搞清概念1.1cron与crondcron是Linux下实现任务调度(定时任务)的一种服务,可以在无需人工干预的情况下运行作业。crond则是cron服务的守护进程,与Windows下的计划任务类似。Linux系统会默认安装cron服务工具,并自动启动crond进程。1.2crontabcrontab是Linux系统提供的用于设置......
  • linux docker公网源下载示例
    1.get-docker.sh百度一下,进入docker官网直接下载该文件,然后执行即可2.直接下载repo文件示例:wgethttps://download.docker.com/linux/centos/docker-ce.repo-O/etc/yum.repos.d/docker.sh--no-check或者yum-config-manager--add-repohttps://download.docker.com/lin......
  • Linux命令之文件的增、删、移、查、授权操作
    骑士李四记录:Linux常用命令文件基本属性chgrp:更改文件属性:chgrp[-R]属组名文件名-R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。chown:更改文件属主,也可以同时更改文件属组chmod:更改文件9个属性对文件操作:4.下载文......
  • Windows PC、 Linux、 Android、 iOS多平台支持H5无插件播放RTSP摄像机解决方案
    需求分析视频流媒体监控行业已经进入互联网时代,浏览器承载了绝大多数的互联网访问流量,目前在网页上播RTSP流的普遍做法是将RTSP转成互联网直播协议RTMP或者HLS;而RTMP协议播放需要Flash插件,且其衍生的FLV或者HLS协议延迟很大(2s以上),根本达不到视频流媒体传输低延迟的要求。早年风靡......
  • Linux挂载samba
    很简单1.安装必要工具apt-getinstallcifs-utils2.挂载mount-tcifs//(samba地址)(本地路径)-ousername=(用户),password=(密码),iocharset=utf83.示例mount-tcifs//192.168.1.100/mnt/samba-ousername=user1,password=pass1,iocharset=utf8记录下方便自......