
嵌入式大杂烩
文章平均质量分 86
嵌入式大杂烩
一位喜欢分享的嵌入式软件工程师
一位全网累计10万+粉丝的嵌入式博主
一位能源专业转做嵌入式的过来人
展开
-
嵌入式设备联网的 “捷径” ——DHCP 详解
DHCP 服务器收到传感器的 Request 包后,会发送一个 Ack 包给传感器,相当于回应:“好的,这个 IP 地址归你用了,配置信息确认无误。” 这个 Request 包同样是广播包,目的是通知网络中的其他 DHCP 服务器,自己已选定 IP 地址,其他服务器可收回它们提供的地址。工厂网络中的 DHCP 服务器收到传感器的 Discover 包后,会从预先设定的 IP 地址池中挑选一个尚未分配的 IP 地址,然后向传感器发送一个 Offer 包。简单来说,DHCP 就像网络世界里的 “贴心管家”。原创 2025-04-22 09:01:25 · 547 阅读 · 0 评论 -
嵌入式领域:Linux 与 RTOS 的多方面对比!
它实现的方式,是将核心功能模块化,划分成几个独立的进程,各自运行,这些进程被称为服务(service)。:秒级启动,启动过程涉及U-Boot引导、内核加载、文件系统挂载、服务启动等多个环节,启动速度相对较慢,一般需要几秒到几十秒的时间,不过对于一些非实时性要求高的设备,如智能电视等,启动速度的影响相对较小。:因内核复杂,需要持续运行多个后台进程和服务,对硬件资源的使用相对较多,运行功耗一般较高(通常>100mW),但通过一些节能技术和优化措施,如电源管理框架(如CPUFreq),也可在一定程度上降低功耗,原创 2025-04-16 09:47:01 · 575 阅读 · 0 评论 -
嵌入式性能指标竟藏着这些秘密,你了解几个?
在应用程序使用C或C++堆、多个自定义堆或RTOS提供的内存池对象,可以使用heap-monitoring跟踪这些对象的使用情况,分析它们的使用模式,评估堆上的负载、识别潜在的内存泄漏、跟踪内存峰值使用情况等的格式显示收集到的信息。Valgrind Massif能帮助我们减少内存的使用,在带有虚拟内存的现代系统中,它还能够加速我们程序的运行,减少程序停留在交换区中的几率。对于嵌入式开发,可以在交叉编译环境中使用。合理的资源利用率可以使系统在有限的硬件资源下稳定运行,并为未来的功能扩展预留一定的资源空间。原创 2025-04-13 14:07:43 · 810 阅读 · 0 评论 -
ESP32、ESP8266学习资料推荐!
实现了 ESP32-IDF 3.1 的 DNS 服务器功能,还能返回 HTML 页面,在网络配置和服务提供方面有着重要的应用。这两个仓库由 xuhongv 精心打造,仓库里涵盖了很多个demo,从基础的硬件驱动到复杂的网络应用,涵盖。无论你是刚入门的小白,还是想进阶实战的老司机,这两个仓库都能让你快速上手ESP32与ESP8266开发,实现了将相机拍摄的照片通过 HTTP 上传到云端的功能,在图像监控和数据存储方面有很大的价值。网络通信是 ESP32 的强项,仓库里相关的例子非常丰富。原创 2025-04-09 22:28:12 · 307 阅读 · 0 评论 -
嵌入式工程师进阶指南:从「会用」到「会设计」的五大突破方向
TI在《低功耗设计白皮书》中指出,软件策略对系统功耗的影响占比可达40%以上,需从代码效率、任务调度和硬件协同三个维度展开深度优化。程克非在《嵌入式系统设计》中指出,系统级优化是提升嵌入式软件竞争力的关键,需从代码效率、资源利用率和实时性三个维度展开。,掌握动态电压频率调节(DVFS)、睡眠模式优化、外设动态管理及RTOS功耗调度技术,实现嵌入式软件的能效跃升。例如:工业控制系统中,将Modbus协议栈封装在中间层,实现与硬件无关的通信逻辑。:将频繁访问的变量存储在栈中,减少Cache Miss。原创 2025-04-05 12:31:17 · 1142 阅读 · 0 评论 -
推荐一款便于学习的开源蓝牙协议栈!
bluetooth_stack专注于嵌入式平台(如STM32),其代码结构精简高效,支持HCI层以上的核心协议(如L2CAP、ATT、GATT等),而底层依赖芯片自带协议栈(如CSR8311)。目前包含HCI、L2CAP、SDP、RFCOMM、HFP、SPP、A2DP、AVRCP、AVDTP、AVCTP、OBEX、PBAP等协议。btstack一个包含传统蓝牙跟低功耗蓝牙的协议栈,属于超轻量级蓝牙协议栈,用作学习蓝牙协议栈的人使用。本次我们来介绍一个开源的双模蓝牙协议栈——btstack。原创 2025-04-03 09:37:13 · 875 阅读 · 0 评论 -
嵌入式软件,有必要进行自测吗?
有时候,我们也会供给我们的团队成员调用,或是其他部门的同事使用,我们在交付出去进行联调之前,需要保证质量,也能免去后面很多的联调成本。设计的软件可测试性强,我们就能在开发阶段进行充分地测试,在开发阶段尽可能多地解决一些逻辑上的问题,从而保证更高质量地软件交付。方式二,计算所依赖的数据都通过函数参数留出来了,我们可以很方便地对函数进行测试,可以很方便地输入不同的数据组合。所以,我们尽可能地在释放给测试之前,进行一个完整的自测,减少一些不必要的bug产生(主路径bug)。并且自测的思考放在设计之前。原创 2025-04-01 09:42:15 · 612 阅读 · 0 评论 -
嵌入式开发中常用的软件工程方法有哪些?
/ 或触发错误// 处理-2147483648 / -1溢出return;原创 2025-03-25 10:21:22 · 958 阅读 · 0 评论 -
嵌入式开发:这几个知识点让你少走 3 年弯路!
堆栈水印检测是一种动态监测任务堆栈使用情况的技术。在任务初始化时,将整个堆栈空间填充特定的标识模式(如0xDEADBEEF随着任务运行,堆栈指针逐渐覆盖这些预设值。通过定期检查未被覆盖的残留标识位置,可精确计算堆栈的历史最大使用量。相较于静态代码分析,该方法能真实反映中断嵌套、递归调用等动态行为的影响。标识模式需避免与正常数据冲突;检测时机应选在任务空闲或切换时,避免干扰实时性。**浅拷贝(Shallow Copy)**仅复制对象本身的值(指针变量的值),不复制指针指向的实际数据。原创 2025-03-20 10:21:18 · 353 阅读 · 0 评论 -
嵌入式开发:几个小众高效工具!
之后又重新自研,不仅支持 C/C++,还支持 C#,Lua 语言,在发掘 C/C++ 空指针、越界、未初始化、C#空引用、Lua变量未初始化等比较有效。Quantum Platform for C(QP/C)是嵌入式系统领域的实时框架,由 Quantum Leaps 公司开发,基于状态机和事件驱动架构(EDA)。可应用于IoT 设备、智能硬件、工业物联网(IIoT),支持多平台(如 ESP32、STM32),降低现场故障排查成本。Armadillo是一款轻量级代码混淆工具,支持C/C++代码混淆。原创 2025-03-18 09:50:27 · 588 阅读 · 0 评论 -
观察者模式在嵌入式中的妙用:传感器、RTOS、MQTT实例解析
*观察者模式(Observer Pattern)**是一种行为设计模式,其核心在于建立对象间的动态订阅-通知机制。它定义了对象之间的一对多依赖关系,当一个对象(被观察对象,也称为主题)的状态发生变化时,所有依赖它的对象(观察者)都会收到通知并自动更新。处理传感器数据更新硬件状态变化多模块协作。原创 2025-03-15 11:17:01 · 900 阅读 · 0 评论 -
嵌入式开发必备技能 | Git子模块
大家好,我是杂烩君。今天我们来分享Git子模块()的小知识。原创 2025-03-13 09:36:21 · 369 阅读 · 0 评论 -
嵌入式编程模型 | MVC模型
MVC(Model-View-Controller)是一种软件设计模式,它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller),这种分离有助于提高代码的可维护性、可扩展性和可测试性。模型(Model):专注于数据管理和业务逻辑。视图(View):负责呈现数据给用户,它是用户界面的部分。控制器(Controller):作为模型和视图之间的桥梁,接收用户的输入请求,根据请求调用相应的模型方法进行数据处理,然后选择合适的视图将处理结果展示给用户。原创 2025-03-10 22:39:53 · 965 阅读 · 0 评论 -
一个基于ESP32S3+LVGL的嵌入式多功能调试器!
Exlink_Tool是一个基于ESP32S3+LVGL的嵌入式多功能调试器。开源地址:作者:physicsexpert。原创 2025-03-06 10:00:57 · 420 阅读 · 0 评论 -
手把手教你搭建嵌入式容器化开发环境!
在嵌入式系统中,Docker 的应用趋势正随着物联网(IoT)、边缘计算和云原生技术的发展而快速演进。本篇文章我们只是介绍了 Docker 搭建开发环境的优势。开发环境标准化时间从 4 小时缩短至 5 分钟跨平台编译成功率从 65% 提升至 98%新成员上手时间减少 70%资源效率优化:Docker 通过容器化技术实现应用隔离,相比虚拟机(VM)更轻量,适合嵌入式设备的低功耗、低算力场景。例如,ARM 架构的边缘设备通过 Docker 运行微服务,可减少资源占用。跨平台部署。原创 2025-03-03 23:21:01 · 1113 阅读 · 0 评论 -
嵌入式开发中的PlantUML图表应用
大家好,我是杂烩君。在嵌入式开发中,设计文档和系统架构图是沟通需求、梳理逻辑的核心工具。但传统的拖拽式绘图工具效率低、难以维护,而PlantUML通过的方式,完美解决了这一问题。它不仅支持UML图,还能绘制网络拓扑、状态机等嵌入式常用图表,!今天我们就来分享如何用PlantUML进行嵌入式图表设计!原创 2025-03-02 21:58:06 · 1959 阅读 · 0 评论 -
嵌入式开发的可靠方法论探析
嵌入式开发各个环节紧密相扣,从最初对系统需求的精准洞察,到硬件平台的审慎抉择,再到代码编写的精雕细琢、测试调试的严苛把关,以及上线后的持续优化维护,每一步都承载着产品的品质与未来。作为嵌入式软件开发从业者,遵循可靠的方法论能助力我们打造出稳定可靠、性能卓越的嵌入式软件产品。原创 2025-01-09 19:52:27 · 849 阅读 · 0 评论 -
一个基于优先级协作式调度的嵌入式操作系统
github链接:https://github.com/kmilo17pet/QuarkTSQuarkTS是一款开源的嵌入式操作系统,旨在为小型嵌入式应用程序提供现代化的开发环境,帮助开发者构建稳定、可预测的事件驱动型多任务软件。优先级协作式调度:任务自行管理生命周期,避免了抢占带来的复杂性,减少了重入问题。时间控制:提供定时任务和软件定时器,方便实现时间相关的操作。任务间通信机制:提供队列、通知、事件标志等机制,实现不同任务之间的有效通信。状态机支持:提供分层状态机支持,简化复杂逻辑的实现。原创 2024-12-02 22:35:20 · 907 阅读 · 0 评论 -
一个非常轻量的嵌入式日志库!
github链接:log.c是一个轻量级的日志库。一个用 C99 实现的简单日志库,这意味着它应该可以在任何支持 C99 标准的平台上编译和运行,如我们的嵌入式系统中。使用C99标准,适用于嵌入式。支持静默模式。支持日志级别设置。支持ANSI颜色编码。线程安全设计,允许设置锁机制。原创 2024-11-24 12:33:21 · 818 阅读 · 0 评论 -
如何优雅地使用嵌入式事件标志组?
使用RTOS提供的API来创建消息队列和事件标志。消息队列应能够存储指向USB数据包的指针或相关结构体。原创 2024-09-23 22:57:18 · 858 阅读 · 0 评论 -
嵌入式C编程新境界:解锁结构体保护绝技,让你的代码坚如磐石,无懈可击!
C/C++中不完全类型有三种不同形式: void、未指定长度的数组以及具有非指定内容的结构和联合。使用不完全类型的指针或引用,不需要知道类型的全部内容。比如:此时的array就是一个不完全类型的数组,一般这样的数组声明会放在.h中,而其定义放在.c中,在定义的时候在给出数组的具体长度,若之后有需要改变数组的长度时,直接改.c里的就可以,对外的.h就保持原样不用修改。用数组来说明可能还是有点不太好理解,下面我们用结构体的例子来做说明。原创 2024-07-24 23:12:45 · 818 阅读 · 0 评论 -
Github上有哪些热门的 C 语言项目?
在Github上,有许多高质量的C语言项目供学习和使用,本次来汇总一波,看看有没有你需要的。原创 2024-07-23 21:06:00 · 2027 阅读 · 0 评论 -
低功耗嵌入式软件设计的要点!
硬件产品,低功耗设计是提升产品竞争力的关键因素之一。低功耗设计的具体实现方式涉及到多个部分:硬件设计、软件设计、散热设计等方面。本篇文章我们着重关注设计的一些要点。原创 2024-07-15 23:26:19 · 1027 阅读 · 0 评论 -
实用的嵌入式代码优化技巧与经验分享!
使用指针的方式写代码会比柔性数组的方式会繁琐一些,特别地,如果在释放内存的时候把顺序弄反了,则结构体里的指针成员所指向的内存就释放不掉,会造成内存泄露。使用内联函数替换重复的短代码,一方面,可以避免函数的回调,加速了程序的执行,利用指令缓存,增强局部访问性;尽可能把长的有依赖的代码链分解成几个可以在流水线执行单元中并行执行的没有依赖的代码链,提高流水线的连续性。在多重循环中,应当将最长的循环放在最内层, 最短的循环放在最外层,以减少 CPU 跨切循环层的次数。另一方面,查表法的代码往往比常规法要简洁些。原创 2024-03-12 09:00:00 · 1135 阅读 · 2 评论 -
超轻量的嵌入式数据库!
是一款超轻量级的嵌入式数据库,专注于提供嵌入式产品的数据存储方案。与传统的基于文件系统的数据库不同,FlashDB 结合了 Flash 的特性,具有较强的性能及可靠性。如今,物联网产品种类越来越多,运行时产生的数据种类及总量及也在不断变大。FlashDB 提供了多样化的数据存储方案,不仅资源占用小,并且存储容量大,非常适合用于物联网产品。:是一种非关系数据库,它将数据存储为键值(Key-Value)对集合,其中键作为唯一标识符。TSDB 数据具有时间戳,数据存储量大,插入及查询性能高。原创 2024-03-10 11:00:00 · 957 阅读 · 0 评论 -
嵌入式中,升级时涉及的协议兼容性问题?
大家好,我是杂烩君。越来越多的硬件产品,硬件构成不仅仅是集成在一块板子上,而是多块控制板协同工作。此时,就会涉及到多块板之间的通信(有线/无线通信),就会涉及到到通信协议。很多时候,我们都会自定义一些协议。我们在软件迭代过程中,可能会涉及到板间交互的数据的升级,比如新增数据。新增的某个数据属性上属于某个数据集合,比如与某个结构体是同类数据,理论上为了程序设计得更合理些,应该把这个数据加在已有的结构体里面。但是,这可能会涉及到兼容性问题。原创 2024-03-03 23:17:44 · 843 阅读 · 0 评论 -
Linux多线程编程之线程安全!
在多线程环境中,多个线程在同一时刻对同一份资源进行写操作时,不会出现数据不一致。反之,则是线程非安全的。线程安全是程序设计中的术语,指某个函数、函数库在多线程环境中被调用时,能够正确地处理多个线程之间的公用变量,使程序功能正确完成。为了确保在多线程环境中的线程安全,就要确保数据的一致性。从字面上简单理解,原子是一种很微小的粒子;原子操作是不能再进一步细分的操作。原创 2023-06-10 09:35:42 · 374 阅读 · 0 评论 -
谈谈嵌入式软件的兼容性!
大家好,我是杂烩君。嵌入式项目中,软件是一个不断迭代的过程,需要考虑各种兼容性。之前我们的项目,因为这方面考虑得比较少,导致项目中后期开发起来很被动。项目系统总体设计阶段,应尽可能地考虑到未来可以遇见的情况,覆盖到尽可能多的业务扩展。项目虽然分阶段开发,各个阶段完成的功能都不一样,总体设计要指向最终的需求。原创 2023-06-07 13:20:26 · 785 阅读 · 0 评论 -
嵌入式大杂烩 | 一个高性能通信库的简单使用分享
点击上方「嵌入式大杂烩」,选择「置顶公众号」第一时间查看嵌入式笔记!前言 上次的推文实用 | 分享几个非常实用的开源项目中有提到过nanomsg,正好最近的工作中也有用到nanomsg,本...原创 2021-03-21 22:59:07 · 1900 阅读 · 0 评论 -
嵌入式大杂烩 | 分享几个非常实用的开源项目
点击上方「嵌入式大杂烩」,选择「置顶公众号」第一时间查看嵌入式笔记!前言 本次分享几个实用的、值得学习使用的嵌入式相关开源项目,下面列举的这些基本上都在本公众号分享过,详细介绍及使用可查看...原创 2021-03-12 23:58:49 · 3994 阅读 · 1 评论 -
嵌入式大杂烩 | 2019精选文章汇总
这是一篇汇总文章,汇总过去发过的一些笔记:嵌入式大杂烩 【STM32笔记】在SRAM、FLASH中调试的方法【STM32笔记】另一种打印调试方法【STM32笔记】ISP下载的原理是什么呢...原创 2020-01-20 18:34:28 · 1903 阅读 · 0 评论 -
嵌入式大杂烩 | JSON的简单认识
1前言JSON(JavaScriptObjectNotation):JavaScript 对象表示法。其是一种轻量级的数据交换格式,简洁和清晰的层次结构使得其成为理想的数据交换语言。...原创 2018-11-05 06:06:00 · 981 阅读 · 0 评论 -
嵌入式大杂烩 | 什么是FPGA?
在我们嵌入式中,有这样一朵奇葩介于软件与硬件之间,这朵奇葩就是FPGA。可能很多平时玩MCU比较多的朋友不太了解。之前我也不太了解,但是最近两年的这两份工作都有与FPGA挂钩,所以我精通...原创 2020-01-11 12:08:00 · 3654 阅读 · 0 评论 -
嵌入式大杂烩 | 简单认识认识mqtt及mosquitto
某项目中使用了MQTT作为进程间的通信方式,感觉很新颖,网上好像...原创 2020-10-11 22:35:39 · 3594 阅读 · 0 评论 -
嵌入式大杂烩 | mqtt应用于进程间通信
前言上一篇分享了:《简单认识认识mqtt及mosquitto》,但也只是分享了mqtt的一些概念及mosquitto的一些介绍。然后就有读者来催更了:这一篇我们就来分享mqtt应用于进程...原创 2020-10-13 08:00:00 · 1491 阅读 · 0 评论 -
嵌入式大杂烩 | Protobuf:一种更小、更快、更高效的协议
前言之前分享关于JSON的使用:例说嵌入式实用知识之JSON数据。JSON类型数据可读性很好,但是整个数据包中会带有一些无...原创 2020-11-05 23:26:36 · 1867 阅读 · 0 评论 -
嵌入式相关开源项目及资料汇总
原创 2020-09-28 23:54:52 · 1390 阅读 · 0 评论