驱动相关指令

驱动相关指令

自定义驱动的加载

depmod

depmod:分析可载入模块的依赖性

 

which

which: 在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果

 

trap

内建命令,用于执行接收到信号后将要采取的动作,常见用于在脚本被中断时完成清理工作

 trap  ""  SIGINT #忽略SIGINT信号
 SIGINT:只对当前前台进程,和他的所在的进程组的每个进程都发送SIGINT信号,之后这些进程会执行信号处理程序再终止.

 

modprobe

modprobe:用于智能的向内核中加载模块,或者从内核中移除模块,若在载入过程中发生错误,modprobe会卸载整组的模块。内核模块加载成功或失败信息,可使用dmesg指令来查看

 

ptp

ptp :一个通过网络同步时钟的协议;

操作系统的PTP: PTP 被分开在 kernel 和 user space,比如CentOS,内核支持 PTP 时钟,由网络驱动提供(硬件 PTP 依赖物理网卡提供硬件时钟),可以手动检查网卡是否支持 PTP

比如liquidio驱动

image-20230703133337774

 

irabalance

irqbalance:用于优化中断分配,为避免影响CPU的使用均衡,建议服务器环境中关闭

 killall irqbalance

udev

 

示例:

 # udev规则,重命名网口
 DIR="/etc/udev/rules.d"
 FILEPATH="/etc/udev/rules.d/70-persistent-net.rules"
 MESSAGE="ACTION==\"add\", SUBSYSTEM==\"net\", ATTRS{vendor}==\"0x177d\", ATTRS{device}==\"0x9702\", NAME=\"oct%n\""
 

 

 

驱动

 

driver: 通过driver_register()注册到总线上(bus_type)上,代表了系统(服务器)具备了操作(驱动)某种设备(网卡)的能力;

当某个driver被注册到同样的总线的时候(总线枚举是发现),总线驱动会对driver和device会通过一定的策略进行binding,如果匹配成功,总线驱动会调用driver的probe()函数,把设备信息(如端口,中断号)传递给驱动,驱动就可以对真实的物理部件进行初始化,并把该设备的控制接口注册到linux其他子系统上(如字符设备),这样操作系统的其他部分就可以通过这些通用接口来访问设备。

 

不同操作系统的驱动不能兼容,驱动存在的意义——适应系统需要

 

.ko文件

kernel object(内核模块),文件的意义就是把内核的一些功能移动到内核外,需要时的时候插入内核,不需要时卸载

module_init

image-20230703143458628

 

Makefile

学习:liquidio驱动的makefile文件

  1. ./configure 后跟SDK路径

image-20230703160558515

配置环境:

SDK路径:

 ./configure /usr/local/Cavium_Networks

image-20230703160329269

.PHONY

在Makefile中,.PHONY后面的target表示的也是一个伪造的target, 而不是真实存在的文件target

注意: Makefile的target默认是文件

 

固件

程序使用和操作系统完全不同的指令集。但firmware通常由驱动去加载。

 

 

 

 

 

posted @ 2023-07-03 17:04  senorita-18  阅读(32)  评论(0编辑  收藏  举报