自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 内核抢占​

本文主要探讨了Linux内核抢占机制的原理及其在提升系统响应实时性中的作用。文章首先分析了导致系统响应延迟的四大因素(中断延迟、处理延迟、调度延迟和优先级倒置),并详细解释了内核抢占如何通过优先处理高优先级任务来减少延迟。最后指出内核抢占是吞吐量与实时性权衡的结果,在手机等交互场景中对提升用户体验至关重要。

2025-08-21 11:22:18 553

原创 CPU亲和性

本文介绍了CPU亲和性的基本概念、应用场景和实现方法。CPU亲和性是指将特定进程或线程绑定到特定CPU核心的技术,可以提高缓存效率、减少上下文切换并优化负载均衡。文章强调需根据系统核心数和应用场景选择合适的绑定策略,同时注意权限控制和负载均衡问题。

2025-08-19 14:48:54 976

原创 中断线程化

摘要:Linux传统中断处理存在实时性痛点,可能因中断禁用和串行处理导致关键任务延迟。PREEMPT-RT补丁引入中断线程化机制,将中断处理转为可调度的内核线程,赋予不同优先级并允许抢占。这种方法显著减少了中断禁用时间,提高了系统响应可预测性。通过chrt工具可灵活调整中断线程优先级,从而满足高实时性应用需求。

2025-08-18 15:48:33 653

原创 PCIe入门(2)

PCI采用总线共享式通讯方式;PCIe采用点到点()通讯方式,互为接收端和发送端,全双工,基于数据包传输;两个PCIe设备之间的连接称作一条链路(link), 一条链路可以包含多个通道(每对接收和发送对称作一个通道(lane)),可增加通道个数来满足更高的带宽要求。PCIe吞吐量计算方法:吞吐量 = 传输速率 * 编码方案。

2025-08-15 09:38:14 653

原创 PCIe入门(1)

本文主要介绍了PCIe协议的基础知识、拓扑结构和分层架构。首先对比了PCI和PCIe的区别,指出PCIe已成为主流标准。最后详细说明了PCIe设备的配置空间结构,特别是基地址寄存器(BAR)的功能和使用方法,以及PC与PCIe设备间的双向访问机制。这些内容为理解PCIe协议和开发相关应用提供了基础理论支持。

2025-08-14 15:34:17 879

原创 Linux进程调度——实时优先级命令chrt

Linux系统下使用chrt命令调整进程调度优先级chrt命令用于修改进程的实时调度策略和优先级,适用于需要严格控制CPU资源的场景(如音视频处理、工业控制)。该命令支持三种调度策略:SCHED_OTHER(默认轮转调度)、SCHED_FIFO(先进先出)和SCHED_RR(带时间片的轮转调度),其中FIFO/RR策略可设置1-99的优先级(数值越大优先级越高)。

2025-08-12 14:22:44 987

原创 JTAG基础入门原理解析

JTAG(IEEE 1149.1)作为现代电子设计与测试的核心接口,通过四线(TDI/TDO/TMS/TCK)实现复杂电路板的边界扫描测试。JTAG是解决系统崩溃、驱动调试的终极工具,配合OpenOCD和GDB可实现对芯片的精准控制。文章还包含FPGA的BSDL文件解析和边界扫描寄存器操作实例,完整呈现了JTAG在硬件测试和嵌入式开发中的关键价值。

2025-08-12 09:24:00 813

原创 Linux进程调度——实时调度类

Linux实时调度类(SCHED_FIFO/SCHED_RR)专为时间敏感型任务设计,通过抢占式调度确保高优先级任务优先执行。在BSP开发中,实时调度类常用于硬件中断处理、传感器数据采集和电机控制等场景,通过合理设置优先级(1-99)和使用优先级继承机制避免"优先级反转"问题。开发者需注意避免滥用最高优先级导致系统饥饿。

2025-08-11 11:25:37 543

原创 Uboot启动异常分析

这篇是我以前学习过的内容,笔记写在了one note里,现在把markdown移植到这里来。

2025-08-08 10:57:24 200

原创 设备树(DTS)在Uboot中的应用​(fdt实践与原理)

本文介绍了U-Boot中fdt命令的使用方法和修改原理。fdt命令用于操作设备树,支持动态修改设备树节点和属性,包括查看、添加、删除、修改等操作。修改原理涉及调整设备树内存布局,包括扩展属性值空间、移动数据块、更新头部信息等。文章还分析了U-Boot源码中fdt命令的实现流程,包括属性解析和设置的具体函数调用关系。这些操作使开发者能在启动阶段灵活调整设备树配置,无需重新编译即可适配不同硬件。

2025-08-07 17:31:36 727

原创 Uboot驱动模型(DM)开发与移植(2)

本文介绍了U-Boot Driver Model (DM)的核心功能与开发实践。DM通过设备树驱动、动态初始化和标准化接口等特性,实现了硬件描述与代码分离,提高了代码复用率和可维护性。掌握DM需要理解设备类、设备和驱动三者的关系,熟悉设备树匹配机制及调试方法。

2025-08-05 16:34:24 998

原创 Uboot驱动模型(DM)开发与移植(1)

仅作为学习记录​​ 是 U-Boot 引入的一种​​,用于统一管理硬件设备、驱动程序和硬件抽象层。其核心目标是解决传统 U-Boot 中设备初始化混乱、代码冗余、可移植性差等问题,通过分层设计和设备树(Device Tree)实现硬件的动态发现、标准化操作和生命周期管理。

2025-08-05 14:39:27 1001

原创 Uboot命令、调试解析

本文主要介绍了U-Boot的基本概念、编译流程和常用调试命令。U-Boot是类似BIOS的通用bootloader,支持多种架构,负责初始化DDR并引导Linux等系统。

2025-08-04 17:18:39 748

原创 Uboot启动流程解析

本文详细解析了嵌入式系统的启动流程和U-Boot源码实现。启动过程分为三个阶段:iROM阶段(加载BL1到SRAM)、SRAM阶段(硬件初始化)和DRAM阶段(操作系统引导)。

2025-08-04 09:56:33 1022

原创 设备树内存映射

设备树(Device Tree)在Linux驱动开发中用于描述硬件资源及其内存布局,而内存映射则是将物理地址转换为虚拟地址以便内核访问的关键步骤。

2025-07-31 16:15:56 585

原创 vmstat性能监控

可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。块设备每秒接收的块数量,单位是block,这里的块设备是指系统上所有的磁盘和其他块设备,现在的Linux版本块的大小为1024bytes(文件缓存空间或策略不足以应对访问模式)vmstat的用法到此为止,要掌握的主要就是通过查看vmstat,知道我现在的系统内存运行状况如何,并且通过系统运作状态做出响应的改善。sys的值过高时,说明系统内核消耗的cpu资源多,这个不是良性的表现,我们应该检查原因。

2025-07-30 14:52:14 842

原创 slabtop缓存分析及命令学习

SLAB缓存是Linux内核中优化内存管理的重要机制,专门用于高效处理频繁分配和释放的小对象。它基于伙伴系统构建,通过预分配固定大小的对象池(Slab)来减少内存碎片和提高分配效率。系统提供slabtop命令和/proc/slabinfo文件来监控缓存使用情况,包括对象数量、内存占用等关键指标。典型应用场景包括文件描述符、网络套接字等高频小对象管理,能显著提升系统性能。

2025-07-29 17:12:25 633

原创 /proc/meminfo 指标解读

本文介绍了Linux系统中/proc/meminfo文件的内存指标解读。/proc/meminfo是了解系统内存使用状况的主要接口,记录了全局内存信息。同时分析了内存回收机制(LRU列表)、脏页处理、共享内存等概念,最后指出通过PageOwner工具可以追踪内存分配情况。这些指标对系统内存管理和性能优化具有重要参考价值。

2025-07-29 14:46:00 833

原创 Linux内存管理——OOM Killer

OOMKiller是Linux内核的内存保护机制,当系统内存耗尽时,它会终止高内存消耗进程以释放内存。其选择策略基于进程的OOM得分,通过调整可控制进程被杀优先级。理解OOMKiller有助于优化内存管理,保护关键进程,提高系统稳定性。

2025-07-18 11:37:35 1119

原创 Linux内存管理——kswapd守护进程

本文系统梳理了Linux内核中kswapd内存回收机制的核心原理与工作流程。其工作流程包含LRU链表扫描、二次机会算法、碎片整理协同等关键机制,在NUMA架构下按节点绑定线程。文章通过仓库管理员比喻形象阐释了kswapd如何通过平衡后台回收与前台性能,避免直接回收(direct reclaim)造成的进程卡顿,是Linux内存管理的核心组件。

2025-07-17 17:18:41 1186 1

原创 Linux内存管理——LRU 页面置换算法

文章摘要:本文记录了关于LRU页面置换算法的学习过程。首先介绍了Redis作为高效内存数据库的特点,包括非结构化数据存储和键值对特性。随后分析了内存资源有限性带来的数据管理问题,引出三种Redis数据删除策略:定时删除、惰性删除和主动删除。重点阐述了LRU算法的实现原理:通过哈希表快速定位数据,使用双向链表管理访问顺序,将最近访问的数据移至链表头,在容量满时淘汰尾部数据。文章通过具体示例演示了LRU的工作流程,包括数据插入、访问和置换过程。最后总结了LRU的核心逻辑:链表管理、淘汰机制和访问

2025-07-15 19:25:45 1062

空空如也

空空如也

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

TA关注的人

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