自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

wdfk-prog.space

wdfk_prog的博客

  • 博客(377)
  • 资源 (26)
  • 收藏
  • 关注

原创 hpatch 学习笔记系列

hpatch 学习笔记摘要 本文是hpatch补丁工具系列的学习笔记,包含多个技术文档链接。主要内容涉及后缀数组算法(libdivsufsort、SA-IS)、差分补丁原理(hdiffpatch、HPatch)以及相关工具实现(hpatch_lite、tinyuz)。笔记详细记录了各种算法的实现细节,如divsufsort、sssort、trsort等排序方法,适合对二进制补丁技术和高效差异算法感兴趣的开发者参考学习。

2025-10-06 07:49:23 679

原创 [Linux]学习笔记系列

这篇Linux学习笔记整理了ARM架构和驱动开发相关的学习资料。主要内容分为两部分:第一部分是ARM架构相关,包括汇编、启动流程、调试、内存管理等核心模块;第二部分是Linux驱动开发,涵盖了基础驱动框架、时钟管理、串口驱动等常见驱动模块,以及设备树、GPIO、I2C等硬件接口相关内容。这些笔记以Markdown格式存储在GitHub仓库中,适合Linux内核和驱动开发者参考学习。

2025-08-28 09:35:58 737

原创 u-boot学习笔记系列

这是一个关于U-Boot学习笔记的GitHub仓库,主要包含ART-Pi开发板的构建命令和U-Boot源码分析资料。内容按功能模块分类,包括API、架构(arm)、启动流程(bootm/bootz)、命令系统(cmd)、通用功能(common)、设备驱动模型(dm)等核心组件。每个模块都有对应的Markdown文档,详细记录了U-Boot的关键技术点,如ARM架构、设备树、时钟管理、外设驱动等底层实现原理。该项目适合嵌入式开发者系统学习U-Boot启动流程和驱动开发。

2025-02-27 08:26:55 2086

原创 rtthread学习笔记系列

本文是一个RT-Thread实时操作系统的学习笔记合集,包含44个技术文档,涵盖了RT-Thread系统的核心组件和驱动开发。主要内容包括:文件系统(FATFS、LittleFS)、通信协议驱动(CAN、I2C、SPI、USB)、内核机制(线程调度、内存管理、IPC)、系统工具(FINSH、ULOG)以及底层开发(汇编、链接文件)等。该笔记系统整理了RT-Thread的各个功能模块,为开发者提供了全面的技术参考。

2025-01-16 11:56:57 1116

原创 [Linux]学习笔记系列 -- [drivers][dma]dma-buf

本文解析Linux内核中的dma-buf核心实现,该系统提供跨驱动/子系统共享DMA缓冲区的框架。dma-buf通过文件描述符(fd)传递缓冲区,并整合dma-resv/dma-fence机制处理异步硬件访问同步。核心功能包括:全局缓冲区跟踪、fd导出、设备绑定(attachment)、映射管理(map/unmap)、CPU访问支持及同步等待等。该系统主要服务于图形/多媒体场景,如DRM与V4L2间的缓冲区共享,通过统一接口避免各驱动私有实现的碎片化问题。关键设计包括:缓冲区对象模型、文件语义封装、隐式同步

2026-01-29 08:45:30 421

原创 [Linux]学习笔记系列 -- [drivers][dma]coherent

Linux内核DMA技术概述 Linux内核中的DMA(直接内存访问)技术解决了外围设备与主内存高效数据交换的问题,无需CPU持续干预。该技术包含两大核心框架: DMA Mapping框架:处理内存地址一致性,提供地址转换、缓存一致性管理和IOMMU交互等功能,为设备驱动提供统一的内存访问视图。 DMA Engine框架:抽象DMA控制器多样性,采用生产者-消费者模型,解耦DMAC驱动与设备驱动。 主要优势包括性能提升、抽象与可移植性以及模块化设计。典型应用场景包括网络数据包传输、存储设备数据读写、音频/视

2026-01-28 08:20:36 736

原创 [Linux]学习笔记系列 -- [drivers][clk]clk

Linux内核中的drivers/clk目录实现了通用时钟框架(CCF),用于统一管理SoC的时钟资源。该框架通过提供者/消费者模型,将设备驱动与具体时钟硬件解耦,解决了早期各厂商时钟管理方案碎片化的问题。CCF结合设备树描述时钟拓扑,自动处理时钟依赖关系,提供标准API如clk_prepare_enable和clk_set_rate。其优势包括代码可移植性、数据驱动配置和集中电源管理,已成为现代SoC平台的必备组件,广泛应用于CPU、外设和多媒体等驱动的时钟管理。

2026-01-28 08:19:52 535

原创 [Linux]学习笔记系列 -- [drivers][clk]clk-bulk

摘要:clk-bulk 批量时钟控制机制 drivers/clk/clk-bulk.c 实现了批量时钟控制(Bulk Clock Control)功能,旨在简化Linux驱动中对多路时钟的管理。该技术通过将多个时钟操作封装成事务性操作,解决了传统逐个管理时钟时存在的代码冗余和错误处理复杂问题。 核心特性包括: 批量获取时钟句柄(devm_clk_bulk_get_all) 事务性使能/禁用(clk_bulk_prepare_enable等) 自动错误回滚机制 典型应用场景包括DRM显示驱动、视频编解码器等需

2026-01-26 08:31:27 746

原创 [Linux]学习笔记系列 -- [drivers][bus]simple-pm-bus

本文介绍了Linux内核中的简单电源管理总线(Simple PM Bus)驱动,这是一种轻量级的虚拟总线解决方案,主要用于协调片上系统中多个非标准总线设备的电源管理顺序。该技术通过设备树声明设备依赖关系,在系统休眠/唤醒时确保设备按照预定义顺序执行回调。文章分析了其核心原理、优势(保证执行顺序、简单性)和局限性(仅支持同步模型),并对比了与设备链接(Device Links)的区别。该方案特别适用于需要严格按顺序管理电源状态的MMIO设备组,如视频处理流水线等场景,但不适合需要并行处理或复杂运行时依赖的情况

2026-01-26 08:27:42 682

原创 Git文件状态显示异常的解决方案

本文研究了Git系统中索引与工作区不一致导致的“假脏”现象,即git status显示文件修改但git diff无实际内容差异的问题。通过分层诊断流程发现,这是由于索引中缓存的元数据(stat信息)过期而内容哈希未变所致。验证步骤包括:排除文件属性和配置干扰、强制刷新索引、对比对象哈希值,最终确认是Stat Dirty机制导致的误报。该研究揭示了Git内部状态维护机制的一个潜在盲点,为开发者处理类似异常提供了系统化排查方法。

2026-01-24 18:12:26 736

原创 [Linux]学习笔记系列 -- [drivers][bus]

Linux总线驱动入门指南 本文简要介绍Linux内核中的总线(bus)驱动框架。总线是连接设备和驱动的桥梁,drivers/base/bus.c文件实现了总线这一核心概念。总线的主要功能包括: 管理设备和驱动的匹配 提供统一的sysfs接口 处理设备热插拔事件 关键概念 struct bus_type: 定义总线类型 match()函数: 实现设备和驱动的匹配逻辑 probe()函数: 驱动初始化入口 sysfs接口: 提供用户空间访问总线信息的途径 简单示例 定义自定义总线的步骤: 实现match函数

2026-01-24 18:02:00 710

原创 [Linux]学习笔记系列 -- [drivers][base]topology

Linux CPU拓扑信息导出机制 本文分析了Linux内核中driver/base/topology.c文件的功能实现,该文件通过sysfs向用户空间导出CPU拓扑结构信息。主要内容包括: 核心功能:通过sysfs虚拟文件系统导出CPU物理布局与亲和性信息,包括物理封装ID、核心ID、Die ID等,以及CPU集合信息(如thread_siblings、package_cpus等)。 实现原理: 使用宏定义自动生成大量相似的sysfs属性文件回调函数 通过属性分组管理所有拓扑属性文件 利用CPU热插拔框架

2026-01-23 08:43:22 700

原创 [Linux]学习笔记系列 -- [drivers][base]syscore

本文介绍了Linux内核中的syscore框架,它管理核心系统组件(如中断控制器、定时器等)在系统休眠、恢复和关闭时的操作顺序。syscore通过全局链表和自旋锁实现轻量级管理,确保这些基础组件在设备挂起后休眠、在设备恢复前唤醒。该框架解决了标准设备电源管理无法处理的底层顺序依赖问题,适用于ARM/ARM64等SoC平台。虽然功能单一且需要谨慎使用,但syscore在系统电源状态转换中发挥着不可替代的关键作用,是Linux内核电源管理子系统的重要组成部分。

2026-01-23 08:41:00 838

原创 [Linux]学习笔记系列 -- [drivers][base]regmap

Linux Regmap API 摘要 Regmap是Linux内核中统一硬件寄存器访问的抽象层接口,主要用于简化I2C/SPI/MMIO等总线设备的驱动开发。它通过将驱动逻辑与底层总线实现分离,解决了传统开发中存在的代码冗余、总线耦合等问题。 核心优势包括: 提供统一API(regmap_read/write等)访问不同总线 内置寄存器缓存、原子操作等高级功能 显著减少驱动代码量,提高可维护性 典型应用场景: 音频编解码器 电源管理芯片 各类传感器设备 局限性: 不适用于USB/PCIe等复杂协议 流式接

2026-01-22 08:20:39 916

原创 [Linux]学习笔记系列 -- [drivers][base]platform

本文介绍了Linux内核中的平台设备模型(Platform Device Model),其核心文件drivers/base/platform.c实现了对SoC内部设备的统一管理。该技术主要解决嵌入式系统中非标准总线设备的描述和管理问题,通过struct platform_device和struct platform_driver将硬件设备纳入Linux统一设备模型。平台设备模型与设备树紧密结合,自动完成设备-驱动匹配,提供标准化的初始化、移除和电源管理接口。其优势在于标准化、解耦硬件描述与驱动逻辑、简化开发

2026-01-22 08:19:32 895

原创 [Linux]学习笔记系列 --[drivers][base]map

本文介绍了Linux内核中的kobj_map机制,这是一个用于设备号到内核对象映射的通用引擎。该系统通过哈希表和回调函数实现高效的设备注册、注销和查找功能。核心数据结构kobj_map包含255个哈希桶,使用主设备号取模进行哈希计算。映射注册时会将探测器节点按范围排序插入链表,查找时则通过回调函数动态获取kobject并处理竞态条件。这种设计为字符设备、块设备等子系统提供了基础支持,虽然性能可能不是最优,但其精巧的实现方式确保了稳定性和扩展性。

2026-01-21 09:08:58 578

原创 [Linux]学习笔记系列 -- [base][drivers]firmware

文章摘要:Linux固件加载器核心(Firmware Loader Core) Linux内核的固件加载器框架(drivers/base/firmware)是现代硬件驱动与用户空间固件交互的关键桥梁。该技术解决了三个核心问题:GPL许可合规性(分离专有固件与开源驱动)、灵活性(支持固件独立更新)和内存效率(按需加载)。其发展经历了从hotplug脚本到基于sysfs/uevent的高效机制的演进,现已成为稳定成熟的基础设施,广泛应用于无线网卡、GPU等硬件驱动。 核心工作原理是:驱动通过request_fi

2026-01-21 09:08:03 915

原创 [Linux]学习笔记系列 -- [drivers][base]faux

Linux内核中的faux.c文件实现了一个虚拟设备总线(Faux Bus),旨在简化虚拟设备驱动的创建。该技术解决了开发者滥用平台总线处理虚拟设备的问题,在Linux 6.14内核中被引入。Faux Bus通过提供极简API,将设备创建和驱动绑定合二为一,适用于纯软件模拟的逻辑设备,如测试驱动和虚拟稳压器等。相比平台总线,它具有概念清晰、代码简洁的优势,但不适用于真实硬件设备或需要复杂匹配逻辑的场景。该技术目前处于推广阶段,正逐步替代内核中原先滥用平台总线的驱动实现。

2026-01-20 08:22:48 715

原创 [Linux]学习笔记系列 --[drivers][base]devtmpfs

本文分析了Linux内核中devtmpfs模块的核心函数handle_create和handle_remove的实现细节。handle_create负责在/dev目录下创建设备节点,包括递归创建父目录、设置权限和标记内核创建的节点。handle_remove则用于安全删除设备节点,通过检查i_private指针确保只删除内核创建的节点。两个函数都通过VFS接口操作,使用dentry和inode等核心数据结构,并处理权限、竞态条件等关键问题。代码体现了Linux设备节点管理的安全性和可靠性设计。

2026-01-20 08:21:28 672

原创 [Linux]学习笔记系列 -- [drivers][base]devres

摘要: devm_ioremap_resource是Linux内核驱动开发中用于安全映射IO内存的核心函数。它通过三步原子操作实现资源管理:1) 验证并请求物理内存区域;2) 执行虚拟地址映射;3) 自动注册到设备资源管理系统。该函数能自动处理错误回滚(如映射失败时释放已申请的资源)和生命周期管理(驱动卸载时自动释放所有资源)。在无MMU的MCU(如STM32H750)上,它主要提供标准化访问接口和正确的缓存策略。底层实现__devm_ioremap通过预分配管理记录确保资源与设备绑定,支持多种映射类型(标

2026-01-19 08:52:45 664

原创 [Linux]学习笔记系列 -- [drivers][base]dd

Linux内核驱动延迟探测机制通过drivers/base/dd.c文件实现,用于管理设备间的初始化依赖关系。该机制允许驱动在依赖资源未就绪时返回-EPROBE_DEFER错误码,将设备加入全局延迟列表,待依赖就绪后自动重试探测。这一设计解决了复杂SoC系统中设备初始化顺序不确定的问题,避免了传统硬编码顺序或忙等待方案的缺陷。该技术广泛应用于各类总线驱动,成为现代Linux设备模型的标准解决方案,特别适用于显示面板、Wi-Fi模块、音频编解码器等存在硬件依赖的场景。相比手动延时或硬编码顺序方案,延迟探测机制

2026-01-19 08:51:46 697

原创 Ymodem协议帧填充机制与数据完整性校验的深度技术分析

Ymodem协议数据填充机制技术分析 Ymodem协议采用定长数据块传输架构(128/1024字节),当文件大小非块整数倍时,协议规定使用0x1A字符填充剩余空间。发送端代码通过检测文件尾状态执行标准填充操作,这完全符合协议规范。接收端需利用Block 0中的文件大小元数据,在写入时计算实际有效数据长度,自动截断填充字符,确保二进制一致性。该机制解决了变长数据在定长传输中的适配问题,是Ymodem协议完整性的关键设计。

2026-01-18 10:21:19 634

原创 [Linux]学习笔记系列 -- [drivers][base]cpu

CPU设备管理核心实现摘要 drivers/base/cpu.c是Linux内核中管理CPU设备的核心模块,主要负责将CPU抽象为标准设备并通过sysfs进行管理。其核心功能是实现CPU热插拔机制,支持运行时动态调整CPU资源。 核心功能 为每个CPU创建sysfs接口(如/sys/devices/system/cpu/cpuX) 提供CPU热插拔状态机管理 支持通过写入online文件触发CPU上下线操作 为每个CPU创建专用的热插拔线程 应用场景 服务器硬件维护和故障隔离 云计算环境中的弹性资源分配 移

2026-01-18 08:20:26 752

原创 [Linux]学习笔记系列 -- [drivers][base]core

Linux设备模型核心(drivers/base/core.c)是内核设备管理的核心实现,负责设备注册/注销、驱动绑定、sysfs接口和电源管理等基础功能。它解决了设备通用管理、驱动绑定协调等问题,经历了从2.5内核到现在的持续演进。作为强制性的基础设施,所有Linux驱动都依赖它,具有逻辑集中、模型统一等优势,但也存在复杂度高、调试困难等挑战。与其他系统相比,Linux采用C语言实现,通过主动探测机制调用驱动,不提供稳定内部API,驱动需随内核编译。该技术是Linux设备管理的基石,没有替代方案。

2026-01-18 08:14:03 634

原创 [Linux]学习笔记系列 -- [driver][base]container

Linux内核中的container.c提供了一种标准机制,用于将逻辑相关的设备聚合到统一的"容器设备"下,主要用于管理SoC内嵌设备的层次结构。它通过创建父设备节点,在sysfs中建立清晰的设备树状结构,解决复杂SoC中平台设备扁平化的问题。该技术适用于需要统一管理一组相关设备的场景,如SoC设备聚合,但不推荐用于功能分组。相比总线和类机制,容器更侧重于物理/逻辑层次的组织。使用方式简单,通过container_device_register()API注册父设备,子设备通过指定pare

2026-01-16 09:01:22 720

原创 [Linux]学习笔记系列 -- [driver][base]class

Linux设备模型中的Class机制简介 Linux内核的drivers/base/class.c实现了设备类(Class)机制,用于根据设备功能进行逻辑分组,为用户空间提供统一视图。该技术解决了早期Linux系统中设备发现困难、静态/dev目录管理等问题。通过class接口,内核可与用户空间的udev协作,实现设备文件的动态创建和管理。 核心工作原理是:驱动首先注册一个class,当设备初始化时调用device_create()函数关联到该class,并触发uevent事件通知udev创建对应的/dev节

2026-01-16 08:56:29 729

原创 [Linux]学习笔记系列 -- [driver]cacheinfo

Linux 内核 CPU 缓存信息探测机制 /drivers/base/cacheinfo.c 是 Linux 内核中负责 CPU 缓存信息探测的核心模块,其主要功能是通过 sysfs 文件系统向用户空间导出处理器缓存信息。该机制解决了早期架构特定实现导致的代码冗余问题,为不同处理器提供了统一接口。 关键特性 统一架构:整合了x86、ARM等不同架构的缓存探测逻辑 信息全面:提供缓存级别、大小、类型、共享关系等详细信息 易用接口:通过/sys/devices/system/cpu/cpuX/cache/目录

2026-01-15 08:05:42 637

原创 [Linux]学习笔记系列 -- [driver]base

Linux设备模型基础驱动示例 本示例展示如何使用Linux设备模型框架编写一个简单的平台设备驱动。 驱动代码 (my_driver.c): #include #include #include static int my_probe(struct platform_device *pdev) { pr_info("My driver probed the device\n"); return 0; } static int my_remove(struct platform_device *pdev) {

2026-01-15 08:05:09 788

原创 [Linux]学习笔记系列 -- hashtable

本文介绍了Linux内核中的哈希表实现,主要包含三个核心功能: DEFINE_HASHTABLE宏用于定义哈希表,通过指定名称和位数创建固定大小的hlist_head数组; hlist_for_each_entry系列宏提供哈希表遍历功能,支持安全遍历和类型转换; hash_add函数将对象添加到哈希表,通过hlist_add_head实现链表头插入。 这些接口位于include/linux/hashtable.h中,是Linux内核基础数据结构的重要组成部分。

2026-01-14 08:35:21 768

原创 [Linux]学习笔记系列 -- compiler

本文介绍了Linux内核中的编译器相关宏定义和优化技术,主要涵盖include/linux/build_bug.h和include/linux/compiler.h等头文件。重点内容包括: 静态断言:static_assert宏用于编译时检查常量表达式,基于C11的_Static_assert实现。 编译时错误检测:BUILD_BUG_ON系列宏用于在条件为真时中断编译,提供错误信息。 分支预测优化:likely和unlikely宏利用__builtin_expect提示编译器优化分支预测路径。 内存屏障:

2026-01-14 08:32:06 747

原创 [Linux]学习笔记系列 -- bits

本文介绍了Linux内核中位操作相关的核心头文件与宏定义。主要内容包括:1)bits.h中的BIT_WORD宏用于计算位图对应的字数;2)bitmap.h中的bitmap_weight函数统计位图中置1位的数量;3)bitops.h中的通用位操作宏,包括bitop宏根据编译时常量选择优化实现,test_bit测试位状态,assign_bit设置或清除位,以及fls_long查找最高有效位;4)BITS_TO_LONGS等宏用于计算给定位数所需的数据类型数目。这些位操作工具广泛应用于内核内存管理和性能优化场景

2026-01-13 08:41:20 652

原创 [Linux]学习笔记系列 -- atomic

本文介绍了Linux内核中原子操作相关的几个关键实现。首先分析了generic_test_bit和const_test_bit两个位测试函数的区别,前者使用volatile保证内存可见性,后者适合编译时常量优化。接着探讨了raw_atomic_long_read等原子读取操作的实现,包括32位和64位的不同处理。文章还详细说明了xchg宏的实现机制,它通过内存屏障和原子性检查确保线程安全。最后解释了raw_atomic_long_read_acquire的获取语义特性,这是实现高效多线程同步的关键。这些原子

2026-01-13 08:38:21 733

原创 WIN11如何可以安装ISO

本文针对Windows 11系统下无法安装ISO镜像的问题提供解决方案。关键步骤包括:1)将ISO文件的默认打开方式设置为"Windows资源管理器"以正确挂载镜像;2)在Windows安全中心关闭"检查应用和文件"选项,避免SmartScreen筛选器拦截。该问题源于第三方压缩软件的错误文件关联和系统安全策略的过度防护。通过上述两步操作可恢复系统原生ISO挂载功能,确保安装程序正常运行。解决方案适用于2025年9月特定版本的Windows 11系统。

2026-01-12 18:34:41 730

原创 [Linux]学习笔记系列 -- 通用数学与位操作宏

本文介绍了Linux内核中处理64位数学运算的关键宏实现,主要包括div64.h头文件中的三个核心功能:64位除法(__div64_32)、64位乘法(__arch_xprod_64)和常数除数优化除法(__div64_const32)。这些实现通过内联汇编、编译时优化和数学技巧,在保证正确性的前提下显著提升了运算效率。其中,__div64_32使用特殊寄存器约定实现64位除以32位运算;__arch_xprod_64通过分段计算处理128位乘积;__div64_const32则利用倒数乘法将除法转换为更快

2026-01-12 08:26:52 1153

原创 [Linux]学习笔记系列 -- 通用工具与错误处理宏

本文介绍了Linux内核中的几个重要工具宏和错误处理机制。主要包括三部分内容:1) once_lite.h提供的DO_ONCE_LITE宏,通过静态变量确保代码在多核环境下只执行一次;2) bug.h中的错误处理宏,如BUG()用于严重错误时触发panic,WARN系列宏用于警告输出;3) cleanup.h基于GCC cleanup属性实现的资源自动清理机制,包括DEFINE_FREE和DEFINE_GUARD宏,可确保资源在变量作用域结束时自动释放。这些工具宏为内核开发提供了可靠的错误处理和资源管理机制

2026-01-12 08:25:02 934

原创 [Linux]学习笔记系列 -- 内核支持与数据

本文介绍了Linux内核开发中几个关键的头文件及其功能: typecheck.h 提供类型检查宏,确保变量类型匹配; types.h 定义内核与用户空间共享的基础数据类型; export.h 实现符号导出机制,包括EXPORT_SYMBOL系列宏,支持GPL许可证检查和命名空间隔离; init.h 提供初始化标记宏如__init/__exit,帮助内核优化内存使用。这些头文件共同构成了Linux内核模块开发的基础设施,支持类型安全、符号共享和资源管理等核心功能。

2026-01-11 09:10:38 753

原创 [Linux]学习笔记系列 -- 内存管理与访问

本文摘要了Linux内核中内存管理与访问优化的关键机制。主要包括: 缓存行对齐(__cacheline_aligned):通过宏定义确保变量对齐到缓存行边界,减少多处理器系统中的伪共享问题,提高缓存命中率。 初始化后只读数据(__ro_after_init):标记初始化阶段后可变为只读的数据,兼顾安全性和初始化灵活性。 数据预取机制(prefetch/prefetchw):提供指令级预取支持,包括读取预取和写入预取,通过架构特定实现或编译器内置函数优化缓存性能。 内存毒化(POISON_POINTER_DE

2026-01-11 09:09:24 1205

原创 [Linux]学习笔记系列 -- 底层CPU与体系结构宏

本文分析了Linux内核中底层CPU与体系结构相关的关键宏定义和函数实现。主要内容包括: 原子读写宏:介绍了READ_ONCE和WRITE_ONCE宏的实现,通过volatile指针和编译时断言确保单次读写的原子性,防止编译器优化。 中断控制:解析了irqflags.h中的中断状态管理函数,包括arch_irqs_disabled_flags判断中断状态、local_irq_save/restore保存恢复中断标志位等。 指令指针获取:说明了_RET_IP_和_THIS_IP_宏的实现原理,用于获取当前函数

2026-01-09 08:42:56 697

原创 [Linux]学习笔记系列 -- 代码补丁

本文介绍了Linux内核中的两种优化机制:static_call和jump_label。它们都通过动态修改指令来优化性能,但侧重点不同。static_call用于优化函数调用路径,通过将间接调用替换为直接调用减少开销;而jump_label则用于优化条件分支,通过修改跳转指令来动态启用/禁用代码块。两者都依赖代码补丁技术,分别适用于模块化函数替换和调试跟踪等场景,是内核性能优化的重要手段。

2026-01-09 08:32:41 712

原创 [Linux]学习笔记系列 -- [fs]sysfs

sysfs_get 函数解析 sysfs_get 是一个内联函数,用于增加 sysfs 节点(kernfs_node)的引用计数。该函数定义在 include/linux/sysfs.h 头文件中。 函数功能 增加 kernfs_node 对象的引用计数 防止节点在使用过程中被意外释放 返回传入的 kernfs_node 指针 实现细节 static inline struct kernfs_node *sysfs_get(struct kernfs_node *kn) { if (kn) kernfs_g

2026-01-08 10:38:35 1275

FDM打印材料综述.doc

FDM打印材料综述

2019-12-22

数学建模-数学建模的建立.docx

数学建模_数学建模的建立.docx

2019-12-22

e-LinkS使用方法-3.1 (1)

e-Link是Holtek为新一代具OCDS架构的Flash MCU开发的在线侦错调适器,搭配HT-IDE3000软件,提供客户直接在应用板上做侦错的MCU开发工具。

2018-07-25

液晶显示板revc-20141009-sch-r

液晶显示板revc-20141009-sch-r 液晶显示板revc-20141009-sch-r 液晶显示板revc-20141009-sch-r

2018-07-25

PID控制算法的C语言实现(完整版)

最全PID!PID控制算法的C语言实现(完整版)

2018-08-26

NBM7100 电池能量管理设备.docx

NBM7100 电池能量管理设备.docx

2024-05-06

LM324四重运算放大器TI数据手册中文版

LM324四重运算放大器TI数据手册中文版 谷歌翻译版 LMx24,LMx24x,LMx24xx,LM2902,LM2902x,LM2902xx,LM2902xxx四重 运算放大器

2020-09-20

HAL库串口空闲中断+DMA+FIFO实现

HAL库串口空闲中断+DMA+FIFO实现

2022-01-21

CUBE+STM32F7+FREEMODBUSV1.5 多从机

吐血修改!!! 从别人F1标准库的多从机程序移植到F7HAL库中。 已测试可用。 已知BUG:双串口同时1MS一次收发会有溢出错误。

2022-01-21

双串口MODBUS+DMA+FIFO.7z

1.FREEMODBUSV1.5 支持多从机 2.串口模式为DMA+FIFO

2022-01-24

双串口MODBUS.7z

支持多从机MODBUS通信 基于FREEMODBUS改写。 添加DMA+FIFO缓存。能够双串口进行1MS收发不会OVRERUN

2022-01-25

python爬取飞猪机票.py

python爬取飞猪机票 采用selenium模拟登陆 使用微博账号登陆淘宝跳转飞猪python爬取飞猪机票

2019-12-14

STM32F1必备参考书

STM32F1必备参考书 STM32F1必备参考书STM32F1必备参考书STM32F1必备参考书STM32F1必备参考书STM32F1必备参考书STM32F1必备参考书STM32F1必备参考书STM32F1必备参考书STM32F1必备参考书STM32F1必备参考书STM32F1必备参考书STM32F1必备参考书STM32F1必备参考书STM32F1必备参考书

2018-07-25

RoboMaster M3508直流无刷减速电机

RoboMaster M3508直流无刷减速电机RoboMaster M3508直流无刷减速电机RoboMaster M3508直流无刷减速电机RoboMaster M3508直流无刷减速电机RoboMaster M3508直流无刷减速电机RoboMaster M3508直流无刷减速电机RoboMaster M3508直流无刷减速电机RoboMaster M3508直流无刷减速电机RoboMaster M3508直流无刷减速电机RoboMaster M3508直流无刷减速电机RoboMaster M3508直流无刷减速电机RoboMaster M3508直流无刷减速电机RoboMaster M3508直流无刷减速电机RoboMaster M3508直流无刷减速电机RoboMaster M3508直流无刷减速电机RoboMaster M3508直流无刷减速电机RoboMaster M3508直流无刷减速电机RoboMaster M3508直流无刷减速电机RoboMaster M3508直流无刷减速电机

2018-07-25

C语言+EasyX库生成星空

C语言+EasyX库生成星空

2018-08-26

C51蜂鸣器播放两只老虎和小星星代码

C51蜂鸣器播放两只老虎和小星星代码,怎么根据谱子打表呢。。。自己摸索吧

2018-08-29

STM32F103C8T6程序

STM32F103C8T6模板

2018-07-25

MAX262-V4.0.7z

MAX262程控滤波器

2021-11-04

STC89C52RC代码

当年写的C52代码,需要的下了不要喷我,我当年写的,也是新手。

2018-08-26

层次分析法在大学生转专业问题中的应用.doc

层次分析法在大学生转专业问题

2019-12-22

HT66Fxx+Flash单片机原理与实践+C语言

HT66Fxx+Flash单片机原理与实践+C语言HT66Fxx+Flash单片机原理与实践+C语言

2018-07-25

C语言代码夜夜爱消除

C语言代码,新手写的不要喷我哈C语言代码,新手写的不要喷我哈

2018-08-26

TI-SDK-WF CODE

TI-SDK-WF CODE

2018-07-25

2级C语言整合书籍资料

2级C语言整合书籍资料

2018-08-26

MPU6050资料

MPU6050资料

2018-08-26

CPP中链表代码

CPP中链表代码

2018-08-26

ESK-200電路圖(ESK200-BC)

ESK-200電路圖(ESK200-BC)

2018-07-25

HT66Fxx Datasheet

HT66Fxx Datasheet

2018-07-25

空空如也

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

TA关注的人

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