- 博客(30)
- 资源 (21)
- 收藏
- 关注
原创 Linux的各种初始化注册方法
各类初始化方法定义见:module_initmodule_platform_driver这个宏用于简化平台设备驱动程序的注册和注销。platform驱动注册示例:module_driver宏其它驱动实现示例对于其他类型的驱动程序,例如 I2C 驱动程序,可能需要额外的参数:在这个示例中,假设 i2c_driver_register 和 i2c_driver_unregister 需要额外的参数 __init_arg,可以这样定义宏:通过使用可变参数,module_driver 宏可以适应不同
2025-01-10 09:53:23
816
原创 EEE与WOL的关系
节能以太网(Energy Efficient Ethernet, EEE)和AMD魔术包(Magic Packet)之间的关系主要体现在网络唤醒(Wake-on-LAN, WoL)技术中。Wake-on-LAN(WOL)本身并不是一个独立的IEEE标准。它是一种网络唤醒技术,通常与其他标准和协议一起使用。例如,WOL通常依赖于以太网标准(如IEEE 802.3)来传输“魔术包”Wake-on-LAN(WOL)是一种远程唤醒技术,允许通过网络发送特定的数据包来唤醒处于休眠或关机状态的计算机。
2024-10-22 16:46:36
626
原创 单层VLAN,双层VLAN,带优先级的VLAN,说说IEEE标准中的那些事
IEEE 802.1ad 是对 IEEE 802.1Q 标准的修订,但它被单独命名为 802.1ad 而不是 802.1Q-2022 等年份靠后的名字,主要是因为它引入了一个显著的新功能,即提供商桥接(Provider Bridges)或 QinQ(堆叠VLAN)当前已发布的完整版本IEEE802.1Q版本是2022,802.1Q-2018的维护卷,包含了802.1Qcc, 802.1Qcp, 802.1Qcy, 802.1Qcr和802.1Qcx在内的修订内容。,允许在以太网帧中插入多个VLAN标签。
2024-10-16 16:24:47
1828
原创 为什么一些技术文档中使用octet,而不是byte来表示8bit呢?
历史上,字节的大小并不总是标准化为 8 位。不同的计算机架构使用不同大小的字节,如 6 位、7 位或 9 位。而“八位组”明确指的是 8 位单位,确保了清晰性。:在网络和电信领域,精确性至关重要。技术文档和标准(如 RFC)中使用“八位组”来明确指代 8 位单位,避免任何潜在的混淆。Octet (octet 这个词是从拉丁文和希腊文的数字 octo 派生而来的,意指八。:国际标准化组织(ISO)和其他标准机构采用“八位组”来确保不同系统和语言之间的一致性。
2024-09-26 15:57:29
407
原创 网卡收发队列设置ringparam
在驱动中,首先对传入的参数进行了合法性判断,对于不支持的参数设置直接返回错误。参数无误则会修改收发队列深度信息。以上命令分别修改了RX和TX队列的深度,通过。可以查看到设置已经生效。对应网卡预设的最大值,对应网卡当前设置值。
2024-09-25 10:13:00
317
原创 中断合并参数coalesce_params解释
在网络驱动程序中,中断是指网络设备向处理器发送信号,通知它有数据需要处理。频繁的中断会导致处理器负担过重,从而影响系统性能。为了优化性能,驱动程序可以使用中断合并技术,将多个中断合并为一个,从而减少中断的频率。指示驱动支持哪些配置方式。
2024-09-24 15:14:00
443
原创 Linux Runtime PM(运行时电源管理)框架API
Linux 的 Runtime PM(运行时电源管理)框架提供了一系列 API,用于管理设备的电源状态。○ pm_runtime_get_sync(struct device *dev): 增加设备的使用计数,同步请求设备退出低功耗状态。: 增加设备的使用计数,异步请求设备退出低功耗状态。: 减少设备的使用计数,异步请求设备进入低功耗状态。: 减少设备的使用计数,同步请求设备进入低功耗状态。:设备的使用计数会增加,但设备的电源状态不会改变。:设备的使用计数会减少,但设备的电源状态不会改变。
2024-09-06 17:48:37
732
原创 RSS/RFS/RPS
如果不调整RSS,所有接收的数据包可能仍然会集中在默认的接收队列和CPU核上,导致负载不均衡和性能瓶颈。7. RFS(Receive Flow Steering):如果启用了RFS,内核会根据TCP连接的绑定信息,将数据包重定向到对应的CPU核。在这个过程中,内核会检查数据包的目标TCP连接,并确定该连接绑定到哪个CPU核。8. 数据包重定向:内核通过调度机制将数据包从当前处理的CPU核转移到绑定的CPU核。9. 数据包处理:绑定的CPU核接收到重定向的数据包,并继续处理该TCP连接的数据。
2024-09-05 12:01:39
1045
原创 VLAN Tag
● NETIF_F_HW_VLAN_CTAG_RX:支持接收 VLAN C-Tag(Customer Tag)● NETIF_F_HW_VLAN_STAG_RX:支持接收 VLAN S-Tag(Service Tag)● NETIF_F_HW_VLAN_CTAG_FILTER:支持 VLAN C-Tag 过滤● NETIF_F_HW_VLAN_STAG_FILTER:支持 VLAN S-Tag 过滤● NETIF_F_HW_VLAN_CTAG_TX:支持发送 VLAN C-Tag。
2024-09-05 11:04:13
918
原创 网卡驱动中的DCB是什么意思,还有什么网络技术
是一种用于数据中心网络的带宽管理机制。● 暂停帧:当某个优先级队列发生拥塞时,下游设备会发送一个暂停帧(PAUSE)到上游设备,指示其暂停该优先级队列的流量传输。这种机制确保了流量控制的精细化管理,只暂停特定优先级的流量,而不影响其他优先级的流量,从而提高网络的整体效率和性能。这种机制确保了流量控制的精细化管理,只暂停特定优先级的流量,而不影响其他优先级的流量,从而提高网络的整体效率和性能。DCBX 的应用可以显著减少手动配置的工作量,降低配置错误的风险,提高数据中心网络的整体性能和可靠性。
2024-09-03 11:27:02
2997
原创 AXI 突发传输机制( burst )
除上以上的三种传输类型外,实际使用时还有一种叫混合突发(Mixed Burst):结合了固定突发(Fixed Burst)和增量突发(Incremental Burst)的特点。
2024-09-03 10:39:24
1216
原创 设备树中MAC控制器各类中断的作用
当以太网接口检测到特定的网络活动(如Magic Packet或特定的数据包)时,会触发eth_wake_irq中断,通知处理器从低功耗模式中恢复正常运行。b. 错误检测:如果在数据传输过程中发生错误(如帧校验错误、碰撞检测等),macirq中断会被触发,以便处理器能够及时处理这些错误。d. 缓冲区管理:在接收或发送缓冲区需要管理时(如缓冲区满或空),macirq中断会被触发,以便处理器进行相应的缓冲区管理操作。c. link_irq:链路状态中断,用于检测网络连接状态的变化,如链路断开或重新连接。
2024-08-30 16:41:14
949
原创 MAC控制器设备树配置时,都有哪些phy-mode?与mac-mode是什么关系?
(内部延迟)的缩写¹²。它表示在PHY芯片内部添加时钟延迟,以确保数据和时钟信号的正确对齐,从而提高数据传输的可靠性。这些配置选项可以帮助你根据具体的硬件设计需求和时钟同步要求来选择合适的PHY模式。参数用于指定以太网PHY芯片和MAC控制器之间的接口模式。在RGMII模式下,除了。
2024-08-30 15:34:39
2017
原创 platfrom_driver和device_driver都有probe、remove函数,为什么一般都注册platform中的而不是driver中的?
应用场景专用于平台设备,而是更通用的驱动程序接口,适用于所有类型的设备。参数类型中的probe和remove函数接受类型的参数,而中的probe和remove函数接受类型的参数。通常情况下,如果你在开发平台设备驱动程序,会使用中的probe和remove函数。如果你在开发更通用的驱动程序,可能会使用中的probe和remove函数。那是否可以不注册struct platform_driver中的probe和remove,而直接注册drvier中的呢在开发平台设备驱动程序时,通常会使用中的probe和。
2024-08-28 17:30:17
757
原创 platform驱动中struct platform_driver结构已经有电源管理函数,为什么还要在driver中也有电源管理函数操作呢?
中再定义一次pm呢?这两者之间有什么关系呢?是有什么不同的地方吗?字段提供了更全面的电源管理接口,涵盖了系统休眠和运行时电源管理。回调函数主要用于平台设备的系统休眠管理,而。可以看到上述的结构中其中是有电源管理函数。,那为什么驱动还要再在。在Linux内核中,
2024-08-28 17:17:34
918
原创 platform驱动注册中为什么要使用不同的函数注册两次驱动匹配?
用于注册驱动程序,使其能够处理设备的探测和移除事件。这两个步骤是相互补充的,确保驱动程序能够正确加载和运行。是为了保险起风而进行的重复操作吗?在阅读Linux平台驱动代码时,会发现会分别使用。用于导出设备ID表以便在模块加载时进行匹配,而。进行一次驱动匹配,随后在。
2024-08-28 16:30:06
391
原创 避免switch中未显式使用break警告
在给定的宏定义中,fallthrough也许是一个编译器特定的属性(attribute)(或者是一个注解(annotation)),该属性告诉编译器如果在switch语句中使用了fallthrough宏,就不要发出“未显式使用break”的警告。在C和C++语言中,switch语句中的每个case标签通常会自动“贯穿”到下一个case标签,除非使用break语句显式终止。然而,有时候开发人员希望在不显式使用break的情况下,有意地允许程序继续执行下一个case标签中的代码。
2024-08-05 15:36:25
366
原创 C语言中奇技淫巧02——使用likely和unlikely优化分支预测
既然程序是我们程序员所写,在一些明确的场景下,我们应该比CPU和编译器更了解哪个分支条件更有可能被满足。我们是否可将这一先验知识告知编译器和CPU, 提高分支预测的准确率,从而减少CPU流水线分支预测错误带来的性能损失呢?答案是可以!它便是likely和unlikely。在Linux内核代码中,这两个宏的应用比比皆是。!!(x) , 0)!!(x) , 0)!!!!(x) , 0)!!(x) , 0)1!!(x) , 0)!!(x) , 0)!!!!(x) , 0)!!(x) , 0)0!!
2024-08-02 16:46:53
1186
原创 C语言中奇技淫巧01——弱声明
在 C语言中,可以通过使用__attribute__((weak))方式或#pragma weak方式来声明弱函数,当函数未实现时编译不报错。上面代码示例了两种弱声明的方式,不管哪种,在实际调用时,都应该像man函数中那样,先判断函数指针是否有效,然后再调用。
2024-08-02 16:41:16
237
原创 Die to Die连接方式有哪些?
为实现这一目标,通常使用两种备选方案:通过部署每个通道具有非常高的数据速率(高达 112 Gbps)的 PHY,以最小化所需的通道数量,或者通过在大量并行化的低数据速率通道(高达 8 Gbps/通道)中使用更精细的凸点间距(微凸点)来增加 PHY 的密度,以实现所需的带宽。UCIe 互连将有两个版本——一个是用于 2D 封装的标准版本,在四个通道中最高可达 73 GB/s(或 0.073 TB/s),这比标准 PCIe Gen5 连接的管道更少。晶粒到晶粒链路使用短距离、低损耗的通道,没有明显的不连续性。
2024-07-26 12:10:45
2153
4
原创 芯片中的Wafer、Die、Chip、Cell是什么意思
您可以将晶粒视为半成品,如果量大,可以自己购买晶粒来封装成芯片,其单价甚至比购买成品芯片还要便宜²。在接触一些芯片数据手册、用户手册之类的资料时,经常会看到Die这个概念,比如Flash芯片里经常会提到几个Die,访问哪个Die之类的内容,如果英语直译:死,那肯定不是这个意思。它的原始材料是高纯度的多晶硅,经过溶解、掺杂、拉丝等工艺制成圆柱形的单晶硅。总结一下,晶圆是制作芯片的原始材料,晶粒是从晶圆上切割下来的小块,而单元则更小,通常是芯片中的功能单元。:单元是比晶粒更小的结构,通常用于集成电路中。
2024-07-23 17:01:07
12867
原创 学术类网站收集
* 访问链接:https://xueshu.baidu.com/访问链接:https://so.sciencesoft.cn/访问链接:https://www.ablesci.com/so访问链接:https://www.x-mol.com/访问链接:https://paper.dxy.cn/article/82152
2024-07-03 11:11:00
566
原创 使用WSL安装&配置&升级Ubuntu
我们可以备份下配置文件(sudo cp /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.bak)后,使用命令。方法1:在过访问 Windows“开始”菜单并键入已安装的发行版的名称,可以直接打开 Linux 发行版。就文件内容而言,配置项少多了,也简化了许多,24.04源可以在网上找到一大堆,我们替换下即可。比如我们系统当前安装了默认系统Ubuntu,之后又想安装。,其中替换为对应系统版本即可,如。
2024-07-01 16:39:29
10260
1
原创 arm编译工具链下载
针对AArch64和Arm 32位A-Profile内核的预构建GNU交叉工具链的官方Arm版本可在Arm Developer网站上获得。
2024-07-01 14:57:52
561
JEDEC STANDARD - Serial Flash Discoverable Parameters (SFDP) JESD216G
2024-12-04
JEDEC STANDARD Addendum No. 1 to JESD251, Optional x4 Quad I/O With Data Strobe JESD251-1.01
2024-12-04
draw io 25.0.1 202412月更新版本
2024-12-04
RealView 编译工具 库和浮点支持指南
2010-02-23
IEEE802.3-2022 IEEE Standard for Ethernet
2024-10-16
Intel开源字体 intel-one-mono v1.4.0
2024-08-23
Sumatra PDF 3.6.16550预览版
2024-07-31
SumatraPDF 3.5.2 arm64版
2024-07-31
Drawio 24.7.5 for windows桌面版
2024-07-31
drawio 21.5.0 for windows桌面版
2024-07-31
USB HID类设备开发文件
2022-04-07
typora_0.11.18_amd64.tgz
2022-01-08
typora_0.11.18-x64.zip
2022-01-08
Cool Edit Pro V2.1 简体中文版
2014-10-17
ME-CodeFormat 代码风格整理工具 V1.1
2017-03-02
代码差异统计工具V1.00
2017-02-26
超级终端串口工具
2017-02-26
时间精度分析软件 V2.1.20151210
2017-02-26
LittleT4.0版 任务管理软件 桌面任务管理工具 TODO、计划、定时任务工具
2015-06-07
文件时光机 批量文件时间修改器 文件时间修改器
2015-06-08
STerminal V0.8
2017-02-26
代码差异统计工具
2017-02-26
代码差异统计工具V1.0
2017-02-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人