自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

嵌入式大杂烩

专注于嵌入式技术!

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

原创 嵌入式设备配网:从基础到实战!

其原理是嵌入式设备自身创建一个无线热点,用户通过手机或其他终端设备连接到这个热点,然后在终端设备上输入目标网络(如家庭 WiFi)的信息,设备接收到这些信息后,就会尝试连接到目标网络。smartconfig配网的原理是利用手机等终端设备将网络信息(SSID 和密码等信息)通过广播的方式发送出去,嵌入式设备通过监听周围的无线信号,解析出网络信息,从而实现配网。• 无线 AP(Access Point):无线接入点,是一种无线网络设备,用于将无线客户端连接到有线网络,起到桥梁的作用。

2025-05-11 21:47:39 32

原创 嵌入式设备联网的 “捷径” ——DHCP 详解

DHCP 服务器收到传感器的 Request 包后,会发送一个 Ack 包给传感器,相当于回应:“好的,这个 IP 地址归你用了,配置信息确认无误。” 这个 Request 包同样是广播包,目的是通知网络中的其他 DHCP 服务器,自己已选定 IP 地址,其他服务器可收回它们提供的地址。工厂网络中的 DHCP 服务器收到传感器的 Discover 包后,会从预先设定的 IP 地址池中挑选一个尚未分配的 IP 地址,然后向传感器发送一个 Offer 包。简单来说,DHCP 就像网络世界里的 “贴心管家”。

2025-04-22 09:01:25 546

原创 嵌入式软件:函数式 VS 非函数式编程

例如,在一个嵌入式控制系统中,使用命令式编程可能会有大量的循环和条件判断来实现不同的控制逻辑,代码的整体结构不够清晰。非函数式编程中存在大量的共享状态和副作用,测试时需要模拟复杂的外部环境和状态,增加了测试的难度和复杂度。代码的可维护性和可测试性较差,因为函数之间的依赖关系不清晰,修改一个函数可能影响其他函数。代码结构通常围绕函数的组合和复用构建,函数之间的依赖关系清晰,每个函数只负责单一的任务。,它将计算视为函数的求值,避免使用共享状态和可变数据,强调函数的纯粹性和不可变性。

2025-04-20 12:17:40 104

原创 嵌入式领域:Linux 与 RTOS 的多方面对比!

它实现的方式,是将核心功能模块化,划分成几个独立的进程,各自运行,这些进程被称为服务(service)。:秒级启动,启动过程涉及U-Boot引导、内核加载、文件系统挂载、服务启动等多个环节,启动速度相对较慢,一般需要几秒到几十秒的时间,不过对于一些非实时性要求高的设备,如智能电视等,启动速度的影响相对较小。:因内核复杂,需要持续运行多个后台进程和服务,对硬件资源的使用相对较多,运行功耗一般较高(通常>100mW),但通过一些节能技术和优化措施,如电源管理框架(如CPUFreq),也可在一定程度上降低功耗,

2025-04-16 09:47:01 573

原创 嵌入式性能指标竟藏着这些秘密,你了解几个?

在应用程序使用C或C++堆、多个自定义堆或RTOS提供的内存池对象,可以使用heap-monitoring跟踪这些对象的使用情况,分析它们的使用模式,评估堆上的负载、识别潜在的内存泄漏、跟踪内存峰值使用情况等的格式显示收集到的信息。Valgrind Massif能帮助我们减少内存的使用,在带有虚拟内存的现代系统中,它还能够加速我们程序的运行,减少程序停留在交换区中的几率。对于嵌入式开发,可以在交叉编译环境中使用。合理的资源利用率可以使系统在有限的硬件资源下稳定运行,并为未来的功能扩展预留一定的资源空间。

2025-04-13 14:07:43 810

原创 ESP32、ESP8266学习资料推荐!

实现了 ESP32-IDF 3.1 的 DNS 服务器功能,还能返回 HTML 页面,在网络配置和服务提供方面有着重要的应用。这两个仓库由 xuhongv 精心打造,仓库里涵盖了很多个demo,从基础的硬件驱动到复杂的网络应用,涵盖。无论你是刚入门的小白,还是想进阶实战的老司机,这两个仓库都能让你快速上手ESP32与ESP8266开发,实现了将相机拍摄的照片通过 HTTP 上传到云端的功能,在图像监控和数据存储方面有很大的价值。网络通信是 ESP32 的强项,仓库里相关的例子非常丰富。

2025-04-09 22:28:12 307

原创 嵌入式工程师进阶指南:从「会用」到「会设计」的五大突破方向

TI在《低功耗设计白皮书》中指出,软件策略对系统功耗的影响占比可达40%以上,需从代码效率、任务调度和硬件协同三个维度展开深度优化。程克非在《嵌入式系统设计》中指出,系统级优化是提升嵌入式软件竞争力的关键,需从代码效率、资源利用率和实时性三个维度展开。,掌握动态电压频率调节(DVFS)、睡眠模式优化、外设动态管理及RTOS功耗调度技术,实现嵌入式软件的能效跃升。例如:工业控制系统中,将Modbus协议栈封装在中间层,实现与硬件无关的通信逻辑。:将频繁访问的变量存储在栈中,减少Cache Miss。

2025-04-05 12:31:17 1138

原创 推荐一款便于学习的开源蓝牙协议栈!

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

原创 嵌入式软件,有必要进行自测吗?

有时候,我们也会供给我们的团队成员调用,或是其他部门的同事使用,我们在交付出去进行联调之前,需要保证质量,也能免去后面很多的联调成本。设计的软件可测试性强,我们就能在开发阶段进行充分地测试,在开发阶段尽可能多地解决一些逻辑上的问题,从而保证更高质量地软件交付。方式二,计算所依赖的数据都通过函数参数留出来了,我们可以很方便地对函数进行测试,可以很方便地输入不同的数据组合。所以,我们尽可能地在释放给测试之前,进行一个完整的自测,减少一些不必要的bug产生(主路径bug)。并且自测的思考放在设计之前。

2025-04-01 09:42:15 612

原创 【开源硬件新玩法】打造属于你的 AI 聊天伴侣

集成了大模型 TTS(火山引擎或 CosyVoice)和大模型 LLM(Qwen, DeepSeek, Doubao),拥有可配置的提示词和音色,还具备短期记忆功能,每轮对话后能自我总结,让对话更加连贯和智能。:BOOT 键唤醒和打断,支持点击和长按两种触发方式,还具备离线语音唤醒 ESP - SR 功能,操作简单又高效,能实时打断对话,就像和真人聊天一样自然。:OLED/LCD 显示屏不仅能显示信号强弱,还能展示对话内容,甚至支持 LCD 显示图片表情,为你的聊天增添更多乐趣。

2025-03-28 22:17:07 1891

原创 44 岁嵌入式软件工程师失业记:职场沉浮中的思考

一些刚入行的工程师,虽然需求是做出来了,但是可能也会搞出很多bug,甚至修了一个bug,引发了几个bug~在这个快速发展的时代,无论是年轻的嵌入式软件工程师,还是像梧桐这样有丰富经验的从业者,我们都需要保持学习的热情和对行业的敏锐洞察力。项目紧张时,我们也常态干到晚上11点之后,甚至凌晨。从集群通信到医疗设备,再到物联网、半导体,她参与过各种项目,能熟练用汇编写驱动,熟悉各类开发流程,还凭借努力晋升为软件架构师。随着行业竞争的加剧,企业对工程师的要求越来越高,不仅要技术过硬,还要对多个领域有深入了解。

2025-03-27 08:17:44 330 1

原创 嵌入式开发中常用的软件工程方法有哪些?

/ 或触发错误// 处理-2147483648 / -1溢出return;

2025-03-25 10:21:22 958

原创 嵌入式开发:这几个知识点让你少走 3 年弯路!

堆栈水印检测是一种动态监测任务堆栈使用情况的技术。在任务初始化时,将整个堆栈空间填充特定的标识模式(如0xDEADBEEF随着任务运行,堆栈指针逐渐覆盖这些预设值。通过定期检查未被覆盖的残留标识位置,可精确计算堆栈的历史最大使用量。相较于静态代码分析,该方法能真实反映中断嵌套、递归调用等动态行为的影响。标识模式需避免与正常数据冲突;检测时机应选在任务空闲或切换时,避免干扰实时性。**浅拷贝(Shallow Copy)**仅复制对象本身的值(指针变量的值),不复制指针指向的实际数据。

2025-03-20 10:21:18 353

原创 嵌入式开发:几个小众高效工具!

之后又重新自研,不仅支持 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 586

原创 观察者模式在嵌入式中的妙用:传感器、RTOS、MQTT实例解析

*观察者模式(Observer Pattern)**是一种行为设计模式,其核心在于建立对象间的动态订阅-通知机制。它定义了对象之间的一对多依赖关系,当一个对象(被观察对象,也称为主题)的状态发生变化时,所有依赖它的对象(观察者)都会收到通知并自动更新。处理传感器数据更新硬件状态变化多模块协作。

2025-03-15 11:17:01 900

原创 嵌入式开发必备技能 | Git子模块

大家好,我是杂烩君。今天我们来分享Git子模块()的小知识。

2025-03-13 09:36:21 369

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

MVC(Model-View-Controller)是一种软件设计模式,它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller),这种分离有助于提高代码的可维护性、可扩展性和可测试性。模型(Model):专注于数据管理和业务逻辑。视图(View):负责呈现数据给用户,它是用户界面的部分。控制器(Controller):作为模型和视图之间的桥梁,接收用户的输入请求,根据请求调用相应的模型方法进行数据处理,然后选择合适的视图将处理结果展示给用户。

2025-03-10 22:39:53 965

原创 一个基于ESP32S3+LVGL的嵌入式多功能调试器!

Exlink_Tool是一个基于ESP32S3+LVGL的嵌入式多功能调试器。开源地址:作者:physicsexpert。

2025-03-06 10:00:57 419

原创 手把手教你搭建嵌入式容器化开发环境!

在嵌入式系统中,Docker 的应用趋势正随着物联网(IoT)、边缘计算和云原生技术的发展而快速演进。本篇文章我们只是介绍了 Docker 搭建开发环境的优势。开发环境标准化时间从 4 小时缩短至 5 分钟跨平台编译成功率从 65% 提升至 98%新成员上手时间减少 70%资源效率优化:Docker 通过容器化技术实现应用隔离,相比虚拟机(VM)更轻量,适合嵌入式设备的低功耗、低算力场景。例如,ARM 架构的边缘设备通过 Docker 运行微服务,可减少资源占用。跨平台部署。

2025-03-03 23:21:01 1113

原创 嵌入式开发中的PlantUML图表应用

大家好,我是杂烩君。在嵌入式开发中,设计文档和系统架构图是沟通需求、梳理逻辑的核心工具。但传统的拖拽式绘图工具效率低、难以维护,而PlantUML通过的方式,完美解决了这一问题。它不仅支持UML图,还能绘制网络拓扑、状态机等嵌入式常用图表,!今天我们就来分享如何用PlantUML进行嵌入式图表设计!

2025-03-02 21:58:06 1958

原创 嵌入式开发的可靠方法论探析

嵌入式开发各个环节紧密相扣,从最初对系统需求的精准洞察,到硬件平台的审慎抉择,再到代码编写的精雕细琢、测试调试的严苛把关,以及上线后的持续优化维护,每一步都承载着产品的品质与未来。作为嵌入式软件开发从业者,遵循可靠的方法论能助力我们打造出稳定可靠、性能卓越的嵌入式软件产品。

2025-01-09 19:52:27 848

原创 一个基于优先级协作式调度的嵌入式操作系统

github链接:https://github.com/kmilo17pet/QuarkTSQuarkTS是一款开源的嵌入式操作系统,旨在为小型嵌入式应用程序提供现代化的开发环境,帮助开发者构建稳定、可预测的事件驱动型多任务软件。优先级协作式调度:任务自行管理生命周期,避免了抢占带来的复杂性,减少了重入问题。时间控制:提供定时任务和软件定时器,方便实现时间相关的操作。任务间通信机制:提供队列、通知、事件标志等机制,实现不同任务之间的有效通信。状态机支持:提供分层状态机支持,简化复杂逻辑的实现。

2024-12-02 22:35:20 907

原创 一个非常轻量的嵌入式日志库!

github链接:log.c是一个轻量级的日志库。一个用 C99 实现的简单日志库,这意味着它应该可以在任何支持 C99 标准的平台上编译和运行,如我们的嵌入式系统中。使用C99标准,适用于嵌入式。支持静默模式。支持日志级别设置。支持ANSI颜色编码。线程安全设计,允许设置锁机制。

2024-11-24 12:33:21 818

原创 一个非常轻量的嵌入式线程池库!

线程池(Thread Pool)是一种基于池化技术的多线程处理形式,用于管理线程的创建和生命周期,以及提供一个用于并行执行任务的线程队列。线程池的主要目的:线程复用:线程池中的线程可以被重复利用,用于执行多个任务,避免了频繁创建和销毁线程的性能开销。提高响应速度。假如创建线程用的时间为T1,执行任务用的时间为T2,销毁线程用的时间为T3,那么使用线程池就免去了T1和T3的时间。资源控制:线程池可以限制系统中线程的最大数量,防止因为线程数过多而消耗过多内存,或者导致过高的上下文切换开销。

2024-11-24 12:32:05 903

原创 推荐一个好用的文件同步工具!

Syncthing是一款免费开源的文件同步工具,它采用P2P(点对点)技术直接在设备间进行通信,无需依赖传统的云存储或中间服务器,从而确保了数据的安全性和隐私性。

2024-10-29 23:53:56 1191

原创 推荐一个嵌入式 RPC 通信框架

RPC(Remote Procedure Call,远程过程调用)机制是一种常用的通信机制。实际上就是要像调用本地的函数一样去调远程函数。RPC机制,在互联网中应用得比较广泛。在我们嵌入式中,把传输层拓展到IPC、TPC/IP、UART、USB等,很多场景下也都可以用得上。如:需要发送确认的场景,比如发送某个数据,需要对端回复一个数据进行确认,这种场景,我们可以在应用上进行实现,随着协议越加越多,对应的回复的代码也越来越多,但基本都是很相似的代码。

2024-10-26 14:33:53 809

原创 智元开源机器人中间件AimRT

AimRT的开源,是智元机器人对机器人技术发展的又一次贡献。它不仅为嵌入式行业相关工作者和学生提供了一个高效、灵活的开发工具,更为整个机器人行业的发展注入了新的活力。随着更多企业和开发者的参与,AimRT将不断壮大其生态系统,推动机器人技术的不断创新与发展。让我们共同关注AimRT!

2024-09-26 09:01:00 1618

原创 为什么在物联网应用中使用 MQTT 而不是 HTTP?

物联网应用中MQTT和HTTP都有应用,但是应用的场景不同。

2024-09-24 23:45:52 982

原创 如何优雅地使用嵌入式事件标志组?

使用RTOS提供的API来创建消息队列和事件标志。消息队列应能够存储指向USB数据包的指针或相关结构体。

2024-09-23 22:57:18 858

原创 分享一个代码生成器编写思路!

大家好,我是杂烩君。中,李先静前辈提到一点:让电脑去做单调重复的工作。这点让我很受启发,在工作中需要这类重复性的工作时,我也会编写代码生成器来帮我处理。最近,又完成了一个代码生成器的开发,一键生成大部分原本需要靠体力输出的相似代码,极大地提高了开发效率。业内知名的代码生成器有很多,如:STM32CubeMX生成STM32基础库代码、project_generator生成器生成基础工程、protoc生成protobuf协数据格式代码等。

2024-09-16 13:38:22 319

原创 嵌入式C编程新境界:解锁结构体保护绝技,让你的代码坚如磐石,无懈可击!

C/C++中不完全类型有三种不同形式: void、未指定长度的数组以及具有非指定内容的结构和联合。使用不完全类型的指针或引用,不需要知道类型的全部内容。比如:此时的array就是一个不完全类型的数组,一般这样的数组声明会放在.h中,而其定义放在.c中,在定义的时候在给出数组的具体长度,若之后有需要改变数组的长度时,直接改.c里的就可以,对外的.h就保持原样不用修改。用数组来说明可能还是有点不太好理解,下面我们用结构体的例子来做说明。

2024-07-24 23:12:45 818

原创 Github上有哪些热门的 C 语言项目?

在Github上,有许多高质量的C语言项目供学习和使用,本次来汇总一波,看看有没有你需要的。

2024-07-23 21:06:00 2026

原创 低功耗嵌入式软件设计的要点!

硬件产品,低功耗设计是提升产品竞争力的关键因素之一。低功耗设计的具体实现方式涉及到多个部分:硬件设计、软件设计、散热设计等方面。本篇文章我们着重关注设计的一些要点。

2024-07-15 23:26:19 1024

原创 工具 | 强大的Shell脚本静态分析工具

ShellCheck是一个广受欢迎的开源工具,专为Shell脚本开发者设计,旨在帮助发现并修正脚本中的错误。它能够静态分析bash、sh、ksh和dash等多种Shell脚本,通过提供详细的警告和建议,帮助开发者提高脚本的可靠性和可维护性。ShellCheck不仅检查语法错误,还能识别出潜在的逻辑错误、不规范的编码习惯以及安全漏洞,是Shell脚本开发过程中的得力助手。Github地址:https://github.com/koalaman/shellcheck。

2024-07-14 23:05:38 664

原创 嵌入式软件如何记录用户行为?

的例子:我们基于Linux C,使用POSIX线程(pthread)来创建单独的线程,并使用POSIX消息队列来接收来自其他线程的开机次数及按键埋点事件。同时,我们将使用。

2024-07-14 23:02:22 949

原创 Zephyr 会成为物联网时代RTOS的佼佼者?

Zephyr RTOS是Linux基金会下的一个开源项目,以其高效、灵活、安全的特点,在实时操作系统领域崭露头角,成为物联网设备开发的首选之一。基于Apache 2.0许可。官网:https://www.zephyrproject.org/代码仓:https://github.com/zephyrproject-rtos/zephyr。

2024-07-06 00:33:14 2782

原创 常用的Git commit 提交规范!

在我们嵌入式开发中,版本管理工具Git已经成为不可或缺的一部分。Git帮助我们记录代码变更历史,提供了强大的代码协作开发功能。初学时,我们基本都是按照下面的格式这么来写commit信息的吧?甚至有些公司的commit信息也很随意也类似于上面这样的。这样的commit信息包含的信息比较有限,不利于后续的版本追溯。其实,为了确保团队成员能够更高效地协作,并且保持代码库的整洁和有序,需要团队各成员遵循达成一致的commit提交规范。

2024-07-04 21:45:57 1214

原创 C语言开发调试利器 | Sanitizer检测器

Sanitizer是由Google发起的开源工具集,用于检测内存泄露等问题。链接:https://github.com/google/sanitizers/wiki/它包括了AddressSanitizer、MemorySanitizer、ThreadSanitizer、LeakSanitizer等多种工具。这些工具最初是LLVM项目的一部分,后来也被GNU的GCC编译器支持。

2024-04-07 22:39:15 1366

原创 如何快速开发一个上位机?aardio了解一下

我们的资料仓库下面之前有一位小伙伴留言:杂烩君之前偶然间知道aardio这么一个工具,但没有实际去了解过。本期花点时间来了解、学习一下aardio,看看aardio是不是如这位朋友所说的这是一个不错的工具。

2024-03-17 10:24:47 3067

原创 嵌入式处理器微架构与指令集

作为最低的授权等级,拥有使用授权的用户只能购买已经封装好的ARM处理器核心,而如果想要实现更多功能和特性,则只能通过增加封装之外的DSP核心的形式来实现(当然,也可以通过对芯片的再封装方法来实现)。3、ARM和苹果的渊源很深,当年苹果是ARM的创始股东之一,后来苹果陆续卖掉了ARM的股票,再后来苹果基于ARM的架构开始大搞自研芯片。系统设计,低耗电节能,非常适用移动通讯领域。内核层级的授权是ARM公司设计出不同的微架构,其他芯片公司可以购买这些微架构,再添加一些自己的一些外设模块,就可以设计出一个芯片。

2024-03-15 11:00:00 1251

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

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

2023-06-07

JSON天气数据包解析

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

2018-02-06

空空如也

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

TA关注的人

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