自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 上下文简析

Linux内核的上下文,本质是执行实体(进程/线程/中断)的运行环境,按场景分为以下几类,且严格区分上下文边界(比如中断上下文不能睡眠)。进程上下文(用户态+内核态)定义:进程执行时的完整环境,包含内存空间(mm_struct)、进程控制块(task_struct)、CPU寄存器(pt_regs)、栈(内核栈/用户栈)、文件描述符表、信号掩码等。触发:进程调度切换时,内核保存当前进程的硬件上下文(寄存器+栈)到task_struct,加载目标进程的上下文,实现无缝切换;

2026-01-14 18:57:03 493

原创 「CIC→DMA→FIFO」的完整数据流程

CIC是硬件级的通信接口控制模块封装底层通信协议(如SPI/I2C/UART/以太网/自定义工业总线);管理“上行/下行”数据的收发逻辑(上行:从外设→主机,下行:主机→外设);对接芯片内部的DMA控制器或CPU总线,负责数据的“桥接转发”;典型场景:工业控制中传感器数据采集、ATE设备的工位数据上报、车载ECU的CAN数据转发等。CIC负责“按协议造数”,DMA负责“高效搬数”,FIFO负责“缓冲存数”;

2025-12-25 16:41:17 1077

原创 多级缓存架构

该系统是4核+三级缓存(L1独享、L2独享、L3局部共享的多核架构,Cache同步的核心问题是“多核心缓存同一份数据时的不一致”,需通过MESI等缓存一致性协议,结合总线广播机制实现缓存数据的同步,保证各核心访问数据的正确性。

2025-12-25 11:35:41 997

原创 嵌入式时间测量方法总结

测量场景推荐方法核心优势函数/中断的微秒级耗时CPU周期计数器精度最高任务/周期函数的中等时长片上定时器通用无额外硬件多信号时序对齐/调试GPIO+示波器直观可视化多任务系统的CPU占比RTOS运行时间统计/Trace系统级瓶颈定位。

2025-12-24 14:59:26 261

原创 nanoMODBUS 库

nanoMODBUS 是一款轻量级、跨平台的 MODBUS 协议实现库,专为嵌入式系统(如单片机、FPGA 嵌入式硬核、物联网设备)设计,核心特点是体积小、资源占用低、易移植、功能精简且够用,完美适配内存/Flash 受限的嵌入式场景。nanoMODBUS 是嵌入式 MODBUS 开发的“轻量首选”,无需复杂配置,仅需适配底层硬件即可快速实现主机/从机通信。上述示例覆盖了最常用的 RTU 模式读写寄存器场景,TCP 模式仅需替换传输层接口,适配成本极低。

2025-12-22 16:31:54 1073

原创 NanoPB库:轻量级Protobuf实现

NanoPB是Google Protocol Buffers(Protobuf)的轻量级嵌入式实现,专为资源受限的MCU/嵌入式系统设计。Protobuf是一种跨平台、跨语言的序列化协议,通过定义结构化数据格式,实现不同设备/系统间的高效数据传输与解析;而NanoPB在保留Protobuf核心优势的前提下,极致优化了内存占用和代码体积,成为嵌入式领域(如STM32、ESP32、Arduino等)Protobuf落地的首选方案。创建// 版本声明(兼容Protobuf 3)// 传感器数据结构。

2025-12-22 14:39:02 1082

原创 装修经验整理

装修案例

2025-12-22 14:34:39 175

原创 ADC驱动设计与实现

ADC驱动是嵌入式系统感知物理世界的核心模块,其设计的核心是“解耦”与“可靠”:通过面向对象的封装实现硬件与应用的解耦,通过DMA环形采样+数据有效性校验保证采样的可靠性。在工程实践中,需根据场景选择合适的ADC类型(片上/外置),平衡精度、速度、功耗需求;软件层面遵循“资源封装→硬件初始化→数据安全获取”的流程,同时兼顾精度优化与性能优化,最终实现“易用、稳定、可扩展”的ADC驱动。

2025-12-22 11:59:42 678

原创 存储器介绍(2)

概念存储介质/硬件形态读写特性速度/延迟(FPGA场景)掉电易失性核心用途是否可编程(FPGA)片内RAMFPGA内部逻辑资源构成(SRAM)随机读写,无擦写次数限制最快(ns级,<10ns),延迟极低易失临时缓存、寄存器堆、小数据缓冲区、FIFO底层可配置(大小/位宽)ROMFPGA内部固化/配置的只读存储(或片外ROM)只读(部分FPGA可配置为一次编程)速度接近片内RAM(ns级)非易失存储固定参数、固件、查表(如LUT)部分可烧写(如FPGA的配置ROM)FIFO。

2025-12-22 11:51:05 515

原创 站点回复管理系统

以下实现了一个基于派生的类,结合内存分配(alloc())、对象管理、生命周期控制、序列化/反序列化、异常处理等功能,覆盖实际开发中常见的场景。

2025-12-22 11:46:09 343

原创 嵌入式系统(基于FreeRTOS)串口命令行调试工具

【代码】嵌入式系统(基于FreeRTOS)串口命令行调试工具。

2025-12-16 19:55:00 560

原创 windows用户态到内核态

ioapist.hioapist.h 并非 Windows 系统原生公开的头文件(不属于 MSDN/Windows SDK 标准头文件),而是行业 / 厂商自定义的接口头文件,核心用于封装设备 I/O 操作的 API 集合(尤其是通过DeviceIoControl实现的设备控制、数据交互逻辑),常见于硬件驱动开发、工业控制、嵌入式 Windows 设备通信等场景。该文件是驱动和用户态的“协议约定”,需保证两端结构体、IOCTL完全一致。#endif。

2025-12-16 19:37:39 655

原创 std::thread与pthread关系

对比维度pthread核心优势跨平台、OOP 封装、RAII 资源管理、易用功能全面、底层可控、支持高级线程特性核心劣势高级特性缺失、依赖 C++ 标准库跨平台差、C 风格繁琐、手动管理资源底层关系Linux 下基于 pthread 实现原生系统 API是 C++ 对线程的“易用封装”,pthread是类 Unix 系统的“原生线程接口”—— 优先用保证跨平台和易用性,需要高级线程特性时再结合pthread原生 API。

2025-12-12 10:11:32 962

原创 进程间通信

以「两个进程(各含两个线程)+ 共享内存(进程间通信)+ 条件变量(线程间通信)+ 互斥锁(线程同步)」为核心特性,设计一个示例。

2025-12-10 14:25:39 588

原创 投资三要素及实操checklist

投资盈利的关键,不是“赌对一次点位”,而是建立“点位选时机、仓位控力度、风控守底线”的系统化体系。点位决定“赚多赚少”,仓位决定“抗风险能力”,风险管理决定“能走多远”——三者协同,才能在市场的不确定性中,实现长期、稳定的盈利。

2025-11-12 11:50:41 637

原创 我有什么?我要什么?我愿意放弃什么?

作为一个人,他最大的优势就体现在他能回答三个问题:我有什么?我要什么?我愿意放弃什么?人一生都在回答这几个问题,当有人问你这几个问题,不要去思考这几个问题的答案,从你的经历去给他讲故事。

2025-11-11 19:51:23 84

原创 动态链接核心组件(GOT/PLT)

共同目标:解决“程序调用外部动态库符号(如libc.so的printf)”的地址绑定问题,避免编译时固化地址,适配动态库的动态加载特性。分工原则:代码段(.text)只读、数据段(.got/.got.plt)可写,兼顾安全性与灵活性。动态链接的核心是“延迟绑定+地址缓存”,通过GOT与PLT的分工协作,兼顾安全性(代码段只读)与高效性(一次解析);_dl_runtime_resolve是“运行时解析的核心执行者”,runtime体现其“按需触发”的特性;

2025-11-11 19:39:25 1072

原创 散户专属交易系统

盈利/亏损情况:本月账户收益率、每只标的盈亏比例;触发情况:哪些标的触发止盈/止损,是否严格执行;错误操作:是否有追高、满仓、未止损等违规行为,原因是什么;标的优化:标的池里是否有标的不再满足选择标准(如估值过高、业绩下滑),替换成新标的。标的聚焦“指数+高景气”,避免被权重股拉动指数但个股下跌的陷阱;估值+趋势入场,避开高位站岗,解决“入场时机不当”;分批买+仓位限制,拒绝满仓,应对市场波动;固定止损止盈+低频率交易,避免情绪操作和手续费侵蚀;

2025-11-07 17:58:07 837

原创 文件传输协议

从早期的极简传输到如今的通用化、实时化,每一步都对应着场景的升级。以下是梳理 TFTP、FTP、HTTP/HTTPS、MQTT 四种协议的核心特性与使用场景。

2025-10-30 17:37:49 1063

原创 抓住主要矛盾

矛盾存在于一切事物的发展中,贯穿一切事物的始终。那我们自己,是不是某种事物?所以,我们每个人,都必然要面对自身不同阶段下的矛盾。抓住其中的主要矛盾,暂时回避那些次要矛盾,才是我们该做的。所谓抓住主要矛盾,就是说,弄清楚自己要什么,或者说得更具体些,是当下这个阶段,你要什么。

2025-10-20 10:44:05 380

原创 8个指标精选好公司

何天峰是上海聆泽投资管理有限公司创始人兼投资总监,毕业于复旦大学国际金融系,他用于排雷和精选好公司的8个财务指标如下:

2025-10-20 10:31:04 204

原创 设计模式总结

设计模式可分为创建型、结构型和行为型三大类。创建型模式(如工厂、单例)专注于对象创建机制的优化;结构型模式(如适配器、代理)通过组合类或对象解决兼容与扩展问题;行为型模式(如观察者、策略)则关注对象间的交互与责任分配。各类模式在解耦、复用和扩展性方面各具优势,但也存在复杂度增加或适用性限制等缺点,需根据具体场景(如系统架构、接口兼容、算法切换等需求)合理选用。

2025-08-29 10:33:37 1225

原创 访问者模式及优化

访问者模式是一种行为型设计模式,通过分离数据结构和操作逻辑,实现在不修改元素类的情况下扩展新功能。核心角色包括抽象访问者、具体访问者、抽象元素和具体元素。该模式适用于需要对复杂对象结构执行多种操作、频繁添加新操作或集中管理相关操作的场景。以电商订单系统为例,通过定义不同访问者(如价格计算、发票生成等)来处理各类商品(实体、数字、服务),实现了操作逻辑与数据结构的解耦,提高了系统的扩展性和可维护性。

2025-08-28 09:39:52 1027

原创 解释器模式及优化

解释器模式是一种行为型设计模式,用于定义语言的语法规则并构建解释器。其核心是将语法解析为抽象语法树,通过组合表达式类(终结符/非终结符)执行解释操作。

2025-08-27 14:10:05 759

原创 安全向量模板类SiVector

这篇文章介绍了一个自定义模板类SiVector,它模仿了标准库中std::vector的功能,并增加了越界访问返回默认值的特性。关键点包括: 提供了多种构造函数,支持从数值、迭代器、初始化列表等构造 重载了[]运算符,越界访问时会自动扩容并返回默认值 实现了与std::vector类似的迭代器、容量操作和修改操作 包含了类型转换操作符,可隐式转换为std::vector 支持设置默认值,当访问越界时返回该默认值 这个类在保持vector基本功能的同时,提供了更安全的越界访问处理机制。

2025-08-27 10:11:23 1127

原创 享元模式及优化

享元模式是一种结构型设计模式,通过共享相似对象减少内存占用和创建开销。其核心是将对象状态分为可共享的内部状态(如粒子纹理、颜色)和不可共享的外部状态(如位置、速度)。该模式包含四个角色:抽象享元定义接口、具体享元实现共享状态、享元工厂管理对象复用、客户端维护外部状态。主要优势包括降低内存消耗、提升性能、集中管理共享对象,适用于文本字符、游戏粒子等大量相似对象的场景。实现时需注意线程安全和状态划分的复杂性。示例以游戏粒子系统展示,通过区分粒子类型(内部状态)和位置属性(外部状态)实现高效渲染。

2025-08-26 11:45:38 336

原创 中介者模式及优化

中介者模式是一种行为型设计模式,通过引入中介者对象来封装多个同事对象之间的复杂交互,从而降低耦合度。该模式将多对多的对象关系转化为一对多的关系,使对象只需与中介者通信,无需直接相互引用。核心角色包括抽象中介者、具体中介者、抽象同事和具体同事。其优点包括降低耦合度、集中控制交互逻辑、简化对象协议、提高可扩展性和符合迪米特法则。适用于对象间交互复杂、需要集中管理交互逻辑或减少耦合度的场景,如聊天室系统、GUI控件联动等。通过聊天室示例展示了具体实现方式,用户通过聊天室中介者进行消息传递,避免直接相互依赖。

2025-08-25 14:31:41 823

原创 职责链模式及优化

职责链模式(Chain of Responsibility Pattern)是一种解耦请求发送者与接收者的行为型设计模式,通过形成处理者链条动态传递请求。核心包含抽象处理者(定义接口和传递逻辑)、具体处理者(实现特定请求处理)和请求对象三部分。该模式优点包括降低耦合、灵活调整处理流程、增强扩展性,适用于多级审批(如订单折扣)、动态事件处理等场景。示例通过电商订单折扣审批系统(销售代表→销售经理)展示实现方式,处理者按权限层级依次判断是否处理或传递请求。

2025-08-22 11:40:01 454

原创 命令模式及优化

命令模式是一种行为型设计模式,将请求封装为对象,解耦发送者与接收者。核心角色包括命令接口、具体命令、接收者和调用者。该模式支持撤销/重做、命令组合(宏命令)、队列执行和日志记录,适用于GUI操作、文本编辑器等场景。示例展示了文档编辑器的实现,通过InsertCommand、DeleteCommand等具体命令类完成文本编辑功能,并支持撤销操作。

2025-08-21 11:44:50 658

原创 BootLoader设计

本文介绍了嵌入式系统中常用的传输协议,包括Y-Modem、X-Modem、Z-Modem、UDS等,重点分析了Y-Modem协议的帧结构、校验机制和通信流程。针对BootLoader设计,提出基于环形队列的数据接收方案,详细说明了STM32的分区规划(16KB BootLoader区、48KB应用程序区、32KB升级缓冲区)和关键功能实现。代码部分展示了环形队列操作、USART配置、Flash擦写控制等核心模块,通过Y-Modem协议实现固件升级的完整流程,包括CRC校验、超时处理和异常恢复机制。

2025-08-21 09:49:57 1139

原创 定时方式浅析

五种定时方式对比:硬件定时器(ns~μs级,高精度低占用)适合PWM等实时控制;软件定时器(ms级,灵活但精度差)适用于UI刷新;RTOS定时任务(μs~ms级)平衡实时性与资源占用,适合周期性任务;低功耗定时(ms~s级)专为电池设备设计,支持休眠;看门狗定时侧重系统监控,超时复位。选择需综合精度、功耗、实时性及硬件资源,如高频用硬件定时,物联网设备选低功耗定时。

2025-08-20 18:20:26 1019

原创 桥接模式及优化

桥接模式是一种结构型设计模式,通过将抽象部分与实现部分分离,使它们能够独立变化,从而提高系统的灵活性和可扩展性。该模式包含四个核心角色:抽象化、扩展抽象化、实现化和具体实现化。主要优点包括解耦抽象与实现、提高扩展性、减少子类数量等。桥接模式适用于需要处理多个独立变化维度的场景,如图形绘制中的形状与渲染方式。

2025-08-20 16:44:11 984

原创 单例模式及优化

单例模式是一种确保类只有一个实例并提供全局访问点的设计模式,适用于日志管理、配置读取等需要集中控制的场景。其核心实现方式分为饿汉式(启动时创建)和懒汉式(首次使用时创建),需权衡资源占用与线程安全。现代C++实现通常采用局部静态变量(C++11后线程安全)或双重检查锁定来保证多线程环境下的唯一性。单例模式的优点包括资源复用、全局访问和一致性控制,但需注意避免过度使用导致代码耦合。典型应用包括日志系统、数据库连接池和硬件设备管理等需要唯一访问点的场景。

2025-08-18 15:52:32 748

原创 Socket通讯

Socket(套接字)是网络编程的抽象接口,用于实现不同设备(或进程)之间的网络通信。它本质上是一个“通信端点”,通过操作系统提供的 API 屏蔽了底层网络协议的复杂细节,让开发者可以通过简单的函数调用实现数据传输。

2025-08-16 14:56:42 1884

原创 迭代器模式及优化

迭代器模式是一种行为设计模式,提供统一遍历聚合对象元素的方法,无需暴露内部实现。它通过分离遍历逻辑与聚合结构,支持多种遍历方式。核心角色包括迭代器接口(定义hasNext()、next()等方法)、具体迭代器实现、聚合接口(创建迭代器)和具体聚合类。该模式优势在于封装性好、职责单一、扩展性强,适用于需要隐藏内部结构或支持多种遍历方式的场景。示例展示了C++实现,通过书架迭代器演示了普通和环形两种遍历方式,客户端代码可统一处理不同聚合对象。模式使遍历操作独立于数据结构变化,符合开闭原则。

2025-08-16 14:10:33 772

原创 网络编程概述

本文系统梳理了网络编程的核心知识点及其在嵌入式领域的应用。主要内容包括: 网络协议栈分层模型(OSI/TCP/IP)和关键协议原理(TCP/UDP/IP) 应用层协议(HTTP/MQTT等)及网络编程模型(I/O多路复用、异步I/O) 嵌入式网络编程的特殊性:资源受限、多通信方式、实时性要求 嵌入式常用技术:轻量级协议栈(lwIP)、物联网协议(MQTT/CoAP)。

2025-08-15 14:10:09 1117

原创 组合模式及优化

组合模式是一种结构型设计模式,通过树形结构表示"部分-整体"的层次关系,使客户端能统一处理单个对象和组合对象。该模式包含三个核心角色:抽象组件(定义公共接口)、叶子节点(表示单个对象)和复合节点(管理子节点)。其优势在于操作一致性、扩展性强、简化客户端逻辑和清晰的层次表示。

2025-08-15 11:12:50 703

原创 多线程安全和性能测试

本文摘要: 实现了一个多线程安全的动态数组框架,提供三种线程安全策略:互斥锁(MUTEX)、原子索引+预分配(ATOM)和线程本地存储(THREAD)。通过条件编译切换不同实现方案,包含功能验证(SINGAL)和性能测试(TIME)两种模式。

2025-08-14 22:15:14 686

原创 备忘录模式及优化

备忘录模式(Memento Pattern)是一种行为型设计模式,用于在不暴露对象内部结构的前提下,捕获并保存对象的内部状态,以便后续需要时恢复到该状态。

2025-08-14 22:13:18 1016

原创 “元信息驱动”逻辑处理所有类型

摘要:本文通过元信息驱动实现通用序列化的方法,相比为每个结构体单独编写序列化函数,该方法利用成员指针和元信息描述结构体特征,通过一套通用逻辑处理所有类型。优化后的方案将重复代码从N套减少到1套,新增类型只需添加元信息而无须修改核心逻辑,显著提升了代码复用性和可维护性。核心技术包括:元信息描述结构体成员、通用模板函数动态访问成员、循环批量处理所有注册类型,实现了数据描述结构,通用逻辑处理的编程范式。

2025-08-11 16:56:57 345

空空如也

空空如也

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

TA关注的人

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