自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

嵌入式大杂烩

专注于嵌入式技术!

  • 博客(443)
  • 资源 (1)
  • 收藏
  • 关注

原创 简易嵌入式优先级消息队列设计思路!

消息队列是解决任务间通信的有效方案,主要功能包括任务解耦、异步通信、流量削峰、优先级调度和数据完整性保障。常见的消息队列类型有FIFO队列(适用于日志记录等普通数据流)和优先级队列(适用于告警系统等需要优先处理的场景)。消息队列通过缓冲机制提高系统可靠性和性能,是分布式系统中重要的基础组件。

2025-12-09 09:18:26 82

原创 热门嵌入式web服务器对比!

嵌入式Web服务器是将标准Web服务器移植到嵌入式系统中的技术方案,基于HTTP协议实现通信,具有标准接口。这种方案为无显示屏的嵌入式设备提供了便捷的交互方式,可通过网页进行功能调试和展示。在实际工作中,嵌入式Web服务器为开发调试带来了便利,成为嵌入式系统交互的有效解决方案。

2025-12-09 09:09:25 226

原创 一个嵌入式系统的进程通信利器!

嵌入式Linux系统中的进程间通信方案包括:1)共享内存实现高效数据共享;2)消息队列提供异步通信机制;3)信号用于简单事件通知;4)管道实现单向数据流;5)套接字支持跨网络通信。这些方法各具特点,开发者需根据实时性、数据量等需求选择合适方案,确保系统高效稳定运行。

2025-11-25 17:30:00 472

原创 嵌入式设备通信序列化的正确打开方式!

保持 Protocol Buffers 强大功能的同时,将代码体积压缩到 3KB 以内,并且只需要不到 300 字节的栈空间。看起来不大,但考虑到:每秒上报 10 次数据、每次传输都要消耗宝贵的电量,累计下来,通信负担会很大。对于大部分传感器数据(温度、湿度、计数器),数值都很小,varint 能节省 50% 以上的空间。也不想使用太重的JSON,一个简单的传感器数据包,JSON 可能就要占用几百字节;,在保持 protobuf 强大功能的同时,将资源占用压缩到适合嵌入式系统的级别。

2025-11-25 08:30:00 438

原创 一个可应用于嵌入式C的轻量级单元测试框架!

Unity是一个专为C语言设计的轻量级单元测试框架,其核心目标是提供简单易用的测试功能。该项目采用简洁的设计理念,包含最小化的代码库,便于开发者快速上手。Unity支持跨平台运行,适用于嵌入式系统开发测试,帮助开发者提高代码质量和可靠性。

2025-11-24 08:29:52 620

原创 嵌入式中代码执行时间测量的几种方法!

嵌入式开发中常遇到代码优化效果难以评估和控制算法执行时间不确定的问题。本文针对两个典型场景展开讨论:一是如何量化代码优化后的性能提升,二是如何准确测量控制算法的单次执行时间,以判断其能否满足1kHz或4kHz等高频率控制周期的要求。文章将提供实用的解决方案,帮助开发者有效评估优化效果和算法实时性。

2025-11-24 08:28:00 611

原创 嵌入式中pthread条件变量怎么用?

嵌入式Linux开发中,线程同步是关键问题,常见痛点包括轮询导致CPU占用高、sleep导致响应延迟或资源浪费、以及多线程竞态条件。pthread条件变量是解决线程"等待-通知"场景的最佳方案,能让线程在条件不满足时休眠,条件满足时精确唤醒,既保证响应速度,又能最大化降低CPU资源占用。

2025-11-17 08:30:00 855

原创 一个面向嵌入式Linux C++的应用开发框架

AppKit是一个面向嵌入式Linux开发的C++14框架,旨在提升开发效率和应用健壮性。该框架提供了一套完整工具集,涵盖线程管理、定时器、文件IO、串口通信、网络通信、CAN总线、GPIO控制等嵌入式开发常见需求。通过预置的优化组件和标准化接口,AppKit帮助开发者快速构建稳定可靠的嵌入式应用系统,特别适合工业控制、物联网等领域的项目开发。

2025-11-14 11:36:41 892

原创 嵌入式轻量级命令行shell库!

摘要: LwSHELL是一款轻量级嵌入式命令行shell库,采用MIT协议开源。核心特点包括零动态内存分配、流式字符处理、支持引号参数和转义字符,特别适合资源受限的嵌入式系统。库仅包含2个核心文件(约360行代码),通过编译时宏配置所有功能。采用双命令表设计(静态/动态命令),argv原地解析优化内存使用。工作流程包含字符接收、解析、命令匹配和执行四个阶段,以高效处理用户输入命令。

2025-11-14 11:35:41 521

原创 一个面向STM32F4系列微控制器的开源驱动库!

STM32F4 Discovery库是Tilen Majerle开发的开源驱动库,专为STM32F4系列微控制器设计。该库包含60多个外设驱动、传感器接口和通信协议实现,并配有示例工程,帮助开发者快速构建应用。项目采用模块化设计,提供完善的文档和代码注释,适用于各类嵌入式开发需求。

2025-11-02 12:00:00 886

原创 嵌入式系统中的极简二维码生成方案!

摘要:QRCode是一个专为嵌入式系统设计的轻量级二维码生成库,解决了传统QR码库在资源受限MCU上的应用难题。该库无需复杂图形库支持,减少了动态内存占用,适用于设备配网、产品溯源等场景。其特性包括高效的内存管理和精简的实现架构,使开发者能在低功耗设备上便捷地集成二维码功能。

2025-11-02 10:30:00 833

原创 嵌入式系统内存使用的几个关键点

本文分享了嵌入式系统内存管理的几个关键要点。嵌入式系统的内存管理直接影响系统稳定性、实时性和功耗表现。文章首先展示了一个典型的嵌入式内存映射图,为后续内存使用优化提供参考基础。这些实战经验总结将帮助开发者更好地规划和使用嵌入式系统的内存资源,提高系统性能和可靠性。

2025-11-01 12:30:00 31

原创 一个被严重低估的嵌入式系统微内核!

文章摘要: 本文主要介绍LK的基本情况。第一部分简要概述LK的总体简介,第二部分详细说明LK的具体内容。通过分章节展示的方式,全面系统地呈现LK的相关信息。文章采用清晰的层级结构,使读者能够快速掌握LK的核心要点。整体内容简洁明了,便于读者理解和获取所需信息。摘要控制在150字以内,符合要求。

2025-11-01 11:30:00 580

原创 谈谈嵌入式数据的可移植性!

数据可移植性是指数据在不同硬件架构、操作系统和编译器环境下保持正确性和一致性的能力。在嵌入式系统中,数据可移植性至关重要,能确保数据跨平台迁移时不会失真或出错。该特性支持系统间的数据共享和交换,提升开发效率和应用灵活性。通过标准化数据格式和协议,可有效实现数据可移植性,减少平台依赖问题。

2025-10-31 09:11:49 124

原创 嵌入式C与C++混合编程需要注意的点?

混合编程中C与C++的互调常遇三大问题:调用类成员函数链接失败、回调函数类型转换警告、结构体内存布局不一致。根本原因是两语言的符号命名规则差异。使用extern "C"可有效解决这些互操作性问题,充当两种语言间的桥梁。

2025-10-31 09:04:22 886

原创 嵌入式工程师必学:GCC 扩展语法

嵌入式开发中GCC扩展的重要性在于弥补标准C语言在硬件操作和性能优化方面的不足。GCC扩展提供了三大关键优势:精确的硬件控制能力、高效的性能优化手段和可靠的代码质量保证。典型应用场景包括初始化函数内存定位、硬件寄存器操作时的结构体填充问题以及安全宏定义等。通过GCC的属性声明等功能,开发者能够更好地优化中断处理等关键代码,解决标准C在嵌入式开发中的局限性问题。

2025-10-10 12:00:00 359

原创 嵌入式内存踩踏监测工具!

嵌入式开发中难以察觉的内存踩踏问题常导致系统崩溃。mprotect工具能有效定位这类问题,通过监控内存访问,帮助开发者快速发现并修复内存错误,提升系统稳定性。相比传统调试方法,mprotect提供更精准的故障定位能力,是嵌入式开发调试的有力工具。

2025-10-10 08:30:00 771

原创 深圳有哪些科技方阵?

深圳作为全球消费电子创新中心,汇聚了安克创新、韶音科技、影石Insta360等一批领军企业,其产品通过嵌入式技术实现智能快充、骨传导降噪、AI防抖等创新功能。机器人领域的大疆、优必选等企业攻克了运动控制、精密驱动等核心技术,无人机飞控系统精度达厘米级。汽车电子方面,比亚迪半导体、德赛西威等企业从芯片到智能座舱全面布局,推动车规芯片、AR-HUD等技术创新。这些企业通过嵌入式技术持续引领消费电子、机器人和汽车电子三大领域的全球发展。

2025-10-09 12:00:00 1536

原创 一个专为小内存MCU设计的超轻量FIFO环形缓冲区库!

嵌入式开发中数据缓冲是常见需求,涉及串口通信、传感器数据采集和实时信号处理等场景。文章介绍了高效可靠的数据暂存机制,通过项目概览和图示说明缓冲区的设计思路。该方案可有效解决嵌入式系统中的数据暂存问题,为开发者提供实用参考。

2025-10-09 08:30:00 860

原创 一款基于FreeRTOS设计的手机操作系统!

MuditaOS是一款专为极简手机Mudita Pure设计的嵌入式操作系统,基于FreeRTOS构建,针对E Ink显示屏进行了深度优化。在智能手机功能日益复杂的背景下,这款系统以其专注简洁的设计理念脱颖而出。MuditaOS通过精简功能、优化显示效果,为用户提供了更专注、更高效的数字生活体验。

2025-10-08 19:10:21 376

原创 TinyUSB:嵌入式USB开发的精巧之道

嵌入式USB开发面临协议复杂、资源占用大的挑战。传统USB协议栈存在体积庞大、配置繁琐、移植困难三大痛点,影响开发效率和设备性能。开发者需要应对这些技术难题才能充分发挥USB接口高速通用的优势。

2025-10-08 12:00:00 753

原创 一份经典的嵌入式面试题!

本文介绍了变量作用域的概念及其在嵌入式系统中的重要性。变量作用域决定了变量的可见范围和使用周期,直接影响内存使用效率和系统稳定性。文章通过代码示例展示了全局变量(整个程序生命周期可见)和局部变量(函数栈帧内可见)的区别,强调了正确理解作用域对嵌入式开发的关键作用。

2025-10-08 09:00:00 1760

原创 嵌入式模块设计的工程实践

嵌入式系统的模块化质量直接影响其可维护性和扩展性。研究表明,模块内聚度与系统稳定性呈正相关,而模块间的耦合度则与维护成本成正比。高质量的模块化设计应注重提高模块内聚度,降低模块间耦合,从而提升系统整体性能并降低维护难度。

2025-10-07 11:46:29 578

原创 嵌入式系统内存泄漏检测利器:MTrace

程序运行72小时后突然死机,很可能是内存泄漏问题。嵌入式系统内存泄漏如同桶底小孔,难以察觉却危害巨大。MTrace是glibc自带的内存跟踪工具,轻量高效,能精准定位泄漏点。相比其他检测工具,MTrace无需额外安装,直接集成在C库中,特别适合嵌入式环境使用,帮助开发者快速发现并修复"桶底小孔"般的内存泄漏问题。

2025-10-07 11:42:23 354

原创 嵌入式 C++ 面向对象编程入门

面向对象与面向过程编程的比较可以通过盖房子来理解。面向过程关注具体施工步骤(如何盖),而面向对象则关注房屋组件(门、窗等对象)及其交互。前者侧重流程控制,后者强调对象封装与协作,体现了两种不同的程序设计思想。

2025-09-25 12:30:00 876

原创 2000行代码打造的嵌入式Modbus协议栈!

摘要:Modbus协议在工业自动化和物联网领域广泛应用,但传统协议栈代码量庞大,不适合资源受限的微控制器。GitHub上的nanoMODBUS项目提供了一个轻量级解决方案,通过精简代码实现高效通信,为嵌入式系统开发提供了更优选择。该项目针对8位/16位MCU优化,在保持功能完整性的同时大幅降低资源占用。

2025-09-24 12:00:00 940

原创 嵌入式系统模块间几种通信方式对比

文章摘要: 本文介绍了全局变量的概念及其特性。全局变量是在程序运行期间始终存在的变量,其作用域贯穿整个程序,可以被所有函数和模块访问。这类变量通常存储在内存的全局数据区,具有静态存储期。过度使用全局变量可能导致命名冲突和代码维护困难,因此建议合理控制其使用范围。文章以绿色标题突出主题,采用简洁的技术写作风格,适合编程初学者理解变量作用域的基础知识。

2025-09-23 16:51:05 962

原创 适用于通用MCU和Linux系统的W25QXX全功能驱动

嵌入式系统中常需存储数据(如配置参数、日志),W25QXX系列Flash存储器因其串行接口(SPI/QSPI)占用引脚少、布线简单而广泛应用。该系列容量从1MB到256MB不等,适用于代码存储(支持XIP直接执行)、参数保存等场景。本文将通过分析开源驱动库,解析其实现原理与代码设计。

2025-09-16 21:44:42 945

原创 一个轻量级的按键管理库!

它通过事件驱动的方式,把复杂的按键处理逻辑封装得很好,让我们在使用时只需要关注业务逻辑,而不用纠结于底层的状态机处理。如果你的项目中需要处理按键输入,不妨试试lwbtn,相信它会让你的按键处理代码变得更加优雅和可靠。这种配置方式的好处是,你可以根据具体需求裁剪功能,比如只需要简单的按下/释放事件,就可以关闭点击检测功能,节省内存和CPU资源。lwbtn依赖准确的毫秒时间戳,如果你的系统时间源精度不够,可能会影响按键检测的准确性。今天我们来看看一个按键开源库——lwbtn,看看它是怎么优雅地处理按键管理的。

2025-09-11 10:20:53 817

原创 嵌入式编程模型 | 桥接模式

桥接模式是一种结构型设计模式,通过将抽象与实现分离,使两者可以独立变化。该模式在嵌入式系统中尤其适用于跨平台硬件抽象、多算法实现和设备驱动分层设计。文中以显示设备为例,展示了桥接模式如何通过组合方式(3个显示内容类+3个驱动类)替代继承方式(需要9个类)实现灵活扩展。案例包含UML类图和C语言实现代码,演示了如何构建显示设备抽象层与具体驱动实现的解耦结构,包括LCD、OLED等驱动的具体实现。这种模式显著减少了类数量,提高了系统可维护性和扩展性。

2025-08-31 21:47:13 166

原创 嵌入式编程模型 | 适配器模式

适配器模式是一种结构型设计模式,用于解决接口不兼容问题。它通过创建适配器类将现有接口转换为目标接口,实现不同类的协同工作。在嵌入式系统中,适配器模式特别适用于硬件驱动兼容、协议转换和遗留系统集成等场景。模式结构包含目标接口、适配者、适配器和客户端四个部分。文章通过UART和SPI传感器接口的统一化案例,展示了如何使用C语言实现适配器模式,包括接口定义、适配器创建和具体实现。这种设计使得上层应用可以统一调用不同协议的传感器,显著提高了代码的复用性和扩展性。

2025-08-30 15:00:33 90

原创 嵌入式编程模型 | 原型模式

本文介绍了原型模式在嵌入式传感器网络中的应用。原型模式通过复制现有对象创建新实例,避免了重复初始化开销,适用于设备配置克隆、状态复制等场景。文章以传感器网络为例,展示了原型模式的结构(抽象原型类、具体原型类、客户端)和实现方式,通过C语言代码演示了温度/湿度传感器的克隆过程。该模式能有效提升嵌入式系统资源复用效率,实现快速部署相似配置的传感器节点,同时保持内存优化和配置灵活性。

2025-08-29 15:55:09 81

原创 嵌入式编程模型 | 建造者模式

本文介绍了建造者模式在嵌入式系统中的应用。该模式通过分离复杂对象的构建与表示,实现不同配置的统一创建。核心结构包括产品类、抽象建造者、具体建造者和指挥者。在嵌入式领域尤其适用于设备初始化、硬件抽象和资源配置等场景。文中提供了嵌入式设备配置的框图说明,并展示了C语言实现代码,包括开发板和量产版两种具体建造者的实现。通过建造者模式,可以灵活构建不同配置的嵌入式设备实例,满足多样化的硬件和软件需求。

2025-08-29 10:52:29 62

原创 嵌入式编程模型 | 数据驱动编程

嵌入式开发的核心流程可概括为"获取数据-处理逻辑":从传感器或其他模块获取原始数据,通过算法处理后转化为可直接使用的数据,最终根据业务需求设计功能逻辑。在复杂场景下,该过程可能细分为数据采集、算法处理和业务实现三个阶段,但整体仍遵循这一基本思路。

2025-08-28 10:54:26 194

原创 一个适用于嵌入式领域的轻量级协议库!

LwPKT是一个轻量级开源通信协议库,仅用不到1000行代码就解决了嵌入式设备间可靠通信的难题。该项目针对嵌入式开发中常见的通信痛点,提供了简洁高效的解决方案,特别适合资源受限的嵌入式系统。其设计巧妙,代码精简,能有效处理复杂通信协议问题,是嵌入式开发者的实用工具。

2025-08-19 09:55:21 1332

原创 高效环形缓冲区LwRB解析

LwRB环形缓冲区:嵌入式开发的高效数据管理方案 摘要:LwRB(Lightweight Ring Buffer)是一个轻量级环形缓冲区管理库,专为解决嵌入式开发中的数据流管理问题而设计。它采用环形结构实现高效的数据读写,支持零动态内存分配、线程安全和DMA操作。核心原理基于C11原子操作实现指针管理,通过两阶段读写策略优化性能(线性部分+环绕部分)。相比传统缓冲区,LwRB能持续利用存储空间而无需数据搬移,特别适合串口通信、传感器采集等场景。其内存占用小(仅需5个成员变量)、性能高(使用memcpy优化)

2025-08-15 08:54:04 1029

原创 Git 交互式变基修改commit描述

本文介绍了Git中交互式变基(rebase)的使用方法以及如何设置提交校验钩子。通过交互式变基可以修改历史提交信息,具体步骤包括使用git rebase -i命令选择要修改的提交,将pick指令改为reword后重新编辑提交信息。同时,文章还展示了如何设置commit-msg钩子来强制规范提交格式,包括类型前缀、必填字段等校验规则,并提供了Python实现的校验脚本示例。这些技巧能帮助团队保持统一的Git提交规范,提高代码管理效率。

2025-08-11 08:06:32 486

原创 推荐一个嵌入式轻量级事件管理库!

lwevt是一个轻量级嵌入式事件管理库,采用C语言开发,专为资源受限的嵌入式系统设计。该库具有跨平台特性,支持自定义事件类型和数据,提供简洁高效的事件处理机制。核心优势包括:平台独立性、灵活的事件定义、易用性维护性以及MIT开源许可。通过简单的API接口,开发者可以快速构建事件驱动型应用。示例代码展示了如何定义事件处理函数并响应不同类型的事件。项目已在GitHub开源,适用于各类嵌入式操作系统和硬件平台。

2025-08-06 23:18:33 361

原创 bufferevent | 嵌入式网络通信缓冲层

本文深入介绍libevent库中的bufferevent机制,这是一套用于异步网络编程的高级抽象接口。文章首先概述了bufferevent的核心特性,包括自动缓冲区管理、事件驱动机制、超时控制等。然后通过一个TCP客户端实例展示了bufferevent的实际应用,详细解析了数据收发流程。最后深入剖析了bufferevent的源码实现,包括其核心数据结构、水位控制机制以及事件触发流程。文章配有丰富图示,帮助开发者理解这一高效网络编程工具的工作原理和使用方法。

2025-07-10 01:22:45 341

原创 嵌入式编程模型 | 策略模式

策略模式在嵌入式系统中的应用 策略模式是一种行为设计模式,它将算法封装为独立对象,使算法可相互替换。该模式包含三个核心组件:上下文(持有策略对象)、策略接口(定义公共接口)和具体策略(实现算法)。在嵌入式系统中,策略模式适用于通信协议切换、传感器数据处理、电源管理和控制算法等场景。 相比传统实现方式,策略模式具有算法扩展性强、消除条件分支、提高代码复用率、支持运行时动态切换策略等优势。文中以传感器数据处理为例,展示了通过策略接口统一温度/湿度传感器的不同处理逻辑,实现算法与使用场景的解耦。这种设计模式特别适

2025-07-09 13:49:26 84

嵌入式LCD模拟器及其使用方法

在没有硬件LCD时,可以借助LCD模拟器来编写软件UI界面。

2023-06-07

JSON天气数据包解析

本程序使用cJSON库对心知天气的JSON数据包进行解析,可以方便的移植到STM32等单片机平台上,再配合WIFI或者其他通信模块即可做成个简易的天气预报系统。

2018-02-06

空空如也

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

TA关注的人

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