自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 FreeRTOS实时操作系统:裸机到多任务并发

本文深入探讨了嵌入式系统从裸机架构向FreeRTOS实时操作系统的演进过程。通过对比传统超级循环的局限性,详细解析了FreeRTOS的核心架构,包括任务管理、调度机制和内存分配策略。重点阐述了任务控制块(TCB)结构、五种内存管理方案的特点比较,以及heap_4分配器的实现原理。文章还提供了构建多任务LED控制系统的实战示例,展示了FreeRTOS在复杂嵌入式应用中的优势。全文150字,系统性地介绍了FreeRTOS的关键技术要点和实际应用方法。

2025-12-02 08:00:00 813

原创 信号量知识详细

本文深入解析了信号量的底层逻辑与应用场景。信号量通过P/V原语实现原子操作,P操作检查并减少信号量值,V操作增加并唤醒等待任务。文章详细对比了四种信号量类型:二进制信号量(单资源开关)、计数信号量(多资源管理)、互斥信号量(带所有权保护)和信号量集(多资源组合)。通过停车场管理系统等生活化比喻和代码示例,阐述了信号量在任务同步、资源管理和临界区保护中的核心作用。特别强调了互斥信号量的安全机制(所有权、优先级继承)和原子操作的重要性,避免多任务环境下的竞态条件。最后通过生产者-消费者模型展示了信号量在任务同步

2025-12-02 08:00:00 1146

原创 FreeRTOS 全面详解与补充

本文详细解析了FreeRTOS任务管理的核心机制:1)TaskHandle_t类型本质是任务控制块指针,用于任务管理和操作;2)任务创建流程包含内存分配、TCB初始化和调度器注册;3)任务状态机包含就绪、运行、阻塞等状态及转换关系;4)延时机制基于系统节拍中断实现,涉及延时列表处理和时间片调度。文章通过代码片段、流程图和表格详细说明了任务句柄的使用场景、创建参数、状态查询方法以及系统节拍的工作机制,为FreeRTOS任务管理提供了全面的技术参考。

2025-11-29 16:20:38 1012

原创 嵌入式RTOS核心概念详解

本文摘要介绍了RTOS中的核心概念和技术实现: 原子操作:不可中断的操作实现,涉及关中断、锁总线等关键技术,用于共享资源访问保护。提供了C语言原子操作示例和RTOS应用场景分析。 任务状态:详细说明了就绪、运行、阻塞和挂起四种状态及其转换关系,包含状态机图示和FreeRTOS状态管理API。 任务优先级:分析了静态/动态优先级体系,比较了不同RTOS的优先级实现,重点讲解了优先级反转问题及解决方案(优先级继承)。 任务列表:描述了RTOS中多种任务列表的组织结构,包括就绪列表、阻塞列表等,展示了FreeRT

2025-11-29 16:19:04 743

原创 GPIO 八大模式

本文系统介绍了8种常见的GPIO工作模式及其应用场景: 推挽输出:双MOS管结构实现强驱动和完整电压摆幅,适用于LED等大电流负载; 开漏输出:单MOS管设计支持电平转换和I2C等总线的线与逻辑; 复用推挽/开漏输出:外设直接控制引脚,提高利用率并保证时序精度; 上拉/下拉输入:通过内置电阻避免悬空,分别适用于按键检测和特定电平场景; 浮空输入:高阻抗特性适合读取外部主动信号; 模拟输入:完全断开数字电路,为ADC提供纯净信号通路。 每种模式都有其特定的硬件结构和适用场景,合理选择可优化系统性能和资源利用。

2025-11-17 08:00:00 906

原创 GPIO标准库开发

摘要:本文对比了嵌入式开发中寄存器操作与标准库开发的差异,重点解析了STM32 GPIO的8种工作模式及其应用场景。标准库开发通过封装寄存器操作,显著提高了代码可读性和开发效率。文章详细介绍了推挽输出、开漏输出等模式的工作原理,并以LED控制为例,演示了标准库开发的四步流程:时钟使能、结构体配置、初始化应用和电平控制。通过具体代码示例,展示了如何使用STM32标准外设库快速实现硬件控制,为初学者提供了实用的开发指导。(149字)

2025-11-15 16:02:21 852

原创 stm32f4点灯

这段代码是STM32F4系列单片机的寄存器级底层操作示例,核心功能是配置GPIOF端口的第9号引脚(PF9)为输出模式并输出低电平,实现点灯效果。代码通过宏定义完成地址映射,首先使能GPIOF时钟,然后配置PF9为推挽输出模式,最后将其输出电平拉低。整个过程涉及关键寄存器操作:RCC_AHB1ENR(时钟使能)、GPIOF_MODER(模式配置)和GPIOF_ODR(输出控制)。该示例展示了如何直接操作寄存器控制硬件外设,是嵌入式开发的典型底层实现方式。

2025-11-15 14:59:18 741

原创 KIMi对话提示词

打开官网直接进行调教以下是我的对话可以参考下前面先机哥问答后面再上强度到后面9.9基本下一个就是0.99了。

2025-11-11 18:59:50 864

原创 从C到C++:深入理解类与对象及运算符重载

本文探讨了从C语言到C++面向对象编程的演进,重点分析了类与对象的封装特性及运算符重载机制。文章首先通过C结构体与C++类的对比,展示了类如何通过访问控制实现数据隐藏,并通过构造函数与析构函数自动管理对象生命周期。核心内容包括:类与对象的关系解析、构造函数的多重形式及其初始化方式、成员函数与运算符重载的实现方法。通过丰富的代码示例,阐述了C++在代码复用性、数据安全性和编程灵活性方面的优势,为理解面向对象编程提供了实践指导。

2025-11-11 18:46:02 632

原创 Linux时间处理与系统时间管理详解

本文详细介绍了Linux系统中的时间处理与时间管理功能,主要内容包括: Unix时间戳概念:从1970年1月1日UTC开始计算的秒数 time()函数:获取当前时间戳的原型、参数说明和使用示例 localtime()系列函数:将时间戳转换为本地时间结构体tm,包含线程安全版本localtime_r() 详细解析了struct tm结构体的各个字段含义和取值范围 提供了多个代码示例: 基础时间获取示例 线程安全版本使用方法 完整时间格式化输出示例 包含时间转换、星期计算、夏令时状态判断等实用功能

2025-11-05 19:33:10 502

原创 文件属性获取与目录IO操作详解

本文详细介绍了Linux系统中文件属性获取与目录IO操作的关键技术。主要内容包括: 文件属性获取函数:详细解析stat()、fstat()和lstat()三个函数的区别及适用场景,通过对比表清晰展示各自特点。 struct stat结构体:深入剖析文件属性结构体的各个字段含义,特别解释了三种时间戳(访问、修改、状态变化)的区别。 文件类型判断:展示S_ISREG等宏的使用方法,通过表格形式说明如何判断7种不同文件类型。 实用代码示例:提供了获取文件大小、判断文件类型以及在文件末尾追加内容等3个完整代码示例,

2025-11-05 19:32:49 775

原创 开发板网络配置

摘要:本文详细介绍了开发板与电脑的三种网络连接方式(网线直连、路由器连接、Wi-Fi无线连接)及其配置方法,包括IP设置、网络模式选择和虚拟机桥接配置。重点说明了直连和路由器模式下的静态IP配置步骤,Wi-Fi连接的设置技巧,以及如何将虚拟机接入局域网。文章还提供了网络连通性测试、SSH登录方法和常见问题排查指南,帮助用户快速建立稳定的开发环境连接。(150字)

2025-10-26 23:14:57 1371

原创 开发板rz 文件Retry0:Garbage count exceded解决

文章摘要:针对数据传输中断问题,排查原因包括传输介质接触不良、电磁干扰、数据校验失败、文件损坏、传输工具兼容性或参数设置不当等。解决方案包括更换线缆、调整校验逻辑、重新生成文件、降低传输速率或更换工具(如改用scp)。若文件过大(如几十MB),建议分块传输。对于无网络环境,可尝试直连或优化串口传输配置(如使用rz -be二进制模式)。实际案例中,10MB左右文件传输正常,更大文件需调整方法。

2025-10-26 22:49:34 190

原创 Hex Editor 解析

Hex Editor:嵌入式开发的二进制调试利器 Hex Editor作为十六进制编辑器,能直接查看和编辑文件的二进制数据,在嵌入式开发中具有重要价值。其核心功能包括:多格式数据查看(十六进制/ASCII同步显示)、精准字节编辑、文件结构解析(如BMP文件头验证)、差分对比及存储介质直接操作。特别适用于调试BMP图像文件(验证文件头、分析像素数据)、检查二进制程序(如ELF文件关键参数)等场景。主流工具如010 Editor、VS Code Hex等各有优势,选型需考虑具体需求。使用时需注意数据备份、字节序

2025-10-17 11:24:54 776

原创 BMP图片格式解析及在嵌入式设备上的显示

BMP图片格式解析与显示原理 摘要:BMP是Windows的标准位图格式,采用非压缩方式存储图像数据。其文件结构包含文件头、位图信息头、颜色表(24位BMP通常省略)和像素数据。24位BMP每个像素用3字节表示(BGR顺序),图像数据从下往上存储,每行需4字节对齐。在嵌入式系统中显示BMP的核心步骤包括:解析文件头获取图像尺寸,处理像素数据(BGR转RGB),跳过填充字节,最后写入帧缓冲区(如/dev/fb0)。示例代码展示了如何读取BMP文件信息,并通过内存映射方式在开发板上实现图像显示。

2025-10-17 11:23:32 834

原创 C++ 构造函数知识表

本文系统梳理了C++构造函数的关键知识点,包括基础概念、分类语法、初始化特性、编译器行为规则、继承体系处理、资源管理原则等核心内容。重点阐述了初始化列表、explicit关键字、类内初始化等现代C++特性,详细解析了编译器自动生成函数的条件与默认行为,并总结了常见误区与调试技巧。最后提供了构造函数设计的最佳实践检查清单和高级设计模式应用,涵盖从基础使用到高级优化的全方位指导,特别强调RAII原则、异常安全和移动语义等现代C++编程规范。

2025-10-15 10:15:20 805

原创 # 操作系统核心知识深度扩展

本文系统梳理了Linux系统核心机制,包括进程内存管理(虚拟地址空间布局、页表转换)、动态链接(ELF结构、延迟绑定)、文件系统(VFS架构、inode管理)、进程调度(状态机、CFS算法)、系统调用与中断处理流程、安全防护(ASLR、CFI)、性能优化工具(perf、eBPF)以及容器技术(namespace隔离、cgroups)。内容涵盖底层硬件交互到上层应用支撑,重点解析了Linux系统各核心组件的架构设计、关键数据结构和典型工作流程,为深入理解操作系统原理提供体系化知识框架。

2025-10-10 08:00:00 1043

原创 操作系统核心知识深度扩展

本文深入解析操作系统核心机制,包含三部分:1) 进程内存管理,详细分析x86-64虚拟内存布局、四级页表结构及TLB优化策略;2) 动态链接机制,剖析ELF文件双视图结构、程序头表关键段类型和符号解析状态机;3) 内存分配算法,包括伙伴系统实现和Slab三层结构优化。重点阐述GOT/PLT延迟绑定流程,首次调用需6步完成符号解析,后续调用直接通过GOT跳转,显著提升性能。

2025-10-10 08:00:00 672

原创 C语言核心知识点总表(1)

本文整理了C语言入门核心知识点,适合初学者和复习使用。主要内容包括:1)程序基础结构(Hello World组成、main函数形式、头文件规则、编译四阶段);2)数据类型(基本类型占用字节和取值范围、有符号与无符号区别、补码机制);3)变量(命名规则、初始化方式、生命周期与作用域)。重点提示了常见易错点,如变量未初始化、数据类型溢出、编译错误处理等。文中通过表格对比和代码示例直观展示知识点,建议收藏备用。

2025-09-27 08:00:00 1272

原创 C语言完整知识体系总览

本文系统梳理了C语言的核心知识体系,主要包括以下内容:1) 基础语法与程序结构;2) 数据类型系统及转换规则;3) 运算符分类与优先级;4) 流程控制结构;5) 函数编程体系;6) 数组与字符串处理;7) 指针系统解析;8) 内存管理方案;9) 结构体与联合体;10) 预处理与宏编程。文章通过代码示例、表格对比和流程图等形式,全面展示了C语言的语法要点和编程技巧,为开发者提供了完整的参考框架。

2025-09-27 08:00:00 2049

原创 I/O详解

文件I/O是计算机系统中复杂而精妙的分层抽象模型,在性能、控制力、易用性和可靠性之间不断权衡演进。其核心架构从物理硬件层到应用层共7个层次,每层隐藏下层复杂性并提供更优功能。关键矛盾体现在缓冲与直接I/O、同步与异步、标准与原生接口之间的选择。技术演进方向聚焦高效解决这些矛盾,如mmap实现零拷贝大文件访问,io_uring通过环形缓冲区实现真正异步高性能I/O。理解这些层次架构和核心矛盾是优化I/O性能的基础,开发者需根据场景在速度、控制与可靠性间作出权衡。

2025-09-26 17:28:28 644

原创 从 inode 角度深入分析软硬链接的内核实现与设计

本文介绍了文件存储的基本概念,重点解析了硬链接和软连接的区别及其实现原理。文件存储包含文件名、Inode(存储元数据)和数据块三部分。硬链接是同一Inode的多个文件名,共享数据且地位平等;软连接是存储目标路径的特殊文件,拥有独立Inode。硬链接无法跨文件系统,删除原文件不影响链接;软连接可跨系统,删除原文件会导致链接失效。内核通过引用计数管理硬链接,空间效率高;软连接实现更灵活,适合日常使用。理解这些机制有助于高效管理文件系统。

2025-09-26 16:55:37 1010

原创 文件系统核心组件详解

摘要:本文介绍了文件系统的关键组成部分及其功能。Boot Block是系统启动入口,Super Block记录文件系统全局信息,Group Descriptor Table索引所有块组。每个Block Group包含Block/Inode位图(管理资源分配)、Inode表(存储文件元数据)和Data Blocks(实际存储内容)。文件读取通过逐级查找目录项和Inode完成。这种结构设计提升了性能、防止碎片化并确保数据安全。

2025-09-22 11:28:18 755

原创 文件 I/O 操作深度剖析

*核心观点:**文件不仅是磁盘上一段数据,更承载内容与属性(元数据)的统一体;高效且安全的文件 I/O 操作,需要理解“打开”与“未打开”状态下的差异、内核与用户态之间的协同,以及合理的存储与 CRUD(增删查改)策略。

2025-09-18 14:10:51 666

原创 C语言 open() 函数

本文详细介绍了C语言中的open()函数,包括其原型、文件打开标志和权限模式。open()是Unix/Linux下的低级文件I/O函数,提供比标准库fopen()更底层的控制。文章解释了各标志位的作用和使用场景,并提供了创建、清空、追加文件等常见操作的代码示例。最后对比了open()与fopen()的特性差异,指出open()适合需要精细控制的场景,而fopen()更适合常规文件操作。使用注意事项包括错误处理、文件描述符管理和权限设置等关键点。

2025-09-18 13:00:00 1047

原创 C语言分支结构

本文总结了C语言中分支结构的核心知识点:1. if语句的判断表达式可为任意表达式,需注意连续关系判断的拆分;else就近匹配原则;多语句需加花括号。2. switch语句的case值必须为常量,break可防止穿透,default分支可选。3. 逻辑运算具有短路特性,需区分逻辑与和按位与;关系运算需注意"=="与"="的差异。4. 分支外的语句不受条件控制;输入可与分支结合处理多条件判断。5. 分支结构是结构化程序设计的三大基本结构之一(顺序、选择、循环)。

2025-09-15 10:37:20 520

原创 C语言运算符与表达式知识

定义语法:C语言变量定义需遵循“数据类型 + 变量名”的语法结构,可同时定义多个同类型变量。初始化注意:局部变量未初始化时,其值为不确定值;全局变量默认初始化为0。

2025-09-12 15:43:53 723

原创 写时拷贝详解

写时拷贝机制在进程修改共享内存时,会复制被修改的整个物理内存页(通常4KB)的数据,并更新相关页表元数据。该机制常见于fork()、mmap等场景,通过延迟分配和按需拷贝优化性能,仅当实际写入时才复制数据页,对应用程序完全透明。整个过程以内存页为单位,即使只修改1字节也会复制整页内容。

2025-09-11 14:36:35 701

原创 错误波形曲线

错误波形曲线并非一个标准的学术术语,而是一个高度概括的工程俗语。它指的是在测量、采集、处理或显示过程中,由于各种干扰、失真或系统误差,导致最终呈现的波形数据无法真实、准确地反映原始物理信号本质特性的曲线图形。可以将其理解为信号因各种原因无法准确无误的传达错误波形曲线是工程实践中的“大敌”,它揭示了从物理世界到数字世界转换过程中引入的不完美性。深度认识它们,不仅仅是记住几种类型,更重要的是建立一套**系统性的思维方法。

2025-09-05 17:02:27 697

原创 各种exec 系列函数

若需。

2025-09-05 16:32:45 330

原创 进程(Process)全面概述

本文全面概述了进程的概念及其在Linux系统中的实现。进程是系统资源分配和调度的基本单位,相比静态的程序,进程是程序的动态执行实例。文章详细解析了Linux内核中表示进程的核心数据结构task_struct,包括进程标识符、运行状态、优先级、内存管理信息以及父子进程关系等关键字段。同时提供了使用exec执行外部程序的代码示例,以及如何访问和打印当前进程信息的实现方法。这些内容涵盖了从进程基本概念到内核实现层面的关键知识要点。

2025-09-04 18:38:00 264

原创 wait 与 waitpid

本文深入解析Linux进程管理中wait与waitpid系统调用的核心差异与应用场景。wait是基础阻塞式调用,用于回收任意子进程;而waitpid提供更精细的控制,支持指定进程、非阻塞模式和状态跟踪。从底层机制看,二者通过内核交互实现僵尸进程回收,避免资源泄漏。关键差异在于:waitpid支持进程定向回收(通过pid参数)、非阻塞操作(WNOHANG选项)和状态跟踪能力(WUNTRACED/WCONTINUED)。典型应用场景包括:简单回收所有子进程(wait循环)、精准等待特定进程(waitpid指定P

2025-09-03 15:38:29 1069

原创 make 函数概述与内部配置详解

函数在切片、映射、通道三种核心引用类型的参数化配置,可以精细控制内存分配策略、并发同步行为以及运行时性能表现。:基于同一底层数组,可通过切分创建多个互不影响数据地址的切片视图。,减少再散列(rehash)次数和链长度,保证查找与插入性能。,但内部 1<<B 个桶已就绪,可高效插入前 16 对映射。标记结束,接收方可读出剩余缓存并返回零值,不再阻塞。,底层按照倍增策略重新分配更大数组,复制旧数据。,并据此分配内部桶(bucket)的数量,,并保证对象已被初始化,直接可用。切片:分配底层数组,并返回对应的。

2025-09-01 13:57:11 985

原创 execl函数

execle是类UNIX系统中的进程控制函数,用于替换当前进程映像为新程序。其函数原型为int execle(const char *path, const char *arg0, ..., char * const envp[]),通过参数列表传递命令行参数(NULL结尾)和环境变量数组(NULL结尾)。调用成功时不返回,失败返回-1并设置errno。与其他exec函数相比,execle支持自定义环境变量但不搜索PATH。典型应用包括子进程加载新程序和服务端启动外部工具。关键特性:进程替换、参数列表传递、

2025-09-01 13:42:55 290

原创 GDB 调试全方位指南:从入门到精通

GDB 调试全方位指南

2025-08-08 21:34:57 889

原创 GPT-5简报:更聪明的ai

OpenAI最新发布的GPT-5,简单说就是更聪明、更靠谱的人工智能。它不像以前的模型只有单一功能,而是像个"智能团队"——有快速回答日常问题的"快手",有能解决复杂难题的"军师",还有个"调度员"会根据问题难度自动选合适的"队员"上。专门的"红队"测试过,65%的情况下,GPT-5比上一代更能抵御恶意请求。测试显示,免费用户遇到的"拍马屁"回复少了69%,付费用户更是少了75%。总的来说,GPT-5就像个更懂事的"超级大脑"——既能干更多活,又懂得守规矩,离我们期待的"靠谱助手"更近了一步。

2025-08-08 02:12:17 356

原创 Linux 中 Git 操作大全

掌握以上命令可覆盖 95% 的日常 Git 使用场景!远程仓库 (Remote Repository)工作区 (Working Directory)本地仓库 (Local Repository)暂存区 (Staging Area)认证代替账号密码(更安全)。手动编辑冲突文件(搜索。

2025-08-06 17:04:27 552

原创 深度剖析:一个高性能 C 语言命令行进度条的设计与实现

/ 进度条核心配置(宏定义实现参数化)#define TOP 100 // 总进度值(100%)#define NUM TOP + 2 // 缓冲区长度(预留2位避免越界)#define STYLE '=' // 填充字符#define RIGHT '>' // 头部指示符// 函数声明:参数speed控制刷新速度(数值越大越快)设计亮点使用防止头文件重复包含(比传统的#ifndef更简洁)宏定义实现 "一处修改,全局生效",例如修改STYLE可直接替换进度条样式的计算方式:为TOP。

2025-08-05 21:10:11 964

原创 深入剖析 Linux 项目自动化构建工具:make/Makefile 的底层逻辑与内存操作

make/Makefile 的强大之处,在于其用简洁的规则描述,封装了复杂的底层交互。从 inode 元数据的内存缓存,到命令执行的进程地址空间管理,每一个环节都体现着操作系统内存与文件系统的协同设计。当我们执行 make 命令时,本质上是在驱动一系列精心编排的内存操作:解析规则结构、比较时间戳、创建进程、处理文件数据。理解这些底层逻辑,不仅能让我们更好地使用构建工具,更能深入体会 Linux 系统 "一切皆文件" 与 "内存为中心" 的设计哲学。

2025-08-03 15:15:06 843

原创 可执行程序的二进制密码:格式如何赋予机器指令生命?

可执行程序的二进制格式是操作系统与程序之间的关键契约,它通过结构化设计将无序二进制数据转化为可解析的有序内容。典型格式(如Windows的PE、Linux的ELF)包含文件头(标识与元信息)、程序头(内存布局)和节头(辅助功能)三层结构,确保程序能被正确加载、执行并保障内存安全与权限控制。这种标准化设计解决了程序识别、资源分配和工程扩展等核心问题,不同操作系统(Windows/Linux/macOS)的格式差异反映了各自生态的设计哲学。二进制格式本质上是一套精密的"数据组织语言",其原理

2025-08-01 17:41:39 589 1

空空如也

空空如也

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

TA关注的人

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