自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(186)
  • 资源 (17)
  • 收藏
  • 关注

原创 基于select的一个比较完整的网络编程示例

这篇文章介绍了一个基于select的高性能事件循环库(event_loop),具有以下核心特性: 实现了完整的非阻塞I/O和多路复用机制 支持动态事件表管理,包括自动扩容和惰性删除 提供读写错误回调分离机制 集成了信号处理(SIGINT/SIGTERM优雅退出) 实现了最小堆定时器(支持单次/重复/重置) 确保内存安全(无double free和内存泄漏) 使用方式简洁: 通过event_add/event_set注册I/O事件 通过timer_add注册定时器 调用event_loop_run进入主循环

2026-05-11 11:50:25 91

原创 Linux高频代码调试方法(by deepseek)

摘要 在Linux应用层调试高频调用代码时,直接使用printf会导致日志刷屏和性能下降。本文提出了多种调试方法:1)日志降频与采样,通过计数或时间窗口控制输出;2)环形缓冲区,内存记录关键信息后导出;3)异步日志库,将IO操作移至后台线程;4)性能剖析工具如perf分析热点;5)eBPF等跟踪工具动态插桩;6)GDB条件断点捕捉特定条件。建议根据调用频率选择方案,高频场景优先使用eBPF或perf等低开销方法,中频可采用环形缓冲区或异步日志,低频可使用条件打印。调试时应注意减少对原始代码的侵入性影响。

2026-03-14 10:00:47 371

原创 内核驱动调试接口与使用方法入门(转)

本文系统介绍了Linux内核驱动开发中的实用调试方法。首先阐述了内核调试相比用户态程序的特殊挑战,如模块加载失败、中断异常等问题。随后详细讲解了多种调试工具:基础日志(printk规范化输出、频控打印、动态调试开关);debugfs用于实时监控驱动状态;trace_printk用于时序敏感场景;devmem直接读写硬件寄存器;Oops日志分析方法(decode_stacktrace.sh、faddr2line);以及KASAN内存错误检测工具。针对不同调试场景,文章提供了工具选择建议,强调内核调试需要构建完

2026-02-10 22:02:47 708

原创 高性能网络编程:Socket调用与内核协议栈调优(转)

本文深入探讨了高性能网络编程中的Socket调用与内核协议栈调优。Socket作为网络通信的核心接口,其调用方式直接影响系统性能,文章详细解析了Socket基础概念、调用流程和关键要点。同时,剖析了内核协议栈的架构及其对网络性能的影响,包括数据收发流程和协议栈优化策略。针对高并发场景,提出了Socket调用优化方案(I/O模型选择、多线程处理、Socket选项设置)和内核协议栈调优方法(参数调整、缓冲区优化、拥塞控制算法选择)。最后通过电商平台Web服务器案例,展示了优化前后性能的显著提升,为开发者提供了可

2026-02-05 09:16:48 751

原创 linux中backtrace实战

该C程序实现了信号捕获和堆栈跟踪功能,用于调试程序崩溃问题。当程序发生段错误(SIGSEGV)或除零错误(SIGFPE)时,会调用signal_handle函数打印详细的调用栈信息。程序通过backtrace和dladdr函数获取并解析堆栈信息,包括函数名、库文件和偏移量。演示了空指针引用(null_pointer_dereference)和除零操作(division_by_zero)两种常见错误场景。编译时需要-g-rdynamic选项支持堆栈跟踪,-ldl选项支持动态链接库解析。通过objdump和ad

2025-12-12 18:39:41 323

原创 大厂 C++ 后端面试:深度拆解 Linux页表 机制(转)

在 Linux 操作系统的内存管理体系当中,页表是极为关键的存在。页表乃是一种数据构造。它便是用于记录虚拟地址和物理地址之间是如何进行映射的映射表。页表是连接虚拟地址与物理地址的关键桥梁,处于核心的位置。在现今的计算机系统当中,进程所采用的是虚拟地址,而实际的数据是存放在物理内存里面的。页表的主要功能就是构建这两种地址之间的对应关联,使得 CPU 可以根据进程所给出的虚拟地址,精确无误地寻找到数据在物理内存之中的存放所在之处。举个例子来讲,页表如同是一本地址方面的字典。

2026-09-03 16:24:01 214

原创 不懂内存寻址,别说你真正搞懂虚拟内存(转)

<think>我们只需要根据文章内容写摘要。摘要要求≤150字。需要提炼核心:从电脑卡顿引出内存寻址,说明其原理(CPU/MMU/页表,虚拟地址转换物理地址),影响因素(CPU位数、内存参数、缓存),碎片问题,开发体现。但摘要需要概括全文。字数限制严格。尝试写100-150字。</think>电脑卡顿常源于被忽略的内存寻址。其底层逻辑是CPU发出虚拟地址,由MMU查页表并完成权限校验与虚实地址转换,结合缓存、内存参数与CPU位数等因素影响速度。理解该原理,还可解决内存碎片、内存泄漏等

2026-09-03 16:22:21 129

原创 大厂 C++ 面试:深度剖析 Linux Signal 信号机制(转)

<think>我们只需要根据用户要求,生成≤150字的文章摘要。用户给的文章内容很长,但要求是根据内容生成摘要。我们需要简明扼要。字数限制150字以内。要抓住核心:信号机制是Linux重要异步通信机制;高频考点;常见问题;文章内容概述。写摘要。</think>本文聚焦Linux Signal信号机制,从内核与用户态交互视角,详解信号生成、注册、派发、屏蔽与处理全流程,剖析不可重入、EINTR中断、信号丢失等高频面试难题,帮助读者贯通理论与实践,应对大厂面试及线上排障。

2026-09-03 16:20:34 205

原创 深入理解 Linux I2C 框架:内核子系统分层解析(转)

<think>我们只需要输出摘要,不超过150字。内容是关于Linux I2C框架的分层结构、协议、驱动开发等。需要概括要点。严格控制150字以内。</think>Linux I2C框架是设备通信桥梁,采用SDA/SCL总线及主从协议。内核分层包括硬件层、适配器驱动层、核心层和设备驱动层,各层协同实现高效数据传输。文中以MPU6050为例,演示设备树配置、驱动编写及测试,展示框架在嵌入式开发中的实际应用。

2026-09-03 16:18:53 227

原创 告别 select 高占用,从零拆解 epoll 底层源码(转)

<think>好的,问题是需要根据给定的内容生成一篇不超过150字的文章摘要。内容讲的是嵌入式/后台开发中使用select/poll遇到高并发性能瓶颈,引入epoll,并用纯C语言从零讲解其实现。 核心输出要求很明确:≤150字的摘要。摘要必须涵盖内容核心:select/poll性能缺陷、epoll是解决高并发关键、文章用纯C语言从Socket到epoll完整讲解、含可编译源码、解决高CPU和卡顿问题。 写作思路:先概括问题(select/poll高并发性能问题),再说解决方案(epoll),然

2026-09-03 16:16:54 231

原创 深入 Linux 动态链接:so 库构建与运行逻辑(转)

<think>我们根据要求:生成≤150字的文章摘要,内容根据用户提供的长文。需要概括主要观点:动态链接器符号解析、so文件加载、编译参数、符号导出、版本控制等;解决找不到库、版本冲突等问题。摘要需简洁,≤150字。注意是“文章摘要”,应是对整篇文章的浓缩。需用中文。控制字数。</think>本文从底层逻辑剖析Linux动态链接机制,讲解so库构建、编译参数、符号导出及加载原理,演示dlopen等显式加载方法。并针对库缺失、路径错误等高频问题,给出通过ldconfig、LD_LIBR

2026-09-03 16:15:00 233

原创 vscode中支持deepseek ai辅助编程

现在的ai编程工具大量出现,例如qoder、trae等,极大的帮助了编程工作,不过这类工具有个缺点,绑定了商业公司的业务,例如qoder就规定了模型只能是他自己的那几个。插件”替换copilot的大模型订阅为deepseek,实现了vscode支持基于deepseek的ai辅助编程能力。好了,现在你已经将deepseek集成进了vscode,能让大模型帮你分析代码,同时支持幽灵文字。vscode现在原生支持copilot,但是api key是copilot的订阅,本文使用“

2026-08-22 09:46:02 219

原创 gprof程序性能分析工具介绍(by deepseek)

摘要: gprof是GNU编译器套件(GCC)内置的性能分析工具,用于识别程序中的CPU时间消耗热点。通过编译时添加-pg选项,结合插桩(记录函数调用)和采样(定时中断统计)生成gmon.out数据文件,再通过gprof命令生成分析报告。报告包含Flat Profile(函数耗时排序)和Call Graph(调用关系图),帮助定位性能瓶颈。其局限性包括:仅支持单线程主线程分析、依赖程序正常退出、短函数可能采样遗漏等。适用于快速分析单线程CPU密集型程序,复杂场景建议使用perf或Valgrind等工具。 (

2026-08-19 18:05:49 175

原创 使用docker+node.js或dsh desktop安装deepseek harness

本文介绍通过Docker容器化部署DeepSeekHarness(dsh)的完整流程。主要内容包括:1)解决Windows环境下Docker的WSL虚拟化报错问题;2)使用Alpine版Node.js镜像搭建容器环境;3)安装Python等编译依赖并全局安装dsh;4)通过修改dsh-web-app源码解除IP限制;5)容器镜像的保存与管理技巧。关键步骤涉及虚拟化环境配置、Docker镜像拉取、容器持久化保存(docker commit)以及端口映射等操作,最终实现在本地3080端口访问dsh服务。文档提供

2026-08-14 16:58:47 741

原创 使用pyqt5写一个串口工具

本文介绍了一个基于Python和PyQt5开发的串口调试工具。该工具实现了串口通信功能,支持发送和接收数据,具有以下特点: 使用PyQt5开发GUI界面,包含主窗口、设置对话框、信息提示框等 支持串口参数配置(端口号、波特率) 采用QThread实现后台串口数据接收 具备日志记录功能,显示时间戳和操作状态 支持设置保存和恢复功能 包含状态栏显示当前串口配置 该工具适用于Windows和Linux系统,依赖PyQt5和pyserial库,可通过requirements.txt安装所需环境。代码结构清晰,包含主

2026-08-08 19:05:08 121

原创 使用GKD跳过手机app开机广告

GKD是一款基于安卓无障碍服务的自动跳过APP广告工具。用户通过安装软件并开启无障碍权限后,可添加开源社区提供的订阅规则(如AIsouler/GKD_subscription),实现自动点击"跳过"按钮功能。经测试,该工具能有效屏蔽知乎等APP的启动广告。项目地址为github.com/gkd-kit/gkd,详细使用指南见gkd.li/guide。操作步骤包括下载安装、配置权限和导入规则三步,能显著提升用户体验。

2026-08-08 09:40:40 246

原创 进程内存溢出频发,如何用cgroup防止进程内存溢出?(转)

在服务器运维与应用部署中,进程内存溢出是高发且棘手的问题,轻则导致单个进程崩溃、服务异常,重则引发系统卡顿、宕机,造成业务中断与数据损失。尤其在多进程共享资源的场景下,单个进程无节制占用内存,会挤压其他进程的运行空间,形成“内存争抢”,进一步加剧溢出风险,给运维工作带来极大困扰,因此,找到高效、可靠的内存管控方案至关重要。

2026-08-07 17:31:12 317

原创 第一个python程序

这段Python代码用于处理CSV文件中的数值计算。主要功能是: 检查当前目录下是否存在test.csv文件 读取CSV内容并找出包含数字的列 对每行指定列的数字求和,将结果写入最后一列 最后将修改后的数据写回原文件 代码会先打印当前路径和文件列表,然后处理CSV数据:识别数字列范围,计算每行数字和,更新文件内容。若文件不存在或没有有效数字列会输出相应提示。

2026-07-28 18:53:19 184

原创 deepseek教我什么是docker

Docker技术全解析:从入门到核心原理 Docker基础 定义:Docker是开源的容器化平台,通过镜像(静态模板)和容器(运行实例)实现应用打包与隔离,解决环境一致性问题。 核心组件:镜像(类)、容器(实例)、仓库(如DockerHub)、Dockerfile(构建指令)。 优势:轻量(秒级启动)、跨环境一致性、微服务支持。 底层原理 Namespace:隔离进程视图(PID、网络等),确保容器内进程“独享”资源。 Cgroups:限制CPU/内存使用,防止资源耗尽。 UnionFS(如OverlayF

2026-07-11 18:24:18 351

原创 彻底搞懂零拷贝三剑客:sendfile、mmap、splice(转)

本文深入解析Linux系统中三种主流零拷贝技术(sendfile、mmap、splice)的工作原理与适用场景。传统I/O传输存在多次数据拷贝和上下文切换问题,零拷贝技术通过减少CPU拷贝次数显著提升性能。sendfile适用于文件到socket的直接传输,mmap适合大文件处理和进程间共享内存,splice则擅长管道与文件描述符间的数据移动。文章详细对比了三者的性能差异、系统调用特点及实现机制,并给出具体应用场景下的选型建议,帮助开发者在高并发、高吞吐场景中合理运用零拷贝技术进行性能优化。

2026-05-23 16:05:21 406

原创 内核 Panic 不用慌,手把手教你定位根因(转)

在服务器运维、Linux 开发工作中,内核 Panic 是最让人头疼的突发故障。不同于普通程序报错,内核崩溃会直接导致系统卡死、业务中断、服务器自动重启,毫无缓冲空间。很多人遇到这类问题都会手足无措,面对满屏的报错堆栈日志无从下手,只能盲目重启服务器,问题反复出现却始终找不到根源,严重影响线上业务的稳定性。其实绝大多数内核 Panic 并非无迹可寻,大多由驱动异常、内存损坏、锁死、内核 BUG、硬件故障等常见问题引发。

2026-05-16 00:51:25 462

原创 不懂 Core Dump,别说你懂 Linux 程序崩溃排查(转)

Linux程序开发与运维中,CoreDump是诊断程序崩溃的关键工具。本文详细介绍了CoreDump的生成机制、配置方法和分析技巧:1. CoreDump是程序崩溃时的内存快照,包含代码段、堆栈数据、寄存器状态等关键信息;2. 通过ulimit设置core文件大小,配置/proc/sys/kernel/core_pattern定义存储路径;3. 使用GDB加载CoreDump进行分析,结合bt、frame、print等命令定位问题;4. 通过实际案例演示了如何利用CoreDump解决多线程资源竞争导致的崩溃

2026-04-30 09:53:14 485

原创 不懂 Linux 死锁检测,别说你懂内核同步(转)

Linux内核在高并发场景下广泛使用各类同步机制保障共享资源访问安全,但不当使用可能引发死锁。本文系统剖析了死锁产生的四大必要条件(互斥、请求保持、不可剥夺和循环等待),并详细介绍了内核提供的死锁检测工具与方法:1)Lockdep通过锁类跟踪和依赖图分析实时检测潜在死锁;2)gdb和pstack可深入分析线程调用栈定位锁竞争点;3)Ftrace动态追踪锁操作时序。文章通过分布式文件系统死锁案例,展示了从问题定位到修复的完整流程,包括调整锁顺序、引入超时机制等解决方案,为开发者构建了完整的内核同步问题排查体系

2026-04-30 09:51:12 420

原创 不懂信号量与完成量,别说你吃透 Linux 内核同步(转)

本文深入解析Linux内核中的信号量与完成量同步机制。信号量通过计数器控制资源访问,实现进程有序阻塞与唤醒,适用于资源互斥管理;完成量则基于事件通知机制,用于线程间任务完成的同步。文章详细剖析了二者的数据结构、工作原理及典型应用场景:信号量通过P/V操作管理资源,完成量通过wait/complete实现线程同步。通过公交车调度和内核模块实例,展示了完成量的实际应用。开发者需理解二者底层均依赖内核阻塞唤醒机制,但信号量侧重资源计数控制,完成量强调事件通知,正确选择可避免并发隐患,提升系统性能。

2026-04-30 09:47:54 399

原创 一文吃透 mutex 互斥锁,彻底解决 Linux 内核同步难题(转)

Linux内核中的Mutex互斥锁是解决多任务并发访问共享资源的核心同步机制。作为二进制睡眠锁,Mutex通过原子操作和等待队列确保同一时刻仅一个线程进入临界区,有效防止数据竞争和死锁。其三级获取机制(快速路径、乐观自旋、慢速路径)平衡了性能与安全性,无竞争时高效访问,有竞争时合理调度线程休眠。本文从原理到实践全面解析Mutex,包括初始化方式、加锁/解锁操作、死锁预防及性能优化策略,并对比了C++、Go等语言中的实现差异。通过RAII机制和锁粒度控制可避免常见陷阱,是Linux内核开发必备的同步工具。

2026-04-25 17:49:05 414

原创 一文吃透 Spinlock,和内核死锁说再见!(转)

本文深入解析了Linux内核中的Spinlock自旋锁机制。作为基础同步机制,自旋锁通过忙等待实现短时临界区保护,避免了线程切换开销。文章详细剖析了自旋锁的底层实现原理,包括原子操作、内存屏障和自旋循环机制,并系统介绍了内核提供的标准API接口。针对自旋锁可能引发的死锁问题,重点分析了不可重入、优先级反转和中断处理不当等典型场景,给出了规避方法和Lockdep检测工具的使用建议。最后,结合内核链表保护实例,演示了自旋锁在多核高并发、禁止睡眠等场景下的正确使用方法。全文从原理到实践,为开发者提供了全面掌握自旋

2026-04-23 10:15:43 479

原创 使用SRS搭建gb28181服务器

本文介绍了在Ubuntu系统中搭建支持GB28181协议的SRS音视频服务器,并在Windows 10上通过客户端进行连接测试的完整流程。主要内容包括:1)下载并编译SRS 6.0版本源码,配置开启GB28181功能;2)Windows端搭建RTSP服务器作为客户端;3)使用GB28181客户端软件配置参数连接服务器;4)通过SRS管理后台查看推送的视频流。文章

2026-04-22 16:18:38 401

原创 使用live555搭建rtsp服务器

本文介绍了RTSP服务器的搭建与应用场景。在公网环境下,通常需要将本地设备推流至公网RTSP服务器供客户端拉流,但在ONVIF功能等局域网应用场景中,本地RTSP服务器更具实用价值。文章重点讲解了使用live555搭建RTSP服务器的详细步骤:从下载live555源码包、修改配置文件以适应低版本GCC环境,到编译生成可执行文件live555MediaServer。最后通过实例演示了服务器测试方法,包括放置测试视频文件和使用ffplay工具进行拉流验证,展示了本地RTSP服务器的实际应用效果。

2026-04-22 10:11:44 171

原创 ipc onvif服务器搭建测试

ipc上面的onvif功能本质上是一个onvif webservice服务器,一般是通过gsoap生成框架代码来实现的,把gsoap的各种服务器接口实现就可以了,音视频流则是把本地rtsp服务器集成进去gsoap接口。理论上实现起来不复杂,在github上找个库来测试下功能。

2026-04-16 09:59:30 304 1

原创 不懂软中断与tasklet ,别再说你懂 Linux 内核了(转)

本文深入探讨了Linux内核中的软中断与tasklet机制,作为中断处理体系的核心组件。软中断支持并发执行,适合高负载场景如网络数据处理;tasklet则更轻量级,适用于简单任务如设备驱动中的延迟处理。文章通过对比分析二者的实现原理、并发特性和应用场景,揭示了它们在平衡系统性能与响应速度中的关键作用。实战案例展示了软中断在网络通信和tasklet在设备驱动中的具体应用,为开发者提供了选择中断处理机制的实践指导。掌握这两种机制有助于优化内核性能并解决实际开发中的中断相关问题。

2026-04-14 09:18:11 346

原创 git在项目中常用的操作集合

Git常用操作摘要 同步最新代码:git reset --hard origin/main强制同步服务器最新提交 查看暂存修改:git diff --staged查看已add但未提交的改动 分支管理: 强制删除本地分支:git branch -D 分支名 删除远程分支:git push origin --delete 分支名 修改提交信息:git commit --amend -m "新信息" 撤销commit保留修改:git reset --soft HEAD~1 文件提交记录:git

2026-04-08 11:08:43 74

原创 别说你会写 Linux 程序,先搞懂ELF 文件怎么跑起来(转)

摘要:本文深入解析Linux系统中ELF文件的运行机制,揭示从源代码到可执行程序的完整生命周期。ELF作为Linux下统一的可执行文件格式,包含程序运行所需的指令、数据和配置信息。文章详细剖析了ELF文件结构(文件头、节头表、程序头表)、关键节区(.text/.data/.bss)的功能,以及从编译链接到内核加载的动态过程。特别阐述了动态链接原理、内存映射机制和程序启动流程(从_start到main函数),并通过实际案例演示了如何利用readelf/objdump等工具分析ELF文件,定位程序崩溃和内存问题

2026-04-07 17:50:28 361

原创 不懂进程fork/exec与COW,别再说你懂Linux内核了(转)

本文深入剖析Linux进程管理的三大核心机制:fork创建进程、exec执行程序替换和COW写时复制。fork通过复制父进程创建子进程,但采用COW机制延迟内存复制,仅在写入时才真正复制内存页,大幅提升性能。exec则负责加载新程序替换当前进程的内存空间。三者协同工作:fork创建子进程后,exec替换程序执行新任务,COW优化内存使用。这种机制设计使Linux能高效管理进程资源,在保证隔离性的同时最大化资源利用率,是理解Linux进程模型的关键。

2026-04-07 17:44:56 410

原创 不懂伙伴系统与SLUB分配器,别再说你懂Linux内核了(转)

在 Linux 内核的核心架构中,内存管理是撑起整个系统稳定运行的基石,而伙伴系统与 SLUB 分配器,正是这一基石中最关键的两大支柱。很多开发者自诩“懂 Linux 内核”,却对这两个核心组件一知半解,殊不知,脱离了内存分配机制,对内核的理解不过是浮于表面的皮毛。无论是进程创建时的内存分配、内核模块加载时的空间申请,还是系统运行中的内存回收,每一个环节都离不开伙伴系统与 SLUB 分配器的协同工作。

2026-04-07 17:36:48 414

原创 不懂缺页异常与页表遍历,别再说你懂 Linux 内核了(转)

在 Linux 内核的内存体系中,缺页异常与页表遍历是支撑虚拟内存运作的两大核心支柱,也是区分 “内核使用者” 与 “内核精通者” 的关键分水岭。很多人误以为缺页只是 “内存访问错误”,页表遍历只是简单的地址翻译流程,却忽略了它们背后深度耦合的硬件交互逻辑与内核实现细节。从 CPU 的 MMU 硬件触发,到内核的缺页异常处理流程,再到四级页表(PGD→PUD→PMD→PTE)的逐级遍历,每一个环节都藏着内核设计的精妙与复杂,不懂这两者,就无法真正理解 Linux 如何高效管理内存、实现多进程隔离与按需调页。

2026-04-07 16:36:14 409

原创 不懂 MMU,别再说你懂 Linux 内核了(转)

MMU看似是硬件层面的组件,却深度融入Linux内核的每一处内存操作——它负责将进程的虚拟地址翻译成物理地址,实现虚拟内存与物理内存的映射;它提供内存访问权限控制,防止进程越界访问,保障系统稳定性;它还与缓存机制协同,优化CPU读写内存的效率,直接影响系统性能。不懂MMU的工作原理,就无法真正理解Linux内核如何管理内存、如何隔离进程,更谈不上深入调试内核内存相关问题,这样的“懂”,不过是浅尝辄止。

2026-03-31 13:49:22 402

原创 现代linux gpio编程接口(by deepseek)

Linux GPIO操作接口经历了从传统sysfs到现代libgpiod的演进。在Linux 3.x及更早版本中,只能通过/sys/class/gpio文件系统接口操作GPIO,使用echo/cat命令进行控制。而Linux 4.8+版本引入了更高效的字符设备接口/dev/gpiochipX和libgpiod库,提供专用API和命令行工具(gpioinfo/gpioset等)。两种方式的主要区别体现在访问路径、编程接口和内核支持上。对于新项目强烈推荐使用libgpiod,而旧系统则需继续使用sysfs方式,

2026-03-30 15:25:32 462

原创 一文读懂 Linux PCI 驱动:从懂到写就是这么简单(转)

本文深入解析了Linux PCI驱动开发的核心机制与实践方法。文章首先介绍了PCI总线的发展历程和关键技术特点,重点阐述了PCIe总线的高带宽、低延迟等优势。随后详细剖析了Linux PCI驱动框架的三层架构(硬件层、PCI核心层、设备驱动层),并深入讲解了设备枚举与识别、资源管理、驱动注册等核心机制。通过分析pci_dev、pci_driver等关键数据结构,揭示了内核管理PCI设备的实现原理。最后,以一个PCIe SSD驱动开发案例,展示了从设备识别、内存映射到性能优化的完整开发流程,包括中断合并、DM

2026-03-24 14:22:37 391

原创 趣谈网络协议栈,以太网基础MAC和PHY(转)

当我们指尖轻点鼠标浏览网页、发送消息,或是在线追剧、传输文件时,背后总有一套“隐形交通系统”在默默运转,这就是网络协议栈。而以太网,作为这套系统中最基础、最普及的“地面交通网”,承载着我们日常绝大多数的网络通信,MAC与PHY则是这套“地面网”中不可或缺的核心搭档,撑起了以太网通信的半壁江山。很多人提起网络协议,总觉得是晦涩难懂的专业术语,实则不然

2026-02-05 09:11:49 765 2

原创 Linux内核动态跟踪框架ftrace介绍(by deepseek)

摘要:ftrace是Linux内核内置的动态跟踪工具,主要用于内核调试和性能分析。它支持函数跟踪、事件跟踪和动态探针,具有低开销、无需重新编译内核的特点。通过debugfs接口,ftrace可以跟踪内核函数调用、系统调用和调度事件等。虽然主要用于内核空间,ftrace也能通过uprobes和系统调用跟踪间接分析应用程序行为。对于驱动调试,ftrace可跟踪模块函数调用;对于应用分析,它能监控系统调用和关键函数。相比专门的用户空间工具,ftrace更适合内核与应用的交互分析,常与perf、strace等工具配

2026-01-28 18:43:11 940

libpeer所有依赖代码的一次性下载包

下载了libpeer的全部依赖代码,打成了一个包,方便一次性下载,没必要更新依赖库的代码,就用这个版本能支持功能就行了。如果想要最新的代码,去github libpeer拉最新的代码就行了,不过网速比较慢,需要试很多次。

2026-05-26

Elecard StreamEye秘钥产生器

Elecard StreamEye秘钥产生器

2026-03-30

ubuntu中使用ffmpeg库进行开发的cmake工程

基于cmake编译框架,使用ffmpeg库进行api调试开发的工程

2024-12-06

keil Compiler Version 5:ARMCompiler-506-Windows-x86-b960

ARMCompiler_506_Windows_x86_b960.zip,用于keil提示没有Missing:Compiler Version 5时使用,具体使用方法:https://blog.csdn.net/vierin/article/details/139550114?spm=1001.2014.3001.5506

2024-08-29

felica规格书(user manual)

这是最新版本的felica规格书,英文不好的不建议下载哦,因为是英文,哈哈哈

2018-12-26

Orcad10.3 免安装精简版+可用lic

Orcad10.3 免安装精简版+可用lic,一般下载的orcad10.3带的许可证都是过期的,需要重新找许可证文件,这个资源包里面自带一个许可证文件,亲测可用。 安装方式请参照pdf文档里面来搞。

2024-07-02

Borland C++ 5.02(1)

Borland C++ 5.02(1),这是压缩包1,请到我的资源里面去找另外两个压缩包

2012-01-30

Microsoft.HEVCVideoExtension-2.1.451.0-neutral

Microsoft.HEVCVideoExtension_2.1.451.0_neutral,用于win10播放HEVC格式的视频文件,windows商店中的安装不了,这个是下载后的文件,可以直接安装。

2024-02-18

cmake工程结构示例

cmake的工程结构示例,可以依据这个cmake工程构建自己的编译系统,熟悉常用的cmake命令

2023-06-27

MQTT-C在visual studio上的移植工程,具体移植过程请看我的博客文章

MQTT-C在visual studio上的移植工程,具体移植过程请看我的博客文章

2022-12-14

易兆微yc1021源码

这份代码是我自己根据易兆微yc1021的规格书实现的一份嵌入式驱动程序,用户只需要移植几个简单的函数就可以实现蓝牙3.0和4.0通信功能,这么简单的玩意儿天天搞真的烦,下载源码一次搞定多好对吧

2019-03-22

J-LINK V10 V11固件.rar

用于重新更新jlink v10和v11的固件文件,亲测可用

2021-10-26

stm32 hal examples(stm32 hal完全示例)

包含了所有stm32f4使用hal的外设的示例

2022-02-08

振南znFAT--嵌入式FAT32文件系统设计与实现(上下册)

振南znFAT--嵌入式FAT32文件系统设计与实现(上下册)

2015-12-28

嵌入式二维码显示方案,附源码

嵌入式二维码的显示方案,代码中用控制台模拟了lcd的显示驱动,请移植的时候自行实现lcd显示驱动。另外移植的时候需要移植config.h中的几个宏定义,自己看下就知道了。

2018-04-11

FatFs移植工程vs2013

FatFs在vs2013中移植的代码,移植过程可以看我的微博中的相应的文章

2018-07-03

source insight 4.0最新版加破解文件

source insight 4.0最新版加破解文件: 1 打开安装文件安装软件 2 完成后用破解的exe替换安装目录的文件 3 打开si4后提示选择许可证,选择破解的许可证

2017-10-31

unicode转gb2312码表

unicode转gb2312的码表,格式为小端格式,前2个字节是unicode值,随后2字节为对应gb2312值。使用方法请翻一下我的csdn博客

2018-04-02

source insight 4.00.0114 lic.rar

source insight 4.00.0114的许可证文件生成工具,可以支持生成这个版本以后的许可证

2020-07-06

Borland C++ 5.02(2)

Borland C++ 5.02

2012-01-30

nxp nfc天线pcb匹配参数设计工具AntennaTool

这是nxp的nfc天线设计工具,可以通过指定天线的pcb参数测算出匹配的参数,然后计算出匹配电路的电阻电容等原件参数

2020-12-17

Borland C++ 5.02(3)

Borland C++ 5.02

2012-01-30

Borland C 3.1

Borland C 3.1

2012-01-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除