- 博客(16)
- 收藏
- 关注
原创 设备树(九):平台设备与平台驱动匹配
1、平台设备与平台驱动匹配函数调用关系:2、平台设备与平台驱动匹配过程该过程就像相亲大会,男(dev)女(drv)双方提供自己的身份信息和择偶标准等信息(compatible属性等信息)排队报名入场(注册平台设备和驱动)。红娘(bus)根据男女双方的身份信息和择偶标准为其牵线(match),寻找最合适的对象。
2025-06-09 16:39:17
636
原创 设备树(八):设备节点转化为平台设备
总线设备驱动模型包含平台设备和平台驱动,Linux内核中,一部分平台设备由设备树DTS直接转化而来,无需编写C驱动代码注册平台设备。这样的好处是修改硬件设备后,无需重新编译内核或 .ko 文件,只需要重新编译设备树文件即可。Linux 内核(提示:本文内容基于Linux 5.4.231)将DTB转化为设备节点 device_node 后,继续将设备节点 device_node 转化为平台设备 platform_device,过程大致如下:int id;
2025-06-09 12:00:18
727
原创 设备树(七):DTB转化为设备节点
uboot将DTB文件传递给Linux内核后,内核将其转化为由设备节点构成的树结构。设备树转化为平台设备的过程如下:设备节点结构体:结构体中包含了parent、child和sibling成员,可见内核将DTB文件转化成了树型结构。#endif。
2025-06-07 18:07:30
788
原创 设备树(五):系统中查看设备树信息
设备树(一):Linux引入设备树的背景 [设备树(二):Linux设备树介绍 [设备树(三):设备树源文件(DTS)语法 [设备树(四):设备树目标文件(DTB)结构 [设备树(六):FIT镜像——打包DTB镜像 [设备树(七):DTB转化为设备节点 [设备树(八):设备节点转化为平台设备 [设备树(九):平台设备与平台驱动匹配 [
2025-06-07 16:47:17
329
原创 设备树(四):设备树目标文件(DTB)结构
根据上述描述,Device Tree文件结构如下图所示。dtb文件中最先存放的头信息(struct fdt_header);接着是预留区域,大小为off_dt_struct – sizeof(struct fdt_header),填充的值为0。接着就是节点和属性信息,分别由struct fdt_node_header和struct fdt_property结构体描述。最后是dt_string区域,集中保存所有的属性名。
2025-06-07 11:23:52
885
原创 设备树(三):设备树源文件(DTS)语法
dts-v1/;/dts-v1/表示一个dts设备树文件#include.dts文件可以通过include包含.h文件。.dts文件可以通过include包好.dtsi文件,将公共设备信息包含进来。compatible 属性属性值类型:字符串 或 字符串列表// 字符串类型或者// 字符串列表类型// 字符串类型或者// 字符串列表类型// 字符串类型。
2025-06-06 18:22:28
823
原创 设备树(二):Linux设备树介绍
一、概述二、DTS(Device Tree Source)三、DTC(Device Tree Compiler)四、DTB(Device Tree Blob)五、总结设备树(全称Flattened Device Tree,简称FDT)起源于OpenFirmware(OF),寄托了设计者们Unify Kernel的梦想 ——同一个Image,可以支持多个不同的硬件平台。
2025-06-05 16:14:48
832
原创 设备树(一):Linux引入设备树的背景
最初Linux 内核针对不同的 ARM 开发板需要编写大量的板级支持代码(Board Support Package, BSP),这些代码通常存放于arch/arm/plat-xxx和arch/arm/mach-xxx中。由于板级支持代码,绝大多数只是在描述板级细节,如板上的platform设备、resource、i2c_board_info、spi_board_info 以及各种硬件的platform_data。对于内核来讲,这些内容不过是垃圾。
2025-06-05 15:26:43
422
原创 Panic——典型Panic问题总结
一、Panic 典型问题及总结1.1 典型Panic 类型1.2 Panic 的两种解决方法1.3 Panic问题总结二、推荐一种定位Panic问题的方法1、空指针型Panic发生这种类型的Panic问题时,异常信息中一般给出的非法地址是全0,比如下面举例中的非法地址0x0000000000000000。发生这种问题时,常现于操作的地址类型为普通变量指针和函数指针。下面举例中,异常信息给出的非法地址是0x00000008。这种一般也是操作空指针,只不过该空指针为结构体类型。
2025-05-30 15:49:51
755
原创 Panic——Panic问题原理总结(Armv8)
异常:程序在运行过程中发生意外情况时,cpu跳到一些预先设定好,具有更高执行权限的程序(exception handler)去执行,执行完毕后,返回产生意外现场继续执行。Armv8 中将异常分为4级。EL0:运行普通用户程序,即用户态;EL1:操作系统或者一些特权函数,即内核态;EL2:运行虚拟化扩展的虚拟监控程序(Hypervisor Monitor);EL3:运行安全监控器(Secure Monitor)。1、空指针型Panic。
2025-05-30 15:35:11
953
原创 CPU高——进程持续占用CPU很高
检查网络连接状态使用 netstat -tulnp | grep <进程A> 确认套接字 3 的对端状态。如果对端已关闭,进程应主动关闭套接字,避免无效操作。优化 select 逻辑1) 检查是否误将非阻塞套接字用于 select,导致虚假就绪。2) 添加对 read 返回值的判断:read 返回 0 表示对端关闭,应关闭套接字;返回 -1 且 errno=EAGAIN 时需重试,否则处理错误。利用gdb工具排查使用 gdb 附加到进程,查看进程活动。
2025-05-29 16:40:00
533
原创 以太网(二)PHY、网卡、SWITCH介绍
如下图所示,只有GMAC网卡被注册为eth0,为了实现WAN-LAN的功能,在eth0的基础上划分了eth0.1和eth0.2两个虚拟网卡分别做为LAN和WAN。当接收时,GMAC收到带有vlan头的数据包并上送,系统会根据数据包中不同的vlan id区分LAN和WAN,vlan 1的数据包会剥除vlan头送到LAN,vlan 2的数据包会剥除vlan头送到WAN。当发送时,系统发送的普通数据包在经过虚拟网卡eth0.1和eth0.2后也会带上vlan tag,发送到switch的cpu port。
2023-07-05 10:26:21
12512
1
原创 内核sysrq魔术键
SysRq支持的所有功能列表及相应的handler见drivers/tty/sysrq.c中静态数组sysrq_key_table[]的定义,当然,也可以通过下面提到的SysRq的help信息了解到。syslog中记录的日志应该是最完整的,然而由于负责记录日志的 syslogd 本身是一个用户进程,在某些情况下可能会被杀掉,从而导致日志记录不下来。提示:此组合键在Xwindows上是无法使用的。组合键按键,即 “sysrq键+命令键” 来触发一个操作,例如 sysrq + t 打印所有任务的状态。
2023-06-30 11:29:33
1208
原创 以太网(一)MAC、MII、PHY 介绍
本文详细介绍了以太网的硬件架构与工作原理,重点解析了CPU、MAC和PHY的三种常见集成方式。其中MAC负责数据链路层的帧处理与CRC校验,PHY实现物理层的信号编解码与冲突检测,二者通过MII接口连接协同工作。文章还对比了不同MAC-PHY接口类型(如RMII、SMII等),并提供了IEEE802.3标准文档和PHY寄存器等扩展资料,为理解以太网底层通信机制提供了完整的技术框架。
2023-06-20 11:58:11
6220
2
原创 内存泄漏——SLUB DEBUG分析内存泄漏
内存泄漏问题一般不能一蹴而就,首先是要在偌大的系统中,缩小发生异常的范围。当可以基于某个小范围着手定位具体的异常位置后,需要想方设法结合模块的功能业务,代码逻辑制定排查方法,一点点寻找。
2023-06-16 11:21:14
3005
2
原创 无线通信技术基础
文章目录1 电磁波基本概念1.1 电磁波的产生1.2 电磁波的传播特点2 电磁波频率特性与频谱2.1 电磁波频率特性2.1 电磁波频谱3 无线通信术语参考文章1 电磁波基本概念1.1 电磁波的产生电荷是电场的源头,静止的电荷产生静止的电场,运动的电荷产生变化的电场。电荷的定向移动产生电流,电流周围存在变化的电场。变化的电场产生磁场,均匀变化的电场会产生稳定的磁场,非均匀变化的电场产生变化的磁场。而变化的磁场又会产生变化的电场,二者在空间交替变化,相互耦合环环相扣,向前传播,就产生了电磁波,电磁波即
2023-04-05 22:19:25
1730
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人