登录社区云,与社区用户共同成长
邀请您加入社区
本文继续深入Linux信号机制,从硬件异常和软件条件两个方向分析信号的产生过程。首先以浮点运算错误、段错误为例,介绍CPU如何发现异常,以及MMU如何通过地址映射、权限和状态完成检查,并进一步分析异常发生后操作系统如何接管进程、读取上下文并产生对应信号。随后转向软件条件产生信号,结合管道异常和闹钟机制,理解信号如何由操作系统中的软件事件触发,并通过时间戳、时间片以及“先描述,再组织”的方式,进一步
本文介绍 HRTOS 4.0 驱动库中的 06_Storage 存储设备驱动模块,面向 51 单片机 / 8051 平台,主要实现 24C02 EEPROM 存储器驱动及软件 I²C 底层通信。文章从模块结构、24C02 读写流程、I²C 起始与停止信号、字节读写及 ACK 应答机制等方面进行介绍,并结合实际代码说明驱动的使用方法与硬件连接注意事项。该模块采用分层设计,将 EEPROM 上层读写接
本文介绍 HRTOS 4.0 驱动库中的 02_Display 显示设备驱动模块,面向 51 单片机(8051)应用开发,提供 LCD1602、OLED 128×64 以及四位数码管等常用显示设备的驱动支持。文章详细介绍各显示设备的硬件接口、驱动 API、使用方式及实现特点,帮助开发者快速完成 51 单片机显示功能开发。HRTOS 4.0 通过驱动库进一步完善 51 单片机实时操作系统的软件生态,
进程调度解决多任务下CPU分配问题,需平衡公平与吞吐、响应与周转等冲突目标。本文对比FIFO、SJF、时间片轮转三种策略,代码演示5个进程下的完成时间与平均等待/周转差异,揭示SJF平均等待最优但长作业有饥饿风险,RR响应均匀但切换开销大。深入剖析“公平vs吞吐”矛盾本质,并引出Linux CFS(完全公平调度器)与实时调度(RM/EDF)两种路线。总结优先级反转、上下文切换代价、I/O密集区分、
进程是操作系统中最核心的概念之一,也是理解 Linux 内核运行机制的起点。本文将从进程的本质出发,逐步揭开程序如何成为真正运行实体的过程。文章首先介绍进程与程序的区别,深入理解 PCB(task_struct)在进程管理中的作用,以及操作系统如何通过“先描述,再组织”的方式管理海量进程。随后结合系统调用,探索 Linux 中进程信息的获取方式,并进一步分析父子进程模型,重点讲解 fork() 创
本文介绍了如何使用 Linux 系统调用完成文件读写操作。相比标准库函数 fopen()/fread()/fwrite(),直接使用 open()/read()/write() 等系统调用更接近操作系统底层。文章详细讲解了文件描述符的概念,以及如何通过 open() 获取文件描述符,使用 write() 写入数据,通过 lseek() 调整文件偏移量,再用 read() 读取内容。整个过程展现了
操作系统是计算机世界中连接软件与硬件的核心桥梁,但它并不是简单地“运行程序”,本文从冯诺依曼体系结构出发,逐步认识操作系统的基本概念,解析Linux内核、Android与手机系统之间的关系,并深入拆解软件访问硬件的完整链路。从系统调用到驱动程序,再到操作系统经典的“先描述,再组织”管理思想,通过结构体、链表等数据结构案例,理解操作系统如何将复杂资源抽象化、组织化,最终实现高效管理。本文帮助读者建立
汇编之后,慢慢变出了C,这依旧是一组抽象,把各个汇编封装,暴露一些功能,再重新,更人性化的组织它们,这样C语言就诞生了,python也是以此类推。最开始的计算机依靠开关的拨动,0101机器语言直接去写,这是费劲的,人们将一些特定的0101组合在一起,以英文助记符归纳他们的作用,这就是汇编。在这个阶段,就是一组抽象,隐藏了0101的书写,只把他们最终的效果暴露出来,并重新组织成更容易懂的功能。抽象的
本文介绍了Linux系统中分页式存储管理的核心概念。首先分析了物理内存碎片化问题及其解决方案——通过虚拟地址空间和页表实现虚拟连续但物理不连续的内存映射。详细讲解了struct page结构体如何管理物理内存页,重点解析了flags字段表示页状态的作用。文章从内存管理基础出发,逐步深入分页机制原理,为后续理解Linux内存管理奠定基础。
本文是一个RT-Thread实时操作系统的学习笔记合集,包含44个技术文档,涵盖了RT-Thread系统的核心组件和驱动开发。主要内容包括:文件系统(FATFS、LittleFS)、通信协议驱动(CAN、I2C、SPI、USB)、内核机制(线程调度、内存管理、IPC)、系统工具(FINSH、ULOG)以及底层开发(汇编、链接文件)等。该笔记系统整理了RT-Thread的各个功能模块,为开发者提供了
本文分析了vxWorks操作系统中select接口的实现流程。该接口通过监测文件描述符集合的状态变化实现异步I/O操作,主要流程包括:1) 检查线程select上下文有效性;2) 验证并调整文件描述符范围;3) 初始化或扩展上下文存储空间;4) 拷贝并处理输入参数;5) 设置超时时间;6) 创建唤醒节点并清空返回集合;7) 通过selDoIoctls将唤醒节点注册到各文件描述符的驱动层;8) 若出
串口通信(UART)直连了芯片的底层外设,它完全独立于操作系统的 TCP/IP 协议栈。这意味着,无论你在系统里怎么折腾eth0,哪怕引发了 IP 冲突、网卡宕机,甚至系统触发了 Kernel Panic,串口终端永远不会断开。它不仅能把你从失联的边缘拉回来,还能让你亲眼看到内核在生命最后一刻打印的“遗言”(Oops / Backtrace)。在嵌入式网络应用的开发中,“NFS/SCP 传文件 +
系统:操作系统,一个程序,一堆代码(管理对应资源和任务)包含:Linux,window,uinx,freertos Linux操作系统移植:将源代码(Linux操作系统源码)从一种环境(开发环境)下放到另一种环境(产品环境)下运行也可以称为移植。
开源硬件摘要(150字): 开源硬件通过公开电路设计文件(原理图、PCB、BOM等)降低开发门槛。典型代表包括: Arduino - 开源单片机开发板,适合快速原型验证和物理交互控制,以简单易用著称; 树莓派 - 微型Linux计算机,适合物联网网关和教育编程,具备完整操作系统功能; RISC-V - 开源指令集架构,打破ARM垄断,中国厂商已推出多款基于RISC-V的芯片。 这些项目通过GitH
设备驱动程序本质上是操作系统和硬件设备之间的桥梁,它屏蔽了硬件设备的物理差异,向上层提供标准的操作接口。// 假设这里是操作系统的 demo, 操作系统定义了 init exit print 三个抽象接口,当用户点击打印按钮之后,操作系统就会按序执行接口内容,接口实现在驱动程序中,具体逻辑要在驱动加载 probe 之后才能知道;= 0) {printf("[OS] 错误:驱动加载失败!\n");r
本文主要讲解了Linux信号处理的核心机制,重点分析了信号捕捉的全流程和内核态与用户态的切换原理。文章首先介绍了信号处理的三种方式(忽略、默认和捕捉),并详细描述了用户自定义信号处理函数的执行过程,通过"∞"形流程图形象展示了信号捕捉中内核态与用户态的多次切换。随后深入探讨了信号处理函数执行完毕后如何通过sigreturn系统调用安全返回主程序,以及内核如何修改用户栈实现这一机制。文章还解释了为什
start_kernel结束,同时创建kernel_init,kthreadd线程,start_kernel变空闲,kernel_init挂文件系统等。串口可以看到:Run /sbin/init as init process。顺序靠 initcall 级别保证(populate 在 arch,多数驱动在 device)。按固定顺序,把内核编译时登记好的一大串「开机初始化函数」挨个执行一遍。比较复
重点介绍硬件异常和软件条件两类信号产生方式: 硬件异常产生信号 CPU通过中断机制捕获硬件异常(如除0错误、野指针访问)并通知操作系统 常见信号包括SIGFPE(8)浮点异常和SIGSEGV(11)段错误 MMU内存管理单元通过页表项权限位检测非法访问 操作系统通过CR2寄存器等获取错误上下文并决定是否终止进程 软件条件产生信号 管道读端关闭时写端会收到SIGPIPE信号 alarm()系统调用设
如果您是想尝试 Cinux,并对一些驱动、前沿细节的实现感兴趣的朋友,请移步到下面的仓库:如果您对手写一个现代 C++ 操作系统感兴趣的朋友,请到这里:如果上面的内容,对您的学习和实际的开发哪怕有一丝帮助,都是笔者极大的荣幸!喜欢的话,麻烦小小的赏一个 ⭐(QAQ)。自己的知识仍不精湛,文章必然还有很多错误,还请各位大佬批评斧正!我们让内核跑起来了,可它只会往 debugcon 吐单字符(PL==
本文介绍了Linux匿名管道的原理与实现,主要内容包括: 匿名管道原理:匿名管道是最古老的进程间通信方式,本质是让不同进程共享操作系统提供的文件资源。通过pipe()系统调用创建内存级管道文件,父子进程通过继承文件描述符表共享同一管道。 单向信道构建: 父进程创建管道后fork子进程 父子进程分别关闭不需要的读写端(父关写/子关读) 形成父读子写的单向通信信道 实现示例: 子进程每秒向管道写入计数
文章摘要:本文详细解析了PCIe拓扑树的阅读方法,通过lspci命令分析PCIe设备链路结构。重点解释了RootPort与Switch端口Bus号范围不一致的原因,指出这是PCIe桥的Bus资源分配与热插拔预留机制所致。文章还总结了全球工程师最常用的lspci参数组合,包括-vvv、-nn、-k等,并提供了三个实战案例:排查设备降速、识别未知硬件和确认驱动状态。这些方法对PCIe设备调试和故障排查
由于全球半导体产能调整及AI基础设施需求激增,存储市场面临严重结构性缺货。求购特定型号SSD和服务器内存条,接受替代方案,现金快款结算。缺货主因包括美光退出消费级市场、SATA接口停产及DDR4产能压缩。提供详细采购清单和替代型号推荐,呼吁供应商联系,承诺快速付款。
本文介绍了Linux设备驱动的基本概念、功能及其在系统架构中的关键作用。主要内容包括: 设备驱动作为硬件与操作系统之间的接口层,实现了硬件无关性,为上层提供统一访问接口; 无操作系统时的裸机驱动开发模式,通过STM32 GPIO和UART驱动案例展示了直接寄存器操作方式; 对比了裸机驱动的特点(简单直接)与局限性(缺乏资源管理、无法并发访问等),为后续Linux驱动开发奠定基础。 (98字)
《Gen6 SSD测试环境搭建指南:三种方案解决无Gen6服务器难题》 摘要: 随着Gen6 SSD进入研发验证阶段,但Gen6服务器尚未普及,如何搭建有效测试环境成为行业痛点。本文介绍了通过PCIe6.0 Switch卡构建测试平台的三种方案:1) CEM转EDSFF转接卡方案适合单盘快速验证;2) MCIO转双EDSFF转接线提供灵活布线,支持多盘连接;3) 转接盘柜方案最接近真实服务器环境,
文章摘要: 某企业级SSD研发客户急需PCIe U.2 SSD验证工具,聚焦热插拔、故障注入、电压拉偏、功耗分析及边带信号监测等可靠性测试。企业级SSD需在复杂服务器环境中长期稳定运行,而消费级SSD的测试方法无法满足其严苛需求。自动化热插拔测试可模拟服务器维护场景,故障注入工具复现链路异常,电压拉偏验证供电健壮性,功耗分析模块(PAM)记录异常数据,可编程电源模块(PPM)主动模拟供电波动。文章
Saniffer专注于高速接口验证领域,提供PCIe/NVMe/CXL等协议分析、信号完整性测试及企业级存储验证的一站式解决方案。其工具箱包含协议分析仪(抓取链路交互数据)、Interposer适配环境(确保测试可靠性)、Quarch工具(监测供电/边带信号/热插拔异常)、SanBlaze平台(SSD兼容性认证)及NplusT设备(NAND介质特性测试)。这些工具协同工作,帮助芯片厂商、存储企业、
表示没有关联的 PTP 硬件时钟(PHC),这是 proxy client 驱动的正确设置——它无法直接访问 CPTS 硬件,因为 CPSW 硬件由 R5F EthFw 服务器管控。是代理客户端,CPSW 硬件由 R5F EthFw 服务器控制。这三者是软件时间戳的最小声明集合。如果还支持硬件时间戳,则会额外设置。驱动本身不需要在 RX 路径做任何额外工作。RX 软件时间戳由内核网络栈在接收路径自
Linux VFS虚拟文件系统与设备模型架构解析 摘要 本文深入探讨了Linux系统中的文件重定向机制与虚拟文件系统(VFS)架构。首先分析了标准错误(stderr)存在的必要性,通过实验演示如何分离标准输出和错误输出。其次详细解析了文件描述符和struct file结构体的底层原理,揭示了进程与文件的解耦设计。最后深度剖析了Linux"一切皆文件"哲学背后的VFS实现机制,包括设备驱动模型与文件
该技术的核心在于,将系统启动所必需的核心数据,优先从非易失性存储设备(闪存),复制到内存,完成初步启动工作后,再依次传输其他应用程序数据。====================(2)当HMI显示后,启动Linux电源管理suspend,让driver把每个外设的寄存器状态,保存到RAM。(4)至此,Linux恢复到休眠时的状态,HMI显示成功,然后,Linux可以继续向下运行。系列的多核平台,以
进程注入与系统架构概述 主要内容摘要 DLL注入是将动态链接库加载到目标进程地址空间的技术,主要用于功能扩展、调试、自动化或安全监控。常见注入方法包括CreateRemoteThread、SetWindowsHookEx、注册表修改和内存映射等。 进程防护措施包括:代码完整性检查、内存保护、模块加载监控、权限管理及利用操作系统安全特性(如DEP/ASLR)。综合使用多种策略可有效提高防护效果。 进
新版 YOLO26 主要实现了 RKNPU2 的 int8 / fp32 后处理,RKNPU1 的 u8 量化分支没有完整实现。注意rknn_model_zoo在模型转换为rknn后,在模型中加入了归一化操作。因此这两⾏代码的作⽤是,修改环境搜索优先级,使代码运⾏时优先调⽤⾃⼰修改的。找到rknn_model_zoo/examples/yolo11,在。将修改后的代码上传⾄服务器,进⾏训练,得到。
本文介绍了RISC-V计算机启动过程和xv6内核的基本架构。系统启动时从_entry开始执行,初始化栈并切换到监督者模式,最终进入main函数初始化系统。xv6内核包含多个关键模块文件,如进程管理、文件系统、内存分配等。文章还对比了RV32和RV64指令集的主要区别,包括寄存器宽度、地址空间、访存指令等方面的差异,重点说明了RV64新增的64位操作指令和32位运算的特殊处理方式。这些内容为理解RI
本文介绍了Quarch PAM(Power Analysis Module)在企业级SSD功耗测试中的应用。PAM可同步监测PCIe设备的功耗和sideband信号,适用于U.2 SSD、AI服务器等场景。文章详细讲解了PAM的测试系统架构、PowerStudio软件功能(实时采样、波形分析、数据记录)以及在企业级SSD验证中的关键价值,包括功耗分析、Reset行为分析和sideband信号监测。
本文深入剖析了Linux进程虚拟地址空间的底层架构,揭示了操作系统如何通过虚拟地址空间为每个进程营造"独占内存"的假象。文章从宏观布局和微观细节两个维度,详细解析了代码段、数据段、堆栈区等内存区域的划分与管理机制,并指出常见的"程序地址空间"概念实为"进程虚拟地址空间"。 通过父子进程共享同一虚拟地址却映射不同物理地址的现象,作者论证了虚拟地址空间并非物理内存的本质。文章进一步以"大富翁与私生子"
本文深入剖析Linux内核进程切换机制与调度原理。首先通过死循环进程示例阐明时间片轮转调度如何保障系统公平性,随后详解CPU寄存器作为临时存储空间的核心作用,强调区分寄存器硬件与存储数据的重要性。文章通过"当兵留籍"的生动类比,阐释进程上下文切换中硬件状态保存与恢复的完整流程,包括用户级、寄存器级和系统级上下文的组成。最后从内核源码角度分析早期Linux使用TSS结构保存寄存器数据的实现方式,揭示
实时性系统设计的关键问题与实现手段 摘要:实时性系统的核心在于处理时间不确定性,通过隔离、调度和补偿三种手段确保任务在规定时间窗口内完成。硬实时系统(如CAN总线、FMCW雷达)要求绝对时间确定性,错过截止时间将导致系统失效;软实时系统(如蓝牙音频、视觉SLAM)允许偶尔延迟,仅影响服务质量。实现实时性需从物理层(硬件确定性)、协议层(有界延迟保障)到操作系统层(实时调度)建立多层防护,通过优先级
本文深入探讨了Linux进程状态及其管理机制。首先介绍了操作系统理论中的进程状态概念,随后详细解析了Linux内核中定义的7种进程状态(运行、睡眠、磁盘休眠、停止、追踪停止、死亡和僵尸状态)。文章重点阐述了进程调度队列的FIFO算法、设备树与阻塞状态的关系,以及内存不足时通过交换分区实现的进程挂起机制。最后揭示了Linux内核链表的独特设计原理,包括通过offset宏计算结构体偏移量和链表动态重组
本文深入探讨了进程的概念及其在操作系统中的管理机制。文章首先介绍了进程的课本定义,指出进程是程序执行实例和系统资源分配的实体。随后详细解析了进程控制块(PCB/task_struct)的作用,将其比作进程的"户口本",包含标识符、状态、优先级等上百个属性信息。通过"先描述,再组织"的管理逻辑,操作系统将PCB组织成链表,实现对进程的增删查改操作。文章还介绍了
本文介绍了Linux操作系统的基础知识,重点探讨了冯诺依曼体系结构和操作系统的核心概念。文章首先阐述了冯诺依曼体系的硬件组成(输入单元、CPU、输出单元和存储器)及其数据流动机制,解释了程序必须加载到内存才能运行的原因。随后分析了操作系统的定义与目的,指出其核心在于管理硬件资源并为应用程序提供执行环境。通过软硬件层状结构的案例(如printf函数的执行流程),详细说明了系统调用和驱动程序的作用机制
本文总结了与高速网卡芯片研发客户关于PCIe5.0/6.0技术的深度交流。主要内容包括:1)PCIe IP主要依赖第三方供应商,全栈自研厂商较少;2)PCIe6.0商用落地仍需数年,面临信号完整性等挑战;3)当前缺乏真实测试环境,多采用Gen6 Switch卡搭建验证平台;4)协议分析工具需更高要求,SerialTek等新型分析仪因不干扰链路特性受青睐;5)行业已开始提前布局PCIe6.0,AI服
数字世界的标识体系解析 本文系统探讨了从物理层到操作系统的各类地址与命名机制,揭示了其背后的统一思维模型。核心围绕两个基本问题:"我是谁?"(命名)和"我在哪里?"(寻址),分析三对关键约束:唯一性与可复用性、身份与位置、扁平与层次结构。通过蓝牙、Wi-Fi、USB、CAN、内存管理等典型案例,阐释了地址的三重功能(身份标识、路由调度、访问控制)、生命周期(静态ID+动态地址)以及命名与寻址的转换
摘要:昨日在客户会议室举行的PCIe5.0x16协议分析仪技术交流会上,通过2小时的LiveDemo展示了SerialTek分析仪的关键功能。重点包括:协议分析仪与示波器的本质区别、Interposer的工作原理、Gen5/6信号保真性的重要性、内置高性能服务器的创新架构、浏览器远程管理优势,以及LTSSM状态分析和L1.2低功耗调试等核心议题。特别强调现代协议分析仪需保持链路透明性,避免掩盖原始
本文分享了PCIe5.0x16协议分析仪的使用指南,基于实验室实测视频和技术交流经验整理而成。主要内容包括:1)分析仪的作用是监听PCIe链路状态,解决服务器、GPU等设备的调试难题;2)硬件连接要点,强调Gen5对供电和线缆的高要求;3)软件界面解析,重点介绍LTSSM状态监测对问题诊断的关键作用;4)性能分析方法,如NVMe命令追踪和延迟统计;5)强调PCIe协议分析在现代系统中的重要性,建议
2026年5月,PCI-SIG开发者大会(DEVCON2026)宣布SerialTek的Kodiak平台正式成为PCIe6.0链路和事务层端点测试的官方认证工具,标志着PCIe6.0进入"正式合规验证"阶段。随着AI服务器等应用推动,PCIe6.0产业重点已从速度转向协议一致性与互操作性验证。大会议题显示行业正聚焦FLIT错误注入、重放机制等工程问题,测试工具也向深Trace、
在嵌入式底层开发、操作系统内核、驱动框架编写中,有一种写法贯穿始终——它用C语言(一门面向过程语言)实现了“面向对象”的核心思想,让代码具备极强的可配置性、可扩展性和可维护性,这就是函数指针表与抽象接口的组合设计。
PCI-SIG开发者论坛宣布SerialTek成为首个PCIe 6.0协议层兼容性测试(CTS)官方授权供应商,标志着PCIe 6.0正式进入标准化合规验证阶段。这一里程碑事件对整个产业链至关重要,意味着64GT/s PAM4+FLIT+FEC的复杂体系下,跨厂商设备将实现更稳定互通。SerialTek Kodiak测试系统通过PCI-SIG严格审核,支持确定性抓包、全栈可见性和功耗分析,可有效解
本文介绍了在GD32VW553H-EVAL开发板上为天气时钟程序添加红外遥控功能的过程。系统基于RT-Thread操作系统,通过TIMER1_CH2输入捕获实现红外接收,支持RC5和NEC两种协议。文章详细阐述了硬件连接、定时器初始化、中断处理、脉宽记录与调试等关键技术点,并展示了如何将遥控器按键与天气时钟功能进行联动控制。该功能涉及嵌入式系统中的多个典型问题,包括定时器输入捕获、红外协议解码、中
本文详细记录了将IoTSharp/mqttclient移植到嵌入式系统的过程。该MQTT客户端具有高性能、跨平台特性,支持多种操作系统。移植重点包括:1) 实现网络部分(AT命令驱动ESP8266);2) 处理内存、线程、定时器等核心模块;3) 解决编译过程中的各类错误(头文件缺失、类型未定义、GNU扩展语法兼容等)。通过逐步调试和修改,最终完成了基础功能的移植,为后续功能完善奠定了基础。文中特别
本文介绍了在PCIe6.0服务器尚未普及的过渡阶段,如何通过转接方案测试PCIe6.0/CXL3.0设备。主要内容包括:1) SerialTek公司展示的PCIe6.0测试方案;2) 使用SerialCables公司的PCIe6.0转接卡和MCIO线缆连接EDSFF SSD的方法;3) 重点讲解了5种转接方案的实际应用,包括PCIe6.0 E3.S转AIC转接卡、带Quarch测试接口的专业版本等
📌【24小时技术动态速览】 1️⃣ CPU需求变化:英特尔服务器CPU供货紧张,AI智能体任务推动CPU需求增长,数据中心CPU/GPU配比或从1:4-1:8转向1:1-1:2。 2️⃣ RISC-V安全生态:芯来科技与OSYX推出类TrustZone可信执行环境(TEE),英飞凌计划推出RISC-V车规MCU,乐鑫发布超低功耗RISC-V SoC。 3️⃣ DeepSeek-V4适配进展:已完