- 博客(389)
- 资源 (1)
- 收藏
- 关注
原创 推荐一款便于学习的开源蓝牙协议栈!
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
619
原创 嵌入式软件,有必要进行自测吗?
有时候,我们也会供给我们的团队成员调用,或是其他部门的同事使用,我们在交付出去进行联调之前,需要保证质量,也能免去后面很多的联调成本。设计的软件可测试性强,我们就能在开发阶段进行充分地测试,在开发阶段尽可能多地解决一些逻辑上的问题,从而保证更高质量地软件交付。方式二,计算所依赖的数据都通过函数参数留出来了,我们可以很方便地对函数进行测试,可以很方便地输入不同的数据组合。所以,我们尽可能地在释放给测试之前,进行一个完整的自测,减少一些不必要的bug产生(主路径bug)。并且自测的思考放在设计之前。
2025-04-01 09:42:15
580
原创 【开源硬件新玩法】打造属于你的 AI 聊天伴侣
集成了大模型 TTS(火山引擎或 CosyVoice)和大模型 LLM(Qwen, DeepSeek, Doubao),拥有可配置的提示词和音色,还具备短期记忆功能,每轮对话后能自我总结,让对话更加连贯和智能。:BOOT 键唤醒和打断,支持点击和长按两种触发方式,还具备离线语音唤醒 ESP - SR 功能,操作简单又高效,能实时打断对话,就像和真人聊天一样自然。:OLED/LCD 显示屏不仅能显示信号强弱,还能展示对话内容,甚至支持 LCD 显示图片表情,为你的聊天增添更多乐趣。
2025-03-28 22:17:07
806
原创 44 岁嵌入式软件工程师失业记:职场沉浮中的思考
一些刚入行的工程师,虽然需求是做出来了,但是可能也会搞出很多bug,甚至修了一个bug,引发了几个bug~在这个快速发展的时代,无论是年轻的嵌入式软件工程师,还是像梧桐这样有丰富经验的从业者,我们都需要保持学习的热情和对行业的敏锐洞察力。项目紧张时,我们也常态干到晚上11点之后,甚至凌晨。从集群通信到医疗设备,再到物联网、半导体,她参与过各种项目,能熟练用汇编写驱动,熟悉各类开发流程,还凭借努力晋升为软件架构师。随着行业竞争的加剧,企业对工程师的要求越来越高,不仅要技术过硬,还要对多个领域有深入了解。
2025-03-27 08:17:44
250
1
原创 嵌入式开发:这几个知识点让你少走 3 年弯路!
堆栈水印检测是一种动态监测任务堆栈使用情况的技术。在任务初始化时,将整个堆栈空间填充特定的标识模式(如0xDEADBEEF随着任务运行,堆栈指针逐渐覆盖这些预设值。通过定期检查未被覆盖的残留标识位置,可精确计算堆栈的历史最大使用量。相较于静态代码分析,该方法能真实反映中断嵌套、递归调用等动态行为的影响。标识模式需避免与正常数据冲突;检测时机应选在任务空闲或切换时,避免干扰实时性。**浅拷贝(Shallow Copy)**仅复制对象本身的值(指针变量的值),不复制指针指向的实际数据。
2025-03-20 10:21:18
328
原创 嵌入式开发:几个小众高效工具!
之后又重新自研,不仅支持 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
538
原创 观察者模式在嵌入式中的妙用:传感器、RTOS、MQTT实例解析
*观察者模式(Observer Pattern)**是一种行为设计模式,其核心在于建立对象间的动态订阅-通知机制。它定义了对象之间的一对多依赖关系,当一个对象(被观察对象,也称为主题)的状态发生变化时,所有依赖它的对象(观察者)都会收到通知并自动更新。处理传感器数据更新硬件状态变化多模块协作。
2025-03-15 11:17:01
868
原创 嵌入式编程模型 | MVC模型
MVC(Model-View-Controller)是一种软件设计模式,它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller),这种分离有助于提高代码的可维护性、可扩展性和可测试性。模型(Model):专注于数据管理和业务逻辑。视图(View):负责呈现数据给用户,它是用户界面的部分。控制器(Controller):作为模型和视图之间的桥梁,接收用户的输入请求,根据请求调用相应的模型方法进行数据处理,然后选择合适的视图将处理结果展示给用户。
2025-03-10 22:39:53
911
原创 一个基于ESP32S3+LVGL的嵌入式多功能调试器!
Exlink_Tool是一个基于ESP32S3+LVGL的嵌入式多功能调试器。开源地址:作者:physicsexpert。
2025-03-06 10:00:57
355
原创 手把手教你搭建嵌入式容器化开发环境!
在嵌入式系统中,Docker 的应用趋势正随着物联网(IoT)、边缘计算和云原生技术的发展而快速演进。本篇文章我们只是介绍了 Docker 搭建开发环境的优势。开发环境标准化时间从 4 小时缩短至 5 分钟跨平台编译成功率从 65% 提升至 98%新成员上手时间减少 70%资源效率优化:Docker 通过容器化技术实现应用隔离,相比虚拟机(VM)更轻量,适合嵌入式设备的低功耗、低算力场景。例如,ARM 架构的边缘设备通过 Docker 运行微服务,可减少资源占用。跨平台部署。
2025-03-03 23:21:01
995
原创 嵌入式开发中的PlantUML图表应用
大家好,我是杂烩君。在嵌入式开发中,设计文档和系统架构图是沟通需求、梳理逻辑的核心工具。但传统的拖拽式绘图工具效率低、难以维护,而PlantUML通过的方式,完美解决了这一问题。它不仅支持UML图,还能绘制网络拓扑、状态机等嵌入式常用图表,!今天我们就来分享如何用PlantUML进行嵌入式图表设计!
2025-03-02 21:58:06
1898
原创 嵌入式开发的可靠方法论探析
嵌入式开发各个环节紧密相扣,从最初对系统需求的精准洞察,到硬件平台的审慎抉择,再到代码编写的精雕细琢、测试调试的严苛把关,以及上线后的持续优化维护,每一步都承载着产品的品质与未来。作为嵌入式软件开发从业者,遵循可靠的方法论能助力我们打造出稳定可靠、性能卓越的嵌入式软件产品。
2025-01-09 19:52:27
813
原创 一个基于优先级协作式调度的嵌入式操作系统
github链接:https://github.com/kmilo17pet/QuarkTSQuarkTS是一款开源的嵌入式操作系统,旨在为小型嵌入式应用程序提供现代化的开发环境,帮助开发者构建稳定、可预测的事件驱动型多任务软件。优先级协作式调度:任务自行管理生命周期,避免了抢占带来的复杂性,减少了重入问题。时间控制:提供定时任务和软件定时器,方便实现时间相关的操作。任务间通信机制:提供队列、通知、事件标志等机制,实现不同任务之间的有效通信。状态机支持:提供分层状态机支持,简化复杂逻辑的实现。
2024-12-02 22:35:20
838
原创 一个非常轻量的嵌入式日志库!
github链接:log.c是一个轻量级的日志库。一个用 C99 实现的简单日志库,这意味着它应该可以在任何支持 C99 标准的平台上编译和运行,如我们的嵌入式系统中。使用C99标准,适用于嵌入式。支持静默模式。支持日志级别设置。支持ANSI颜色编码。线程安全设计,允许设置锁机制。
2024-11-24 12:33:21
732
原创 一个非常轻量的嵌入式线程池库!
线程池(Thread Pool)是一种基于池化技术的多线程处理形式,用于管理线程的创建和生命周期,以及提供一个用于并行执行任务的线程队列。线程池的主要目的:线程复用:线程池中的线程可以被重复利用,用于执行多个任务,避免了频繁创建和销毁线程的性能开销。提高响应速度。假如创建线程用的时间为T1,执行任务用的时间为T2,销毁线程用的时间为T3,那么使用线程池就免去了T1和T3的时间。资源控制:线程池可以限制系统中线程的最大数量,防止因为线程数过多而消耗过多内存,或者导致过高的上下文切换开销。
2024-11-24 12:32:05
877
原创 推荐一个好用的文件同步工具!
Syncthing是一款免费开源的文件同步工具,它采用P2P(点对点)技术直接在设备间进行通信,无需依赖传统的云存储或中间服务器,从而确保了数据的安全性和隐私性。
2024-10-29 23:53:56
926
原创 推荐一个嵌入式 RPC 通信框架
RPC(Remote Procedure Call,远程过程调用)机制是一种常用的通信机制。实际上就是要像调用本地的函数一样去调远程函数。RPC机制,在互联网中应用得比较广泛。在我们嵌入式中,把传输层拓展到IPC、TPC/IP、UART、USB等,很多场景下也都可以用得上。如:需要发送确认的场景,比如发送某个数据,需要对端回复一个数据进行确认,这种场景,我们可以在应用上进行实现,随着协议越加越多,对应的回复的代码也越来越多,但基本都是很相似的代码。
2024-10-26 14:33:53
755
原创 智元开源机器人中间件AimRT
AimRT的开源,是智元机器人对机器人技术发展的又一次贡献。它不仅为嵌入式行业相关工作者和学生提供了一个高效、灵活的开发工具,更为整个机器人行业的发展注入了新的活力。随着更多企业和开发者的参与,AimRT将不断壮大其生态系统,推动机器人技术的不断创新与发展。让我们共同关注AimRT!
2024-09-26 09:01:00
1511
原创 分享一个代码生成器编写思路!
大家好,我是杂烩君。中,李先静前辈提到一点:让电脑去做单调重复的工作。这点让我很受启发,在工作中需要这类重复性的工作时,我也会编写代码生成器来帮我处理。最近,又完成了一个代码生成器的开发,一键生成大部分原本需要靠体力输出的相似代码,极大地提高了开发效率。业内知名的代码生成器有很多,如:STM32CubeMX生成STM32基础库代码、project_generator生成器生成基础工程、protoc生成protobuf协数据格式代码等。
2024-09-16 13:38:22
300
原创 嵌入式C编程新境界:解锁结构体保护绝技,让你的代码坚如磐石,无懈可击!
C/C++中不完全类型有三种不同形式: void、未指定长度的数组以及具有非指定内容的结构和联合。使用不完全类型的指针或引用,不需要知道类型的全部内容。比如:此时的array就是一个不完全类型的数组,一般这样的数组声明会放在.h中,而其定义放在.c中,在定义的时候在给出数组的具体长度,若之后有需要改变数组的长度时,直接改.c里的就可以,对外的.h就保持原样不用修改。用数组来说明可能还是有点不太好理解,下面我们用结构体的例子来做说明。
2024-07-24 23:12:45
811
原创 低功耗嵌入式软件设计的要点!
硬件产品,低功耗设计是提升产品竞争力的关键因素之一。低功耗设计的具体实现方式涉及到多个部分:硬件设计、软件设计、散热设计等方面。本篇文章我们着重关注设计的一些要点。
2024-07-15 23:26:19
981
原创 工具 | 强大的Shell脚本静态分析工具
ShellCheck是一个广受欢迎的开源工具,专为Shell脚本开发者设计,旨在帮助发现并修正脚本中的错误。它能够静态分析bash、sh、ksh和dash等多种Shell脚本,通过提供详细的警告和建议,帮助开发者提高脚本的可靠性和可维护性。ShellCheck不仅检查语法错误,还能识别出潜在的逻辑错误、不规范的编码习惯以及安全漏洞,是Shell脚本开发过程中的得力助手。Github地址:https://github.com/koalaman/shellcheck。
2024-07-14 23:05:38
587
原创 嵌入式软件如何记录用户行为?
的例子:我们基于Linux C,使用POSIX线程(pthread)来创建单独的线程,并使用POSIX消息队列来接收来自其他线程的开机次数及按键埋点事件。同时,我们将使用。
2024-07-14 23:02:22
923
原创 Zephyr 会成为物联网时代RTOS的佼佼者?
Zephyr RTOS是Linux基金会下的一个开源项目,以其高效、灵活、安全的特点,在实时操作系统领域崭露头角,成为物联网设备开发的首选之一。基于Apache 2.0许可。官网:https://www.zephyrproject.org/代码仓:https://github.com/zephyrproject-rtos/zephyr。
2024-07-06 00:33:14
2322
原创 常用的Git commit 提交规范!
在我们嵌入式开发中,版本管理工具Git已经成为不可或缺的一部分。Git帮助我们记录代码变更历史,提供了强大的代码协作开发功能。初学时,我们基本都是按照下面的格式这么来写commit信息的吧?甚至有些公司的commit信息也很随意也类似于上面这样的。这样的commit信息包含的信息比较有限,不利于后续的版本追溯。其实,为了确保团队成员能够更高效地协作,并且保持代码库的整洁和有序,需要团队各成员遵循达成一致的commit提交规范。
2024-07-04 21:45:57
1171
原创 C语言开发调试利器 | Sanitizer检测器
Sanitizer是由Google发起的开源工具集,用于检测内存泄露等问题。链接:https://github.com/google/sanitizers/wiki/它包括了AddressSanitizer、MemorySanitizer、ThreadSanitizer、LeakSanitizer等多种工具。这些工具最初是LLVM项目的一部分,后来也被GNU的GCC编译器支持。
2024-04-07 22:39:15
1353
原创 如何快速开发一个上位机?aardio了解一下
我们的资料仓库下面之前有一位小伙伴留言:杂烩君之前偶然间知道aardio这么一个工具,但没有实际去了解过。本期花点时间来了解、学习一下aardio,看看aardio是不是如这位朋友所说的这是一个不错的工具。
2024-03-17 10:24:47
2973
原创 嵌入式处理器微架构与指令集
作为最低的授权等级,拥有使用授权的用户只能购买已经封装好的ARM处理器核心,而如果想要实现更多功能和特性,则只能通过增加封装之外的DSP核心的形式来实现(当然,也可以通过对芯片的再封装方法来实现)。3、ARM和苹果的渊源很深,当年苹果是ARM的创始股东之一,后来苹果陆续卖掉了ARM的股票,再后来苹果基于ARM的架构开始大搞自研芯片。系统设计,低耗电节能,非常适用移动通讯领域。内核层级的授权是ARM公司设计出不同的微架构,其他芯片公司可以购买这些微架构,再添加一些自己的一些外设模块,就可以设计出一个芯片。
2024-03-15 11:00:00
1220
原创 汇总嵌入式中一些实用的辅助工具!
之后又重新自研,不仅支持 C/C++,还支持 C#,Lua 语言,在发掘 C/C++ 空指针、越界、未初始化、C#空引用、Lua变量未初始化等比较有效。轻量高效:小熊猫C++基于QT和C++语言开发,使用内置的轻量级代码分析器进行智能语法分析,运行时无需大量的内存和CPU资源,在低配置机器上也能获得流畅的运行体验。生产力提升:通过集成自动缩进、智能代码补全、智能语法高亮和实时语法检查等功能,小熊猫C++提供了流畅的代码编辑体验,可以大幅度提升代码编写的效率。、可视化的、对比及合并工具。
2024-03-14 08:30:00
893
原创 学嵌入式要学到什么程度才好找工作?
智能家居行业应用的相关技术可能有:WiFi蓝牙等无线通信、MQTT等物联网相关协议、物联网操作系统、物联网安全、传感器数据采集处理、物联网云平台等。机器人行业应用的相关技术可能有:传感器数据采集处理、电机控制、ROS机器人操作系统、规划与运动控制、WiFi蓝牙等无线通信、图像识别、语音识别等。理解整体框图、掌握基础外设如:GPIO、UART、TIM、ADC、DAC、I2C、SPI的裸机编程及相关原理、应用。再学习Linux下的应用开发知识:多线程编程、多进程编程、文件I/O编程、网络编程等。
2024-03-13 12:00:00
736
1
原创 实用的嵌入式代码优化技巧与经验分享!
使用指针的方式写代码会比柔性数组的方式会繁琐一些,特别地,如果在释放内存的时候把顺序弄反了,则结构体里的指针成员所指向的内存就释放不掉,会造成内存泄露。使用内联函数替换重复的短代码,一方面,可以避免函数的回调,加速了程序的执行,利用指令缓存,增强局部访问性;尽可能把长的有依赖的代码链分解成几个可以在流水线执行单元中并行执行的没有依赖的代码链,提高流水线的连续性。在多重循环中,应当将最长的循环放在最内层, 最短的循环放在最外层,以减少 CPU 跨切循环层的次数。另一方面,查表法的代码往往比常规法要简洁些。
2024-03-12 09:00:00
1084
2
原创 来了解一下较受欢迎的Git可视化管理工具!
大家好,我是杂烩君。Git版本管理工具是我们日常开发中常用的工具,熟练使用它可以提高我们的工作效率。老司机们常常使用命令行的方式进行操作,新手可借助可视化工具来进行过渡,命令行与可视化工具结合使用来加深对Git的熟悉程度。
2024-03-11 11:00:00
565
原创 超轻量的嵌入式数据库!
是一款超轻量级的嵌入式数据库,专注于提供嵌入式产品的数据存储方案。与传统的基于文件系统的数据库不同,FlashDB 结合了 Flash 的特性,具有较强的性能及可靠性。如今,物联网产品种类越来越多,运行时产生的数据种类及总量及也在不断变大。FlashDB 提供了多样化的数据存储方案,不仅资源占用小,并且存储容量大,非常适合用于物联网产品。:是一种非关系数据库,它将数据存储为键值(Key-Value)对集合,其中键作为唯一标识符。TSDB 数据具有时间戳,数据存储量大,插入及查询性能高。
2024-03-10 11:00:00
891
原创 8个很受欢迎的 C 语言项目
xmake 是一个基于 Lua 的轻量级跨平台构建工具,使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能快速入门,能够让用户把更多的精力集中在实际的项目开发上。是一种轻量级的数据交换格式。,是Google公司开发的一种数据格式,类似于XML能够将结构化数据序列化,可用于数据存储、通信协议等方面。zlog在效率、功能、安全性上大大超过了log4c,并且是用c写成的,具有比较好的通用性。的缩写,即初始化文件。
2024-03-09 12:27:18
1978
原创 汇总一些常用的终端工具!
在各种远程登录工具中,Putty是出色的工具之一,Putty具有完全免费、小巧绿色、无需安装、操作简单等特点。的SSH/Sftp/Shell/Telnet/Serial 客户端,支持 Windows、Linux 和 macOS。集SSH工具、服务器管理、远程桌面加速的良心软件,同时支持Windows,macOS,Linux。集成本地文件管理器,支持移动到、复制到、复制自、删除、重命名、新建文件/目录等。集成sftp、scp客户端,支持下载、上传、删除、重命名、新建文件/目录等。** 的 SSH 客户端。
2024-03-06 00:51:14
2951
JSON天气数据包解析
2018-02-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人