适用于嵌入式开发的纯C工具库nx-c-util 📅 发布时间:2026/8/22 16:16:06 👁 浏览次数: 文章目录前言nx-c-util简介目录结构模块核心模块中间件模块算法模块设备模块使用构建并运行示例选择生成器许可证前言最近换工作新公司中目前嵌入式方向的需求还未定型目前来说就是任何嵌入式方向都会有需求。以前工作用的一些轮子不太适合当下的环境所以这段时间重新造了一些轮子。目前来说我对于轮子的需求主要有下面几点可以在主流的各类处理器平台上使用不管是裸机、RTOS、还是Windows、Linux等平台上都可以使用没有任何外部依赖对于简单的组件可以单独拿出来独立使用基于这些组件开发的项目耦合度也尽量小基于上面的一些需求设计了纯C开发的工具库nx-c-util适用于裸机及操作系统环境无任何依赖。项目地址https://github.com/NaisuXu/nx-c-util目前设计上最核心设计点如下分级静态内存池提供无碎片的alloc/free功能适用于任何数据类型的队列一个基于引用计数的消息组件这个是基于上面两个的是这个库的核心组件目前实际项目中各个业务间通讯主要就是基于这个组件的靠消息来驱动业务而不是通过函数调用目前整个库还在不停迭代中不过核心的组件应该不会特别大的改动了更多的是扩展各种独立功能件、中间件、设备驱动等。目前已经在多个项目中使用开发效率整体还是非常不错的。更多内容可以直接看项目或者参考下面介绍。nx-c-util简介一个用纯 C 实现的工具库为嵌入式开发提供简单、便捷的基础构件。每个组件都遵循同样的设计理念纯静态—— 所有存储都由调用者提供库不使用任何动态内存也不依赖malloc/free适用于无堆的目标平台。确定性—— 操作可预测、恒定耗时、无隐藏开销非常适合实时系统。可移植—— 标准 C11无平台相关依赖在 Windows、Linux、macOS 上都能构建和运行。目录结构nx-c-util/ ├── src/ │ ├── core/ # 核心构件list, queue, ringbuf, timer, coro, ref_msg, mem_pool, lock, log │ ├── middleware/ # 协议解析器和协议栈modbus_rtu, modbus_rtu_slave, can_bus, tp_sdu, can_isotp │ ├── algo/ # 算法crc, sha256 │ └── device/ # 平台无关的设备驱动ws2812 └── examples/ ├── core/ # 核心模块使用示例 ├── middleware/ # 中间件模块使用示例 ├── algo/ # 算法模块使用示例 └── device/ # 设备驱动使用示例每个模块都设计为可独立使用。在你的项目中集成时只需拷贝所需的.c和.h文件即可。头文件使用单层 include如#include nx_list.h无子目录前缀因此把拷贝文件所在的目录加入你的 include 路径即可。模块核心模块nx_list — 侵入式双向循环链表nx_queue — 通用环形缓冲FIFO队列nx_ringbuf — 面向字节的环形缓冲nx_tiered_mem_pool — 分级静态内存池nx_ref_msg — 引用计数的零拷贝消息nx_timer — 软件定时器管理器nx_coro — 无栈协程nx_lock — 可插拔的临界区抽象nx_log — 静态异步明文日志中间件模块nx_can_bus — CAN / CAN FD 帧结构与辅助函数nx_modbus_rtu — Modbus RTU 帧结构与 CRCnx_modbus_rtu_slave — 事件驱动的 RTU 从站帧 → 订阅分发nx_tp_sdu — 传输层服务数据单元nx_can_isotp — ISO 15765-2DoCAN / ISO-TP分段传输算法模块nx_crc — CRC-8 / CRC-16 / CRC-32 校验nx_sha256 — SHA-256 密码学哈希设备模块nx_ws2812 — WS2812/WS2812B RGB LED 灯带驱动使用库的源码在src/下按类别组织src/core/、src/middleware/、src/algo/、src/device/可以直接拖进你的项目 —— 大多数模块除了标准 C 外没有依赖可以独立使用。头文件使用单层 include如#include nx_list.h因此把拷贝文件所在的目录加入你的 include 路径即可。examples/core/、examples/middleware/、examples/algo/和examples/device/目录包含每个模块可运行的用法示例通过 CMake 驱动因此在任何平台上都以相同方式构建。构建并运行示例在仓库根目录下cmake-S.-Bbuild cmake--buildbuild然后运行生成的可执行文件Linux / macOS./build/nx_core_examples# 核心模块list, queue, ringbuf, mem_pool, ref_msg, timer, coro./build/nx_middleware_examples# 中间件模块modbus_rtu_slave./build/nx_algo_examples# 算法模块crc, sha256./build/nx_device_examples# 设备驱动ws2812Windows (MinGW / MSYS)./build/nx_core_examples.exe ./build/nx_middleware_examples.exe ./build/nx_algo_examples.exe ./build/nx_device_examples.exeWindows (Visual Studio / MSVC)—— 多配置生成器会把二进制放在按配置划分的子目录中./build/Debug/nx_core_examples.exe ./build/Debug/nx_middleware_examples.exe ./build/Debug/nx_algo_examples.exe ./build/Debug/nx_device_examples.exe选择生成器cmake -S . -B build使用你平台的默认生成器多数情况下已经够用。要显式指定一个传入-G# Windows, MinGW toolchaincmake-S.-Bbuild-GMinGW Makefiles# Windows, Visual Studio 2022cmake-S.-Bbuild-GVisual Studio 17 2022# Linux / macOS, Unix Makefilescmake-S.-Bbuild-GUnix Makefiles# Any platform with Ninja installedcmake-S.-Bbuild-GNinja需要 CMake 3.10 或更新版本以及一个支持 C11 的编译器GCC、Clang 或 MSVC。许可证本项目采用 MIT 许可证详见 LICENSE 文件。