- 博客(48)
- 收藏
- 关注
原创 解决 CJSON 浮点数精度问题:从 `cJSON_AddNumberToObject` 到 `cJSON_AddRawToObject`
在使用 CJSON 库处理浮点数时,开发者常遇到浮点数小数位精度丢失的问题,例如 3.1400 被简化为 3.14 或 5.0 显示为 5。这在高精度需求的场景(如金融、物联网)中会引发严重问题。本文分析了 cJSON_AddNumberToObject 的局限性,指出其依赖 snprintf 的 %g 格式符,会自动删除无效小数位,导致数据精度丢失。为解决这一问题,推荐使用 cJSON_AddRawToObject,通过直接传递格式化后的数值字符串,绕过默认序列化逻辑,实现浮点数精度的精确控制。文章还提供
2025-05-12 22:04:18
354
1
原创 为什么Confluence成为技术团队的协作利器?深度解析与实战指南
作为 Atlassian 生态中知识协同领域的关键拼图,它不仅是“另一个Wiki工具”,更是通过结构化设计、深度集成和开发者友好特性,成为技术团队构建“单一真相源”(Single Source of Truth)的核心基础设施。而一套API规范则需要与代码库和测试用例实时同步。• Action项跟踪:复盘结论中的改进项自动转为Jira任务,责任人、截止日期清晰可见,避免“会上一套,会后一套”。• 工具链割裂:项目管理用 Jira,代码托管用 GitHub,但两者与文档平台毫无关联,信息孤岛严重。
2025-05-05 21:33:41
1107
1
原创 Zephyr、FreeRTOS、RT-Thread 事件组(Event Groups)对比分析
• 静态分配减少内存碎片,适合资源受限设备,但事件位数固定为 32 位,灵活性稍低。• 动态分配灵活但可能引入内存管理开销,默认 24 位事件位(可配置为 32 位)。• 优势: 完善的组件生态(文件系统、网络栈)、友好的开发工具(ENV 配置工具)。• 推荐场景: 多核/复杂外设的物联网设备,需高实时性和安全认证(如工业控制)。• 推荐场景: 快速原型开发或需要丰富中间件的场景(如智能家居、消费电子)。• 动态分配支持事件对象池管理,减少重复创建开销,32 位事件位。
2025-04-26 13:39:10
659
1
原创 Zephyr、FreeRTOS、RT-Thread 邮箱(Mailbox)对比分析
• 选择RT-Thread当:需传输复杂数据或自动内存管理,适合中大型嵌入式应用(如智能家居主控)。• 多核异构系统:如双核MCU(Cortex-M4 + Cortex-M0+)间的核间通信。• 选择Zephyr当:需要多核通信或超低延迟的小消息传递(如中断服务程序向任务发送信号)。• 轻量级传输:消息内容限制为4字节(32位架构)或指针,适用于小数据或共享内存指针传递。• 灵活数据支持:可传输任意类型数据(如结构体),需指定消息长度。• 低内存开销的小消息传递:如传感器数据(温度值)或事件标志传递。
2025-04-19 19:36:42
543
原创 Zephyr、FreeRTOS、RT-Thread 消息队列对比分析
基于动态内存分配的消息队列控制块(Queue Control Block),支持先进先出(FIFO)和后进先出(LIFO)模式。:以轻量级著称,资源占用低(最小内核约6KB RAM),但在复杂场景下调度效率略逊于Zephyr。:资源占用极低(最小内核仅需5KB RAM),适合资源受限的MCU(如STM32F0系列)。:高安全性(支持内存隔离和加密通信),适合物联网设备(如智能家居、工业传感器)。◦ 支持值传递(数据拷贝)和引用传递(指针传递),灵活适应不同场景。:缺乏动态消息支持,复杂场景需自行扩展。
2025-04-16 16:04:03
1123
原创 Zephyr、FreeRTOS、RT-Thread 信号量对比分析
•选择Zephyr当:需要高精度超时或复杂事件监听(如同时等待信号量和消息队列)。•选择FreeRTOS当:追求极简设计和低延迟,适合小型单核嵌入式系统。•选择RT-Thread当:需多核支持或防死锁机制,适合中大型复杂系统。开发者应根据任务竞争强度、硬件资源(如内存和CPU核数)及实时性需求选择信号量实现。在高竞争场景中,建议实测目标平台的实际性能,避免理论数据偏差。
2025-04-15 15:12:30
997
原创 Zephyr、FreeRTOS、RT-Thread 低功耗模式对比分析
•选择Zephyr当:需要复杂电源策略和全自动设备管理,适合对续航要求苛刻的场景。•选择FreeRTOS当:项目资源受限且低功耗需求简单,适合快速开发。•选择RT-Thread当:需灵活定制功耗层级或混合软硬件唤醒逻辑,适合深度优化的工业应用。
2025-04-10 19:33:07
410
原创 Zephyr、FreeRTOS、RT-Thread 定时器区别分析
•选择Zephyr当:需要硬实时性和高精度控制,且硬件资源允许配置专用定时器外设。•选择FreeRTOS当:项目资源有限且定时需求简单,适合快速原型开发。•选择RT-Thread当:需要灵活调整定时策略或结合硬件/软件混合定时模式,尤其适合复杂应用场景。
2025-04-09 22:10:15
830
原创 Zephyr、FreeRTOS、RT-Thread 任务创建对比分析
•Zephyr企业级功能与安全性见长,适合需要预集成协议栈和对可靠性要求高的场景。•FreeRTOS轻量灵活,适合资源受限且无需复杂中间件的项目。•RT-Thread开箱即用的丰富组件,适合快速开发和社区驱动的项目。
2025-04-08 20:32:25
1203
1
原创 Zephyr与Linux核心区别及适用领域分析
•选择Zephyr当✅ 设备资源极度受限(内存<1MB)。✅ 需要硬实时性(如电机控制)。✅ 开发周期短(单一固件易部署)。•选择Linux当✅ 需要运行复杂应用(如Python脚本)。✅ 依赖丰富软件生态(如Docker容器)。✅ 硬件性能充足(CPU > 500MHz,内存>128MB)。补充说明:两者并非完全对立,混合架构逐渐兴起(如Zephyr作为Linux的协处理器OS,通过RPMSG通信),兼顾实时性与复杂应用处理。
2025-04-07 21:56:37
1546
1
原创 Zephyr实时操作系统初步介绍
Zephyr是由Linux基金会托管的开源实时操作系统(RTOS),专为资源受限的物联网设备设计。其核心特性包括模块化架构跨平台兼容性安全性优先以及丰富的连接协议支持。基于Apache 2.0协议,Zephyr允许商业和非商业用途的自由开发,适用于从8KB内存的传感器到复杂网关的多样化场景。
2025-04-03 21:02:35
1146
5
原创 RT-Thread ulog 日志组件深度分析
RT-Thread ulog 通过极简设计与灵活扩展性,成为嵌入式日志系统的优选方案。移植时需重点关注内存配置与后端适配,功能上可结合多级过滤与异步机制平衡实时性与资源效率。对于深度依赖RT-Thread生态的项目,ulog 不仅能替代传统printf调试,还能为系统可靠性分析与运维提供强大支撑。
2025-04-03 18:30:54
888
原创 FreeRTOS 与 RT-Thread 消息队列对比分析
•FreeRTOS更适合对实时性和确定性要求严格的场景,其阻塞机制和中断处理更精细化。•RT-Thread在资源管理灵活性和系统扩展性上占优,适合需要复杂通信及多组件集成的应用。• 选择时需权衡实时性需求、内存约束及开发复杂度,例如低资源MCU优先FreeRTOS,复杂系统选RT-Thread。
2025-04-03 14:41:39
504
原创 FreeRTOS 与 RT-Thread 邮箱对比分析
•选择 FreeRTOS 的条件项目资源极度紧张、需在中断中高效发送简单数据、无需多任务同步。•选择 RT-Thread 的条件需多任务协作、支持复杂超时策略、要求静态内存分配或与中间件(如文件系统)深度集成。核心差异FreeRTOS 的邮箱更偏向轻量化和中断驱动,而 RT-Thread 提供标准化模块和丰富的同步策略,适合复杂系统设计。
2025-04-03 12:32:28
417
原创 FreeRTOS 与 RT-Thread 事件组对比分析
•选择 FreeRTOS 事件组的条件项目资源紧张(RAM < 10KB)、需高频中断响应、同步逻辑简单(如单事件触发)。•选择 RT-Thread 事件集的条件需复杂事件组合(如多条件协同)、与中间件深度集成、要求高可配置性(如自动清除标记)。关键差异总结FreeRTOS 以轻量高效见长,适合单一事件驱动的场景;RT-Thread 以灵活性与扩展性取胜,适合多任务协同的复杂系统。开发者应根据实时性要求、硬件资源及生态需求综合选择。
2025-04-02 17:13:17
929
原创 嵌入式程序员觉醒:抛弃手动测试!Unity框架实战
支持17种数据验证方法,包括精准的整数比对(TEST_ASSERT_EQUAL_INT)、浮点容差校验(TEST_ASSERT_FLOAT_WITHIN)及内存块对比(TEST_ASSERT_EQUAL_MEMORY)等待。Unity仅需unity.c、unity.h、unity_internals.h三个核心文件(约500KB),可直接集成到Keil、IAR等嵌入式IDE,内存占用低于1%的典型MCU资源。✅ 测试执行速度提升10倍(从每日1次到每小时1次)✅ 缺陷逃逸率降低85%。
2025-04-02 09:36:56
970
原创 AI对IT技术的影响:协同进化中的需求跃迁
AI与IT的关系,正如汽车与马车的更替:淘汰的并非“移动”需求,而是满足需求的方式。当人类将AI视为“认知外骨骼”,便能突破“机器替代人”的焦虑,转而探索如何用AI放大创造力、用IT构建新文明。这种协同进化,正是「第三选择」在科技革命中的终极诠释——所有困局都是伪命题,答案永远存在于认知边疆之外。
2025-04-01 11:43:31
495
原创 FreeRTOS 与 RT-Thread 信号量对比分析
•FreeRTOS:以实时性和轻量化为核心,适合资源受限场景及需严格优先级控制的系统。•RT-Thread:以功能完备性和开发便捷性见长,适合复杂中间件集成及多线程协作场景。•关键差异:FreeRTOS通过优先级继承和队列复用优化性能,RT-Thread通过模块化设计提升扩展性。开发者需根据实时性要求、硬件资源及生态需求综合选择。
2025-04-01 11:27:38
929
原创 FreeRTOS与RT-Thread内存分配对比分析
选择FreeRTOS的条件项目资源紧张(如RAM < 10KB)、需快速集成AWS云服务、动态内存需求简单且碎片风险可控。选择RT-Thread的条件需复杂中间件支持(如GUI、网络协议栈)、高频小对象分配(SLAB优化)、高可靠性认证需求。通过对比可见,两者在内存管理上各有侧重:FreeRTOS以轻量灵活见长,RT-Thread以功能完备和安全可靠取胜。开发者需根据实时性、硬件资源、生态需求综合选择。
2025-03-29 22:39:36
566
原创 FreeRTOS与RT-Thread定时器的对比分析
FreeRTOS优势:轻量化设计,适合资源受限场景;中断嵌套管理更灵活。RT-Thread优势:双模式适配不同实时性需求,组件生态丰富,支持更复杂的定时器类型。选择建议若需高精度定时或与复杂中间件(如文件系统、网络协议栈)集成,优先选RT-Thread。若系统资源紧张且仅需基础定时功能,FreeRTOS更具优势。
2025-03-29 09:12:40
591
原创 FreeRTOS 五种内存管理算法深度对比分析
FreeRTOS 内存管理方案通过差异化设计覆盖了从8位单片机到高性能Cortex-M7的全场景需求,开发者需结合。
2025-03-27 20:57:33
942
原创 FreeRTOS 定时器结构体 xTIMER 深度解析
用户自定义标识符(如指向任务数据的指针),用于在共享回调函数中区分不同定时器。的就绪列表,由该任务统一执行回调函数,避免在中断服务程序(ISR)中处理复杂逻辑。跟踪工具(如 FreeRTOS+Trace)分配的 ID,需启用。是 FreeRTOS 定时器模块的核心数据结构,用于实现。配置(通常高于应用任务),确保高优先级定时事件及时响应。创建单次定时器检测外设响应超时,超时后触发错误处理回调。定时器到期时执行的回调函数指针。机制,通过内核调度器实现精准的定时回调触发。支持多定时器共享同一回调函数,通过。
2025-03-27 20:27:43
619
原创 FreeRTOS 队列指针结构体 QueuePointers_t 深度解析
是 FreeRTOS 队列数据结构(xQUEUE)中用于管理循环缓冲区读写指针的关键组件。其设计目标是实现高效的 FIFO/LIFO 数据流控制,并支持多任务安全访问。// 队列存储区物理末尾标记(循环边界)// 最后一次读取位置(支持 FIFO/LIFO 切换)
2025-03-26 21:50:41
298
原创 FreeRTOS 队列结构体 xQUEUE 深度解析
特性数据结构复用队列/信号量/互斥量共用同一结构体4独立结构体设计内存管理支持动态/静态分配(45主要静态分配优先级策略优先级继承(仅互斥量模式)4优先级继承 + 天花板策略实时性优化锁定计数器减少上下文切换34中断延迟更低(专为硬实时优化)
2025-03-26 21:43:42
344
原创 FreeRTOS 互斥信号量结构体 SemaphoreData_t
**< 持有互斥量的任务句柄 *//**< 递归调用计数器 */该结构体是 FreeRTOS 中递归互斥信号量(Recursive Mutex)的核心数据结构,用于解决同一任务多次获取互斥量时的资源管理问题。其设计目标是为关键资源提供嵌套锁机制,允许持有互斥量的任务多次进入临界区而不会引发死锁。
2025-03-25 19:38:37
343
原创 FreeRTOS 任务创建函数 xTaskCreate 与 xTaskCreateStatic 深度对比分析
开发者可在灵活性与确定性之间取得平衡,适配不同嵌入式场景需求。(动态内存分配)**(静态内存分配)**
2025-03-25 19:20:25
1001
原创 C语言通过结构体嵌套继承的两种实现方式对比
C语言通过结构体嵌套与函数指针父类作为首成员的方案以高效简洁见长,适合对性能敏感的底层开发;rt_container_of宏提供更高的布局自由度,适用于复杂框架设计。两者结合使用,可在嵌入式系统、操作系统内核等领域构建高度模块化、可扩展的架构,尽管需开发者手动管理类型安全与内存布局,但其工程价值在资源受限场景中无可替代。
2025-03-24 21:29:38
1288
原创 函数指针数组深度解析
函数指针数组是由相同函数签名的函数指针组成的数组,其本质是将多个函数地址集中管理,通过索引实现动态调用。返回值类型 (*数组名[数组大小])(参数列表);// 静态初始化。
2025-03-24 20:56:16
2163
原创 RT-Thread的环形块缓冲区
,匹配CPU缓存行提升访问效率(网页3中设备驱动层优化技巧)。存储块元数据(如块长度、校验码),与数据存储区分离提升安全性。(块集合)实现高效内存分配。采用三级内存管理机制,通过。建议按64字节对齐(
2025-03-23 21:39:57
276
原创 RT-Thread环形缓冲区
利用镜像位的原子性变化,可在单生产者-单消费者(SPSC)场景下实现无锁操作。可结合SIMD指令(如ARM NEON)优化批量读写,提升吞吐量。)和紧凑结构体设计,减少CPU缓存未命中。的1位标志位,结合31位的读写索引(按64字节对齐以匹配缓存行。
2025-03-23 21:09:54
323
原创 串口→DMA→内存→空闲中断三级联动架构
DMA以循环模式从串口DR寄存器自动搬运数据到内存缓冲区,无需CPU干预。当DMA缓冲区半满或全满时触发中断,实现双缓冲机制。使用定时器监控数据包间隔。若超过设定时间(如3.5字符周期)无新数据到达,触发超时中断,标志数据帧接收完成。通过清除ORE(Overrun Error)标志防止数据溢出,在DMA重新初始化前校验错误状态。
2025-03-22 22:47:10
198
原创 定时器→ADC→DMA→内存三级联动架构
使用定时器(如TIM2)的更新事件(UEV)触发ADC规则组转换,通过DMA实现自动搬运至内存缓冲区。三级联动架构,实现零CPU干预的周期性采样。
2025-03-22 22:38:06
989
原创 RT-Thread内存堆对象
字段在分配时被标记为特定值(如0x1EA0),释放时校验其完整性,防止野指针操作。,支持将多个物理上不连续的内存区域整合为统一的逻辑堆空间。形成独立链表,分配时快速定位可用块;RT-Thread内存堆管理通过。初始化,将物理内存分割为多个。指向所属内存池,使多个。,并构建初始空闲链表。链表形成统一逻辑堆。
2025-03-21 20:22:40
150
原创 RT-Thread内存池
实现快速分配/释放操作(时间复杂度O(1)),同时避免内存碎片化问题,尤其适用于实时性要求高的嵌入式场景。继承内核对象的公共属性(如名称、类型标识),使其可被RT-Thread内核统一管理。当内存池无可用块时,申请线程会被挂起并加入此链表,等待其他线程释放内存块后被唤醒。,用于高效管理固定大小的内存块。RT-Thread内存池是一种。
2025-03-21 13:39:37
389
原创 RT-Thread设备结构体
作为所有设备的基类,通过继承机制实现设备驱动的统一管理。,使不同设备(如串口、GPIO、I2C)可通过标准化接口接入系统。底层驱动根据设备类型实现具体行为,如串口的。RT-Thread设备模型基于。触发DMA传输,而GPIO的。直接操作端口寄存器。
2025-03-20 19:35:24
518
RT-Thread内核对象继承关系
2025-04-03
通信协议的报文解析过程可通过标准化封装实现高效统一的处理体系,其核心在于抽象共性规律并建立可配置的解析框架
2025-04-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人