- 博客(118)
- 资源 (13)
- 收藏
- 关注
原创 CDR时钟数据恢复
PCIe属于:链路里只有差分数据线,;收发双方仅各自本地持有100MHz REFCLK参考晶振,CDR就是接收端的专用硬件电路,,是PCIe物理层最核心的模块之一。对比HDMI ACR:HDMI有独立TMDS时钟线+N/CTS参数算时钟;CDR完全不靠专线时钟、不靠明文参数,纯从数据码流本身恢复时钟。
2026-08-08 18:10:32
438
原创 Cache Incoherent(缓存不一致)
违背“数据一致性”要求,是多核架构、CPU+DMA硬件架构里经典问题。CPU 和 硬件外设(网卡、GPU、控制器、DMA)的本地Cache中,同一份内存数据。
2026-06-12 11:27:36
265
原创 Cache Coherent(缓存一致性)
多个缓存代理(CPU核、GPU、DMA)对同一内存地址,看到的数据永远一致、最新。写传播:A写的数据,B最终一定能看到写串行化:所有写入有一个全局顺序,大家看法一致Cache Coherent = 硬件自动保证CPU/GPU看到同一内存的最新一致数据;GPU_CACHE_COHERENT 是开启该硬件机制的标记——但仅在集成SoC/支持一致性的平台有效;独立PCIe显卡基本只能软件同步。下面用分层图示+文字说明,区分集成GPU(SoC iGPU)和独立GPU(dGPU/PCIe)两大架构,同时标注。
2026-06-11 21:56:36
333
原创 贝叶斯公式
后验 = 似然 × 先验 / 证据总概率用途:逆向推理、概率更新,广泛用于分类、机器学习、故障诊断、统计推断。条件概率PA∣BP(A|B)PA∣B已经确定事件BBB发生了,在这个前提下事件AAA发生的概率。原本的总样本空间是Ω\OmegaΩ,现在已知BBB发生,有效样本空间就从全集Ω\OmegaΩ缩小为BBB对应的区域。
2026-06-10 18:16:48
188
原创 纹理采样器(Texture Sampler)
纹理采样器是图形渲染中用于控制纹理采样行为的重要工具。通过设置纹理过滤和包裹模式等属性,可以实现高质量的纹理渲染效果。在 OpenGL 中,纹理采样器通过纹理对象和采样器对象来管理,并在着色器中使用以实现具体的纹理采样操作。在 OpenGL 中用于控制纹理采样的行为,通过设置不同的纹理参数,可以实现多种纹理采样效果,如投影、LOD 控制和聚集等。这些修饰符通过函数设置,可以灵活地调整纹理的采样方式以满足不同的渲染需求。
2026-06-02 20:28:58
228
原创 三角形正反面判断
设三角形三点:P0,P1,P2P_0,P_1,P_2P0,P1,P2=P1−P0,e2=P2−P0叉乘得到面法向量N⃗=e1⃗×e2⃗\vec{N}=\vec{e_1}\times\vec{e_2}N=e1×e2视线向量:面片指向相机V⃗=Eye−P0\vec{V}=Eye - P_0V=Eye−P0向量点积判别dot=N⃗⋅V⃗dot=\vec{N}\cdot\vec{V}dot=N⋅V判定规则情况1:dot>0dot>0dot>0法向量 N
2026-05-25 16:19:32
370
原创 如何通过nfs把A机器的代码仓库挂载给B机器用
能看到 /home/yourname/code-repo 说明网络和 NFS 正常。能看到 A 机代码,直接读写即可。
2026-05-24 16:14:58
46
原创 Linux图形栈
拿到每个窗口的 fd,逐个导入成 Xorg 可管理的 GBM BO/Pixmap;自己通过 Mesa 申请 GBM 显存缓冲区(BO),渲染画面到自己的显存。最终合成好的一帧,通过 DRM PageFlip 直接刷到屏幕。窗口叠加、层级、透明、缩放、桌面背景合成。,通过 DRI3 发给 Xorg。不拷贝画面数据,只把。
2026-05-07 17:17:16
124
原创 AI基础概念-未整理
WGT 是模型看海量数据,自己慢慢练出来的识别模板;训练就是不断微调所有层权重,让模型越来越会认东西;训练完权重固化,推理时直接拿来做卷积计算。为什么浅层WGT自动学会抓边缘、深层自动抓整体特征?底层原理是什么?训练阶段:随机WGT → 看海量图片 → 不断调WGT → 学成收敛 → 保存WGT推理阶段(芯片/NPU跑模型):加载固定WGT → 每一层Conv用固定WGT算 IFM→OFM → 出识别结果训练阶段 vs 推理阶段 WGT 变化示意图,一眼彻底看懂两个阶段区别,要不要?
2026-05-06 18:46:22
254
原创 PCIe疑问
设想一个场景 PCIe设备中有一个DMA设备, 需要搬运Host DDR中数据到PCIe设备GDDR中, 这时候该发出什么PCIe包呢?
2026-05-06 15:57:15
369
原创 docker
Docker 容器进程 = 宿主机普通进程,只是被隔离了视图容器任何系统调用都会直接进入宿主机内核,没有中间层内核态驱动全部在宿主机内核里,容器只是借道调用,看不到、带不走、装不了自己的驱动。
2026-04-30 17:14:31
450
原创 GPU相关常用术语
GDDR 交织 = 地址打散、多通道/Bank 并行、隐藏延迟、拉满带宽,是 GPU 显存高性能的基石。你说的这个4/2/路交织,一般就是指GDDR / 显存的 3 级交织粒度4路交织 / 2路交织 / 路交织(Channel Interleaving)我用最直白、驱动/硬件工程师都懂的方式讲清楚👇4/2/路交织 = 地址在 4 个 / 2 个 / 显存通道之间轮流分布,实现并行访问、提高带宽。
2026-04-20 11:35:07
423
原创 dma_engine
DMA Engine = 统一封装的 DMA 控制器管理框架,让设备驱动无需关心具体硬件细节,通过标准 API 使用 DMA 传输。
2026-03-23 19:53:20
62
原创 kernel-devel_kernel-headers_libmodules
是内核模块的「运行仓库 + 编译入口」build/软链接对接,提供模块编译环境;存放所有可加载的.ko模块;依赖/符号文件支撑modprobe加载和符号版本校验(解决冲突)。
2026-02-04 14:48:33
875
原创 smmu相关
一个 TCU 可以对应多个 TBU,这样的设计可以更好地满足系统中不同设备对地址转换速度和上下文管理的需求。TCU(Translation Context Unit,转换上下文单元 )TBU(Translation Buffer Unit,转换缓冲单元 )ARM SMMU 主要由。
2026-01-28 15:09:19
695
原创 虚拟化type1/2
虚拟化层(Hypervisor)直接运行在物理硬件上,无底层宿主操作系统,是“硬件→Hypervisor→虚拟机(VM)”的架构;,虚拟化层(Hypervisor)作为运行在普通宿主操作系统(如Windows/Linux)上,是“硬件→宿主OS→Hypervisor→VM”的架构。两者的核心差异是,这直接决定了——而你之前关注的等高级特性,(Type2支持有限且性能损耗大)。
2026-01-27 16:19:32
772
原创 DP Spec-Link layer
链路层的 Mapping 操作就像一个“速率转换器+打包器”,它把原始的音视频数据流从原始时钟速率转换为物理层需要的高速链路时钟速率,并把数据打包成适合多通道传输的格式,最终让数据能在主链路上稳定传输。LS_Clk 与 Strm_Clk 速率转换的公式示例主数据流在链路层处理时,可以选择把音频等辅助数据和视频流打包在一起传输,同时为了优化信号质量,会让不同通道的数据在时间上错开一点发送。Delimiter是数据包的“分隔线”,让接收端能分清数据包的边界;Stuffer。
2026-01-21 18:37:21
980
原创 VPU Spec
I 帧:Intra,帧内预测,完整画面P 帧:Predictive,前向预测,参考过去B 帧:Bi-directional,双向预测,参考过去 + 未来解码过程先从I帧开始,依次解码P帧和B帧。I帧是独立帧,先被解码。然后,解码器利用I帧的信息来解码P帧,最后结合I帧和P帧的信息来解码B帧。这种顺序确保了视频帧能够按照正确的时间顺序显示。编码顺序 = 解码顺序(都是 I → P → B)播放顺序 = 时间顺序B 帧导致了这种差异。
2026-01-21 13:01:57
269
原创 DP spec-Overview
DP 的链路速率是固定的,不随视频数据量变化而变化;视频速率变化时,只需通过填充符号调整,链路本身保持稳定,不会重新训练。为什么 HDMI 有时会黑屏而 DP 不会DP 如何通过 stuffing symbols 来补满带宽链路训练(link training)到底做了什么你想继续了解哪部分?场景推荐接口理由频繁切换分辨率/刷新率DP无感知切换,避免黑屏高刷新率(144Hz+)/HDRDP链路稳定,容错性更好电视/投影等消费设备HDMI生态适配更完善长距离传输。
2026-01-20 20:59:19
1120
原创 IEC-60958
IEC 60958是一种传递数字音频的接口规范,相比I2S,IEC60958通过一根线同时传递时钟信号和数据信号。在BMC编码中,时钟信号的频率是数据传输bitrate的两倍。BMC信号在时钟信号的上升沿跳变。在时钟下降沿,BMC是否跳边取决于数据信号,当数据信号是高电平时,BMC跳变。当数据信号是低电平时,BMC不跳变。在音频信号在硬件间传递时,是传递的BMC信号,接收端对BMC解码,解析出时钟信号与数据信号。
2026-01-07 15:56:48
653
原创 HDMI Spec
Audio data being carried across the HDMI link, which is driven by a TMDS clock running at a rate corresponding to the video pixel rate, does not retain the original audio sample clock. The task of recreating this clock at the Sink is called Audio Clock Reg
2026-01-05 17:26:49
514
原创 SMP/NUMA/PER_CPU
除了这种静态percpu变量,还有另外两种percpu变量, 其中一种是内核模块中的静态percpu变量,它虽然也是在编译期就能确定的,但由于内核模块动态加载的特性,它不是完全静态的,内核为这种percpu变量在percpu内存块中单独开辟了一个区域,叫reserved区,当内核模块被加载到内存时,其静态percpu变量就会在这个区域分配内存。当我们在访问percpu变量时,只需要将gs寄存器里的地址,加上我们想要访问的percpu变量的地址,就能得到在该cpu上,该percpu变量真实的内存地址。
2026-01-03 15:04:25
158
原创 中断下半部分-tasklet/workqueue
根据优先级不同内核将tasklet分成两种:TASKLET_SOFTIRQ 和 HI_SOFTIRQ (后者优先级高)执行时机通常是上半部分返回的时候。1.1 tasklet机制初始化在linux系统内核初始化的时候,通过调用softirq_init( )为TASKLET_SOFTIRQ 和 HI_SOFTIRQ安装了执行函数。1.2 相关的操作//用来将系统中tasklet链接成链表//记录在系统中tasklet的状态//如果为0,则不可被调度执行。
2026-01-03 11:19:08
615
原创 等待队列wait_queue
的过程可以比作在餐厅排队等位。:是餐厅的“等位名单”。:是你填写的**“等位号牌”**,上面有你的信息(private指向:是你把号牌交给服务员,服务员把它放到名单的末尾。:是你告诉服务员你现在要去旁边的沙发上休息(进入睡眠状态)。schedule():是你闭上眼睛开始休息,不再关注叫号。wake_up():是服务员叫到你的号,把你从睡眠中唤醒。:是你听到叫号后,从名单上取回自己的号牌,准备去就餐。bookmark机制就像是阅读一本厚厚的书没有书签。
2026-01-03 10:52:17
658
原创 alsa驱动架构
从属关系snd_pcm是snd_card的子设备,必须依附于某个snd_card存在;双向引用链表包含所有snd_pcm(父找子);指针指向所属snd_card(子找父);生命周期绑定snd_card的注册/销毁会同步影响所有snd_pcm,是“牵一发而动全身”的根节点。snd_card是声卡的“总控中心”,snd_pcm是总控中心下负责“音频播放/录音”的具体功能模块,没有总控中心,功能模块无法独立存在和工作。
2025-12-18 09:45:38
759
基于单片机的温湿度采集系统/VC++上位机
2016-09-05
DHT11在液晶lcd1602显示
2015-04-16
链表队列工具.rar
2020-12-06
C_C++_设计模式_doc.rar
2020-07-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅