Skip to content
Projekte

Luyi365/awesome-embedded has 228 GitHub stars and 17 forks. GitHot measured +1 stars in 24 hours. Last checked 2026-11-13 07:39 UTC. Last push 2026-10-27.

So werden diese Zahlen gemessen

Gemessener Sternzuwachs

in 24h
+1
in 7 days
Verlauf wird gesammelt
in 15 days
Verlauf wird gesammelt
in 1 month
Verlauf wird gesammelt

Nettoänderungen in überlappenden Zeiträumen, keine Tagessummen. Fehlende Messwerte bleiben leer. Sterne zeigen Interesse, nicht Qualität.

Über uns

嵌入式开源库速查表,快速定位所需功能。300+ libraries for embedded dev, modularly organized, covering the common ground.

Lernen

README.md

Original

Awesome Embedded Awesome

中文 | English

一个精心整理的嵌入式开源代码库集合,并按照功能进行了细致的分类,涵盖了💥绝大部分 的开发场景! 与大多数 awesome 库不同的是:除了对相关代码库进行收集整理,还对部分库的使用要点进行了记录📝。

一个好的开源项目是社区共同努力的结果🤗,如果下面有你感兴趣的部分,十分欢迎大家通过 Issues 进行留言:

  • 推荐或自荐好的嵌入式开源库(甚至代码片段也可以);
  • 为已记录的开源库编写使用心得(好的入门教程、踩过的大坑……总之你想让大家知道关于库的一些什么);
  • 文档中存在的错误以及一些建议(我们会积极对待任何好的想法);

分类细则&其他汇总库可查看✨额外部分。

TODO

  • 增加创客项目分类
  • 增加工具分类
  • 开放列表中需要权限的代码库

📚 内容

单功能

集功能

其他


引脚与控制库

按键

  • key_detect:简易的按键检测组件,采用按键注册方式,可单独设置各按键的单击/双击/长按属性。
  • key_module:简易的按键检测模块,采用事件回调,提供除矩阵按键外的其他基本功能。
  • FlexibleButton:稳定的按键处理库,一次扫描处理所有按键状态,带有多种按键事件触发,留有组合按键和中断触发实现说明。
  • MultiButton:状态机型按键库,基于面向对象方式设计思路,每个按键对象单独用一份数据结构管理。
  • cotKey:监听型按键识别库,比起其他按键库更加自由,可以实现单击、双击、多击、短按和长按等多种要求的功能。
  • key_board:采用按键注册的方式,默认使用堆内存,一次扫描和处理所有按键状态,带有矩阵键盘和组合的功能。
  • LwBTN:专业的按键事件管理库,配置丰富,功能全面。

LED

  • cotLed:轻量级的 LED 控制模块,可以实现 LED 灯多种模式状态(闪烁、呼吸、自定义等)。
  • led_module:基于面向对象和简单工厂模式的简单 LED 显示库,无自定义模式但带有颜色属性。

PID

  • pid_temperature_control:PID 温度控制,很好的一个示例,通过这个可以把 PID 控制发散至其他领域。

CNC

  • Grbl:行业著名的开源 CNC 代码,可用于激光切割机、自动手动写字机、钻孔机、涂鸦画家和古怪的绘图机等,是创客们的首选,也是行业标准。
  • µCNC:用于微控制器的通用 CNC 固件,保持功能紧凑及部件之间的模块化。

定时器与时间库

定时器

  • MultiTimer:模拟的软件定时器模块,取代传统的标志位判断方式,操作与硬件定时器几乎一致。
  • SmartTimer:裸机下十分好用的定时器调度器,除了基本轮询回调外,还可以设置轮询次数。
  • microseconds:微秒级别定时器库,有阻塞和非阻塞延迟。主要用于抽象同一个芯片上的不同时钟,使切换底层定时器时可以更便捷。
  • perf_counter:基于 Cortex-M 内核的 SysTick,不仅拥有基本的定时器功能,还具有代码段的周期测量、定时服务等功能,可作为普通时钟的功能扩展。

看门狗

  • LwWDG:轻量级的看门狗库,主要针对操作系统, 监视多个线程并在其中一个线程失败时重置系统。

时间相关

  • LwDTC:用于日期、时间和 cron 实用程序库,因为 Cron 仅支持数字,没有字符串,所以解析速度更快。

内存与文件系统库

内存管理

  • memory:功能极简的内存管理模块,仅提供内存申请与释放,无其他额外功能。
  • mem_malloc:简单实用的内存管理模块,不会产生内存碎片。
  • tlsf:TLSF 算法的堆内存分配库,支持动态添加、删除内存池区域,分配时间复杂度为 O(1),不注重线程安全。
  • LwMEM:专业内存管理库,类 C++ 封装函数,允许使用碎片内存,注重 RTOS 的线程安全。
  • jemalloc:高性能的内存分配器,适合处理多线程环境下大规模内存分配和释放的场景。
  • LWMalloc:适用于 Linux 的轻量级动态内存分配器,旨在替代默认分配器 ptmalloc,性能和内存使用量都更优。

读写封装层

  • flashMultipleErase:用 FLASH 模拟 EEPROM,采用顺序写入的方法,以实现更多的存储次数,延长存储寿命。
  • eepromfs:基于 EEPROM 的简易类文件数据读写库,它做的不属于真正的文件系统,而是把数据读写模拟成文件的方式。
  • Dhara:用于小型单片机的 NAND 闪存转换层(FTL)。主要用来对 FLASH 读、写、抹除操作的管理。处于 FLASH 设备与文件系统层之间。
  • kFlashFile:基于 NOR Flash 的轻量级文件数据存储方案,主要用于需要断电数据保存的项目。
  • esp_partition:ESP 旗下的分区表库,封装 SPI Flash 读写操作,允许以块为单位访问 flash。
  • NVS:ESP 旗下的非易失性存储库,主要用于在 flash 中存储键值格式的数据。配合 ESP 旗下的其他工具,支持加密、生成分区镜像等功能。
  • FlashStore:采用 A/B 双页 Flash 存储方式,以块访问,带有掉电保护,适合配置参数、低频更新的场景。

文件系统

  • FatFs:赫赫有名的文件系统库,极易移植,支持 exFAT 文件系统、64 位 LBA 和 GPT,可根据功能进行宏配置,注重线程安全。
  • JesFs:专为资源受限的嵌入式系统设计的轻量级串行 NOR 闪存文件系统,适用于各种物联网应用场景,例如数据采集、事件记录和固件更新等。
  • RanFs:轻量型文件系统模块,提供 POSIX 兼容的文件操作,注重高效和数据可靠性。
  • littlefs:专为微处理器设计的安全文件系统,具有掉电保护、擦写均衡、低资源消耗等功能。
  • SPIFFS:专为低内存(<=128MB)而设计文件系统,使用静态大小的 ram 缓冲区,具有擦写均衡等功能。
  • lwext4:提供适用于微控制器的 Ext2/3/4 文件系统,带有文件查找、抗断电能力,不具备磨损均衡功能。
  • UTFS:类 TAR 的微型嵌入式文件系统,旨在解决存储介质受数据变化而导致布局被破坏的问题,无目录、磨损均衡、日志等功能。

板级总线协议库

UART

  • LwOW:专业的 1-Wire 协议库,允许通过 UART 或单 GPIO 通讯,提供线程安全的 API。
  • MUDLink:将 UART 串口提升为一个链路/传输层,带有传输保证、流量控制和记录链路性能的统计信息等功能。

CDbus

  • CDBUS:一种简单高效的现场总线,基于且兼容 UART / RS-485 协议和硬件,引入了硬件分包和硬件仲裁等机制,各节点可以自由收发数据包。

Modbus

  • freemodbus:由 armink 移植的 modbus 协议栈,同时支持主机和从机的功能。
  • nanoMODBUS:精简的 modbus 库,可按需裁剪功能,旨在资源有限的环境中运行。

I2C

  • i2c_scanner:I2c 设备扫描库,能够扫描板载的 i2c 设备个数及设备地址。
  • i2cdevlib:使用 C++ 类的形式对 I2C 设备进行抽象,旨在方便 I2C 设备的接入和不同平台的移植。

SPI

  • SFUD:开源的串行 SPI Flash 通用驱动库,通过编写设备表,做到能适配各型号 Flash 芯片。

USB

  • TinyUSB:是一个用于嵌入式系统的开源跨平台 USB 主机/设备堆栈,设计为内存安全,没有动态分配,线程安全,所有中断事件都被延迟,然后在非 ISR 任务函数中处理。
  • CherryUSB:用于嵌入式系统(带 USB IP)的 USB 主从协议栈。可以移植各个平台,适用于自身不带 USB 协议栈的芯片。

板间通信

  • uart_stream:基于 FreeRTOS 和 cJSON 的串口数据流处理库,带有收发缓冲、组帧、请求-应答等功能,适用于板间通信。
  • ESSL:ESP 旗下的串行从机链路,该组件能让主机通过总线驱动和相应的协议与从机进行通信。也可以说就是双 mcu 通讯,只是在上面套了一层壳。
  • SACP:是 Snapmaker 设备的数据通信协议,基于 C++ 的专用于整机多设备的设备间通信。

数据结构与数据处理库

队列

  • CBUF:基于 C++ 的宏实现环形缓冲区,功能简单易用。
  • sys/queue:Linux、FreeBSD 中使用的队列、链表头文件,全部用宏来实现的,且能够链接任意类型,如结构体等。
  • byte_queue:支持任意类型的环形队列,带宏包装,使用简单。
  • queue:通用队列,支持任意数据类型,使用简单高效。
  • Ring-Buffer:环形缓冲库,适合没有指定存储大小的程序。
  • wl_queue:支持任意数据类型的环形队列,运用了 C 重载的技巧,注重线程安全。
  • RingBuffer:实用的环形缓冲库,功能完整,使用堆内存分配。
  • queue:简单的队列功能库,扩展性强,同时支持零拷贝读写队列(适用于大内存的单个元素,可以有效减少函数耗时)。
  • QueueForMcu:队列功能模块,适用于非 RTOS 系统,动态创建队列对象和缓冲区。
  • ConcurrentQueue:基于 C++ 的工业级无锁队列,无需锁也极其注重线程安全。
  • LwRB:专业的 FIFO 环形缓冲库,无动态内存分配,适用于 MDA 传输,注重线程和中断安全。
  • fifofast:针对 MCU 优化的 FIFO 库,旨在尽可能减少 CPU 和 SRAM 的消耗。

流

  • xprintf:嵌入式字符串函数,代替不足以实现常规 printf 功能,可以动态的将字符串写入不同外设。主要用途是与多个外设交互,而不是终端交互
  • CMSIS-Stream:ARM 官方出品的数据流处理组件,提供图形表示,适合专业级项目和多设备数据流处理。

数据结构集合

  • uthash:提供哈希、列表、环形等数据结构库,仅包含头文件。

数据库

  • cotParam:采用表驱动方式进行参数管理,包括缺省值、最小值和最大值等。
  • EasyFlash:Key-Value 型简易数据库,提供变量的 KV 配对,可 IAP 数据修改(可用于升级),log 存储等功能。
  • FlashDB:提供 KV 和 TS 两种数据库,比起 EasyFlash 更专注于数据库本身,而不提供过多的额外功能。
  • Nanopb:轻量的、支持 C 语言的 Protobuf,Protobuf 是 Google 公司开发的一种数据格式。可用于数据存储、通信协议等方面,且不依赖于语言和平台,也就是说可以在不同设备、语言端进行数据通讯。
  • ITTIA DB:功能强大的实时嵌入式数据库,主要用于嵌入式系统和物联网设备,用于在设备上本地监控,存储和分析时间序列数据,需要商业许可。
  • linq4c:在 C 语言里实现了 C# 的 linq 方法。
  • SQLite:业界用的最多的嵌入式标准的数据库,使用 SQL 语法,可使用磁盘文件。

压缩库

  • lz4:极快的无损压缩算法库,适合通信时的数据压缩。
  • heatshrink:超低资源消耗的嵌入式解压缩库。相关文档较少。
  • TJpgDec:针对嵌入式系统优化的 JPEG 图像解压缩模块。

通信协议与格式解析库

Web-Server

  • LightTPD:是一个轻量级、高性能的 开源 Web 服务器,专为高并发、低内存占用 的场景设计。相比 Apache 或 Nginx 更适合嵌入式设备。
  • Mongoose:C / C++ 的事件驱动网络库,除了基本协议栈还了内置 HTTP、MQTT 等服务协议,可在裸机及 RTOS 上运行,带有 UI 构建器。商用有付费限制。
  • Boa:开源的小型 Web 服务器,适用于嵌入式应用。于 2005 起不再更新维护,目前存在已知安全漏洞,不推荐使用。

Web-Plugin

  • FastCGI:改进了传统 CGI 的性能,增加了分布式计算和多角色特性。
  • libevent:专用于网络服务器的事件驱动库,旨在替换事件驱动网络服务器中的事件循环。
  • rtty:通过 Web 访问设备的终端,适合嵌入式 Linux,有点意思。
  • Nanomsg:是一个“可扩展协议”的套接字库,它提供了几种常见的通信模式。可扩展协议的任务是定义多个应用系统如何通信,从而组成一个大的分布式系统。
  • url:简单的解析 url 模块,可以解析不同段的信息。
  • tiny-curl:适用于嵌入式的 cURL 库,仅支持 HTTP 协议。

RPC

  • ERPC:一个远程调用框架,基于 cJSON、libevent 和 libuv 开源库,包括状态通知、数据加密、异常监控等功能。
  • EmbedXrpc:通过 RPC 通讯协议,可忽略协议本身进行业务逻辑的实现,附带代码生成工具。
  • erpc:NXP 开源用于多芯片嵌入式系统和异构多核 SoC 的远程过程调用(RPC)系统。

TCP/IP

  • lwIP:小型开源的 TCP/IP 协议栈,使用最广泛的嵌入式网络协议栈,基本上物联网系统中都有它。
  • CycloneTCP:专用于嵌入式应用的双 IPv4/IPv6 栈,简化了互联网的部署。
  • onps:国产网络协议栈,设计目标与 Lwip 相同,适用于资源受限的单片机系统,提供完整地 ethernet/ppp/tcp/ip 协议族实现。有非常详细的介绍,很适合国人读阅。
  • wolfIP:无动态内存分配的微型 TCP/IP 协议栈,旨在提供比 lwIP 更好的替代方案,并与 wolfSSL 库无缝配合。
  • dyad:基于 socket 的异步网络库,仅支持 TCP 网络通讯,用于创建小型独立设备服务器,并为现有项目提供网络支持。

SSH

  • tinyssh:一个简约的 SSH 服务器,实现了 SSHv2 部分功能,出于安全原因不接受客户端的环境变量请求。
  • wolfSSH:轻量级 SSHv2 客户端和服务器库,采用 ANSI C 编写。

HTTP

  • libevhtp:适合嵌入式设备的低负载 HTTP 库。

MQTT

  • Paho MQTT:嵌入式平台的 MQTT 库,包含三个子库——数据包序列化、C及C++客户端。
  • mqttclient:高性能、高稳定性的跨平台 MQTT 客户端,拥有简洁的 API,无缝衔接 Mbed TLS 库,提供在线代码生成工具。
  • Mosquitto:Eclipse 旗下的一个开源的消息代理(broker),主要用于实现 MQTT 协议。它设计轻巧,资源占用少,适合物联网领域的企业级项目。
  • wolfMQTT:轻量化的 MQTT 协议客户端库,支持多个平台。

RF

  • RadioLib:基于 C++ 的通用无线通信库,支持将不同的模块、协议(OOK、FSK、LoRa 等)集成到统一的系统中。

Thread

  • OpenThread:Google 旗下的产品,是 Thread 系统的开源实现。

Bluetooth

  • bluetooth_stack:一个开源的低功耗双模蓝牙协议栈,可以用于学习,作者有很多教程。
  • BTstack:是一个轻量级、开源的 蓝牙协议栈,专为嵌入式系统和资源受限设备设计,适合需要低功耗、高灵活性的场景。
  • NimBLE:从 Apache Mynewt 中分离出来的一个开源的蓝牙协议栈(包括主机和控制器) 完全取代了 Nordic 芯片组上的专有 SoftDevice。

GNSS

  • LwGPS:简易的 NMEA 报文解析库,内置支持 4 个 GPS 报文:GPGGA、GPGSA、GPGSV、GPRMC,以及允许自定义报文。
  • RTKLIB:RTK 领域的标杆库,广泛应用于商业以及社区,同时也是教科书式的参考手册。
  • Ntrip:C++ 编写的简易 Ntrip 协议库,包含流动站(Client)、中央服务器(Caster)、基准站(CORS)。

AT

  • AT Command:AT 命令通信解析模块,适用于 Modem、WIFI 模块、蓝牙等使用 AT 命令或者 ASCII 命令行通信的场景。
  • Xradio_atcmd:Xradio SDK 里提取的 AT 命令解析库,命令实例丰富,基于 RTOS。

Base64

  • base64:极简的 base64 编解码库,仅包含编解码2个函数。
  • base64:支持 SIMD 和 OpenMP 加速的 base64 编解码库,不使用动态内存,注重线程安全。

CSV

  • MiniCSV:极简的 CSV 解析库,能够解决多行、转义行、转义列中的转义字符、空行、列数可变的行、Windows 或 Unix 风格的行结尾等问题。
  • CRStrLib:解析 csv 格式/其他格式的字符串, 提取数值,帧头帧尾校验。
  • fast-cpp-csv-parser:基于 C++ 的 CSV 解析器,小型、易于使用,仅单个头文件实现。

INI

  • libinimini:适用单片机的 ini 极简解析库,作用对象是字符串,内存空间占用可控。
  • inih:适合嵌入式系统的 ini 解析库,带有语法与解析选项,功能全面。
  • iniparser:基于 C 编写的 ini 解析库,可移植嵌入式系统,注重线程安全,解析风格与 cJSON 类似。

TLV

  • ITLV:TLV 格式数据的优化版本,极简轻量的数据传输格式,可以以此为基础自定义数据格式,附带 CRC 检验。
  • TLV:TLV 格式编码实现。

JSON

  • cJSON:ANSI C 中的轻量级 JSON 解析器,比较原生的 JSON 解析库。
  • struct2json:基于 cJSON,超简便的 C 结构体与 JSON 快速互转库。
  • cson:基于 cJSON,运行于 C 语言平台的 json-struct 模型解析工具。使 JSON 解析更加方便。
  • json:简单高效的 C 语言 json 生成和解析库,适合简单项目的使用。
  • JSMN:简约的 JSON 解析器,零拷贝解析,无解析纠正。
  • lwjson:针对嵌入式系统优化的通用 JSON 解析器库。
  • MojoJson:通用的 JSON 解析库,采用面向对象的思想实现,提供 C 语言版本。
  • LJSON:号称最快的 JSON 解析库,功能极为强大,几乎覆盖了 JSON 解析的所有需要。
  • json-parser:简单、规范、实用的 JSON 库,包括解析和生成。
  • Frozen:类似 scanf/printf 的 JSON 解析和生成库,内置 base64 编码器和二进制数据解码器。
  • sj.h:极简的 C 语言 JSON 解析库,采用零拷贝策略,直接在原数据上解析。

XML

  • simple_xml:XML 解析库,具有完备的功能,支持双向解析。
  • TinyXML-2:基于 C++ 的 XML 解析库,它使用文档对象模型(DOM),可以很方便的将 XML 和 C++ 对象互相转换。

TOML

  • TOML:比 INI 的扩展性强、又没有层层嵌套的 JSON 和 YAML 的缩进语法,一种人们不常了解的数据标记格式。

其他格式

  • LwPKT:通用数据包协议库,可变数据长度,支持理论上无限的数据包长度,允许在网络中使用发件人地址和收件人地址进行多个注释,附带 CRC 检验。
  • xpack:用于在 C++ 结构体和 JSON/XML/YAML/BSON/MySQL/SQLite 之间互相转换,仅有头文件。
  • Uart_Transfer_BIN_to_exFlash:基于串口通讯,增加帧属性,从而方便、可靠的将数据传输到 Flash 中。

日志与终端交互库

LOG 日志

  • dbuglib:精小的日志库,仅提供输出显示功能,可以修改日志的级别用于过滤特定级别的日志,相当于一般 SDK 自带的 printf 功能。
  • log.c:极简的日志库,仅提供输出显示和记录功能。基于 C99 标准,用在嵌入式上需要自行重定向输出。
  • log:小巧的日志模块,输出内容包括时间、日志类型、内容、文件名、行号、函数名等信息。
  • alog:功能精简的输出日志组件,带颜色带互斥锁。
  • LwPRINTF:安全简约的标准输出功能库,允许重定向多个输出流,所有 API 均可重入。
  • EasyLogger:功能较全面的日志库,支持动态过滤和颜色选择,注重线程安全,且支持异步输出及缓冲输出模式。
  • zlog:是一个高可靠性、高性能、线程安全、灵活、概念清晰的纯 C 日志函数库,不支持内容过滤和解析。

终端交互

  • cmd-parser:极简的命令解析库,就是通过字符串来触发函数,挺有意思的做法。
  • LwSHELL:轻量级 shell 库,简单易用,附带命令描述。
  • debugcmd:功能完善的命令行解析库,提供 Tab 补全、帮助查看、子命令注册等功能。
  • Argtable3:规范的命令行解析库,用于自定义操作命令,遵循 POSIX 接口。
  • nr_micro_shell:标准的命令行交互库,提供 Tab 键命令补全,查询历史命令等功能,原生支持 ENV 工具使用。
  • letter shell:功能强大的嵌入式命令行交互库,几乎提供 shell 拥有的所有功能,且能通过函数地址直接执行函数。
  • Xradio_console:从全志科技 xr806 芯片里提取的控制台库,命令采用分层结构,适合有多命令的时候,基于 RTOS。
  • easyShell:简单易用的单片机 shell,支持 tab 补全。

校验、安全与引导、升级库

校验和安全

  • crc-lib-c:极简的 CRC 库,包括常用的 21 个 CRC 参数模型实现,无扩展功能。
  • tiny-AES-c:小巧易移植的 AES 算法库,提供 ECB、CTR 和 CBC 三种加密模式。
  • key:极简的加密算法,配合密钥使用,功能单一但实用,适合网络加密等领域。
  • wolfCrypt:狼库旗下的轻量级加密库,支持多种流行的算法和密码,适合企业级项目。
  • wolfSSL:是一个轻量级的、可移植的 SSL/TLS 库,由 wolfCrypt 密码库驱动,它主要针对 IoT、嵌入式和 RTOS 环境。
  • Mbed TLS:可信旗下的项目,业内流行的 SSL/TLS 库。
  • wolfHSM:一个客户端-服务器框架,用于硬件密码学、非易失性内存和安全处理。最初是面向于汽车领域的 HSM 核心,现在则适用于任何可信环境。
  • wolfTPM:可移植的 TPM 协议栈,提供封装接口以简化密钥的操作,支持裸机、RTOS、Linux、Windows 等多个平台。
  • wolfSentry:一个动态的入侵检测与防御系统(IDPS),嵌入式适用的防火墙引擎,核心是监控、日志记录、模式匹配以及通知。

引导和升级

  • Tiny Bootloader:适用于 8 位和 32 位微控制器的简单引导程序,消耗极少的资源,支持多种总线通讯方式。
  • OpenBLT:著名的微控制器的引导加载程序库,支持 8、16、32 位微控制器。
  • wolfBoot:适用于 32 位微控制器的安全引导加载程序解决方案,支持固件身份验证和固件更新机制。
  • mOTA:专为 32 位 MCU 开发的升级组件,通过 YModem-1K 协议传输。
  • MicorBoot:引导加载模块,专为嵌入式单片机设备的升级而优化,提供断电保护、断点续传等功能。
  • MCUboot:可信旗下的项目,通用的 32 位微控制器的安全引导加载程序,不依赖于特定的系统和硬件。

UI与菜单库

HMI

  • tslib:基于 Linux 的电阻触摸屏校正算法库,使用广泛。
  • tslib_for_mcu:裁剪自 tslib 的一个电阻屏触摸校准库,用于单片机。

单色

  • ECBM_GUI:超基础的单色 GUI 库,仅通过内建缓存来存放画面内容实现 GUI 功能。适合于自己玩的小项目。
  • SimpleGUI:针对单色显示屏设计的 GUI 库,提供简单的绘制功能。适合于像素较低的单色点阵屏。
  • oledlib:一个开源的 oled 图形库,带有一些适合做屏保的图形。
  • U8g2:单色显示器库,提供多种控制器支持和基本图形绘制。
  • MonoGUI:针对黑白屏幕的小电子设备开发的专用 GUI 系统,功能全面,附带输入法功能。适合电子词典、标签打印机等设备。
  • WouoUI:模仿自稚晖君暂未开源的 MonoUI,用于实现类似 UltraLink 的丝滑界面,使用编码器作为控制器,还有个特流畅好看的升级版。
  • astra UI:基于 C++ 的 OLED 多级菜单 UI,带有丝滑的过渡动画效果。
  • GLCD:微控制器嵌入式系统图形 LCD 库,包含硬件驱动、文本及基础图形绘制。

彩色

  • GuiLite:超轻量级 GUI 库,支持多平台,支持第三方库。
  • Olive.c:适用于 C 语言的简单 2D 图形库,仅使用画布特征进行绘制。
  • microui:一个微小而便携的 UI 库,其特点是占用极少的内存空间,适用于任何可以绘制矩形和文本的渲染系统。
  • LingLongGUI:高效的 GUI 生成库,配套有图形化编辑界面,方便之间生成代码使用。
  • LingDongGUI:对 Arm-2D 进行二次封装的 GUI 库,旨在提高易用性,同时也支持原生 API 的使用。
  • AAGUI:跨平台通用型 GUI,旨在嵌入式里实现类安卓的高级 UI 开发。可使用半声明式(json)编程,适合类似于手机应用的项目开发。
  • GT-HMI:上海高通(Genitop)旗下专为国人使用的 UI 库,带有多种语种多字库,带有模拟器和上位机。RTOS、裸机均可使用,适合实用的项目级产品。
  • LVGL:轻量级通用图形库,开源免费,几乎拥有 GUI 所需的一切。适用于项目级设备。
  • AWTK:ZLG 旗下的 GUI 图形库,开源免费。
  • TouchGFX:STM32 旗下的 GUI 图形库,功能强劲,配有图形编辑软件,一般只适用于 STM32 的开发。
  • GUIX:Azure RTOS 提供的 GUI 图形库,开发十分成熟和方便,开源免费。
  • emWin:又名(uCGUI),是 Segger 旗下的 GUI 图形库,很多知名大厂芯片都是可以授权使用的。
  • Embedded Wizard GUI:超强大的 GUI 图形库,但需要收钱。配有图形化编辑器。
  • Qt for MCU:QT 旗下的 GUI 图形库,适合有 QT 经验的开发者,需要收费。
  • μGFX:可用于触摸屏的轻量级 UI 库,注重性能,非商用免费。
  • MiniGUI:多平台、高度可定制的 UI 库,可用于不同性能的芯片,适合移动设备及工业等领域,非商用免费。
  • μGUI:开源的极简图形库,独立于平台,仅一个源文件。
  • Aeropoint GUI:使用 PPT 方式进行 GUI 的创建,需要收费,且没有试用版。
  • Clay:高性能 2D UI 布局库,提供响应式布局能力,不绑定具体的渲染器。
  • Nuklear:无依赖的图形用户界面工具包,通过使用输入状态和绘制命令来构建图形,适合快速响应的应用。
  • LinaVG:适用于 2D 矢量图形的渲染库。
  • BlurHash:开源的图片占位符算法和实现,能够在图片预载时先显示框图和缩略图,嵌入式领域可能会用得到。
  • Rawdraw:跨平台无依赖的 UI 绘制系统,可选用 OpenGL、软件光栅等多种后端。
  • TinyGL:是 OpenGL 的小型实现,适用于嵌入式系统。将复杂的接口精简为更易于理解和操作的形式。
  • foolrenderer:用 C 语言实现的软件渲染器,不依赖图形库,仅用几千行代码,实现了一套类似 OpenGL 的基本图形功能,以及应用于游戏开发的实时渲染技术,如阴影、切线空间法线映射、基于物理的材质系统等。
  • EmberGL:用于 MCU 的类似于 OpenGL 的实时 2D / 3D 光栅渲染库。
  • Cairo:一个支持多输出的二维图形库,提供类似于 PostScript 和 PDF 的作图方式,主要适配在PC上,但也能够移植进嵌入式芯片中。

加速

  • Arm-2D:针对 Cortex-M 处理器优化的 2D 图形加速库,处于 GUI 库和驱动层之间。
  • GUIslice:简单好用的开源 GUI 框架,极客的风格,无动态内存分配,并提供布局上位机。

图形

  • qrencode:适用于单片机的二维码生成库。
  • QR Code generator library:通用的QR码生成库,包含多个语言版本,旨在用更少的代码实现更好的性能。
  • QRCode:QR 码生成库,参考了 QR Code generator library,并针对处理器和内存受限的系统进行了优化,支持从 Version 1 到 Version 40 的所有规格。

字形

  • MCUFont:专用于字体的库,实现字体压缩、解压缩和文本渲染(调节)功能。
  • Unicorn:基于 C99 的 Unicode 编解码库,提供对此编码格式的基本算法和功能。

菜单框架

  • zBitsView:虚拟多层菜单,仅存在于逻辑层,与有无屏幕无关。
  • emenu:不寻常的菜单框架,在代码上就可以反映菜单结构。
  • Menu:简单实用的菜单实现,架构并未很好的解耦,但适合学生在项目上边学边使用。
  • cotMenu:采用链表方式实现多级深度菜单,相当于显示的逻辑层,与按键、显示屏完全解耦。
  • MiaoUI:基于 U8g2 的 OLED 菜单 UI 框架,支持列表与图标类菜单、非线性动画、任务弹窗等功能。
  • MultMenu:多级菜单 + 单色 OLED 非线性动画库,组合使用,移植简单方便,适合类似需求的创客项目。
  • SMF:基于 C++ 的菜单框架,提供多级菜单、菜单对象,适合项目级工程。
  • PageManager:基于 C++ 的页面生命周期管理库,提供完整的页面调度功能,适合项目级工程。

内核与基层框架库

事件

  • cpost:超轻量的上下文切换和任务解耦库,采用事件分发机制,适合于裸机系统。
  • LwEVT:专业的事件模块库,可选数据结构的自定义类型,且挂载指定函数,可理解为事件和消息的结合,进行事件的分发和回调处理。

消息

  • YAMI4:专为分布式系统设计的消息传递库,特别关注控制和监控系统。
  • ZeroMQ:一个高性能异步消息传递库,旨在用于分布式或并发应用程序。
  • CDIPC:一种进程间通信(IPC)机制和库,适合在实时系统中协调感知、控制驱动程序和算法。

管道

  • readerwriterqueue:基于 C++ 的单生产者、单使用者无锁队列,意义同通管道框架,速度快且易用,无需锁也能注重线程安全。

邮箱

  • DataCenter:基于 C++ 的消息发布订阅框架,提供完整的邮箱服务,适合项目级工程。

线程管理

  • C Thread Pool:轻量级的线程池库,基于 pthread 实现,用于管理线程的创建和生命周期,解决频繁地创建和销毁线程所带来较大开销的问题。

驱动框架

  • initcall:提取 RT-Thread 的初始化框架,使初始化函数在链接阶段就登记完成。
  • platform_dev:模仿 Linux 的简化版驱动框架,设计中不使用动态内存分配,适合低资源的芯片使用。
  • c-periphery:基于 Linux 的硬件外设抽象层模板。

传感器框架

  • senser_algorithm:适用于 RTOS 的传感器数据处理框架。(待发布)

模组框架

  • RIL:专门为嵌入式平台开发的无线通信模组(GSM/GPRS/CatM1/NB-Iot)管理软件。

状态机

  • EFSMC:基于事件驱动的有限状态机,通过巧妙设计,避免了命名冲突的问题。使用起来简单、方便、规范。
  • signals_slots:轻量级信号与槽框架,简化事件驱动编程。
  • UML State Machine in C:多平台、轻量级状态机框架,支持有限状态机和分层状态机,带有日志记录功能。

动态加载

  • dynamic_loader:动态加载函数库,裁剪自 RT-Thread 的 libdl 源码,不与原本 OS 耦合,可在裸机使用。

异常快照与测试库

Coredump

  • CmBacktrace:赫赫有名的错误追踪库,针对 ARM Cortex-M 系列的 MCU,基本上稍复杂一点的项目都会加上这个功能库。

异常捕捉

  • try:用 C 语言方式实现的 try catch 异常捕获。
  • CException:适用于 C 语言的简单异常处理,比标准库的更快,可以移植到任何支持 setjmp/longjmp 的平台上。
  • MLA:通过记录内存分配计数,来进行内存泄漏分析的库,小巧易用。

测试

  • MinUnit:极简的单元测试框架,仅包含一个头文件,不使用内存分配。
  • CuTest:单元测试框架,使用动态内存分配。
  • cmockery:C 单元测试的轻量级框架,基于标准 C 库,支持函数打桩和返回值预设。
  • EEMBC:EEMBC 公司提供嵌入式领域众多测试库,主要测试芯片性能,属于业内标准,适合企业级项目部署。
  • Unity:C 语言构建的单元测试框架,专注于使用嵌入式工具链。
  • greatest:小巧的 C 语言测试系统,使用插桩/覆盖测试,可以与其他程序一起运行。
  • Catch2:一个流行的 C++ 单元测试框架,它的设计目标是轻量、易用且无依赖。

算法与AI库

算术

  • LibBF:高精度浮点运算的库,提供比标准浮点数(如 float 和 double)精度更高的数值,并且可以灵活地控制精度和舍入模式。

基础算法

  • FXT:C++ 的算法库集合,专注于位运算、组合数学、快速变换等。
  • xxHash:是一种速度极快的非加密哈希算法,可在 RAM 、速度限制下工作,适合更专业的使用场景。
  • Terathon Math Library:一个用 C++ 写成的数学库,包含向量、矩阵、四元数和射影几何代数元素的类。可用于图形、AI、游戏等领域。

AI 框架

  • TinyMaix:专为低资源的单片机设计的 AI 神经网络推理框架。
  • tinymnist:C 语言实现了一个迷你神经网络(两层),可用于学习和基础嵌入式领域。
  • Genann:极简的神经网络库,经过充分测试,用于在 C 中训练和使用前馈人工神经网络(ANN)。
  • uTensor:基于 TensorFlow 构建的极其轻量级的机器学习推理框架,并将训练模型生成 C++ 文件导入使用。
  • NNoM:专门为了神经网络在 MCU 上运行的框架,使用起来和 TinyMaix 很像,但功能更多。
  • Paddle Lite:高性能、轻量级、灵活性强且易于扩展的深度学习推理框架,定位于支持包括移动端、嵌入式以及边缘端在内的多种硬件平台。
  • TVM:内置深度学习编译器,适用于 CPU、GPU、ARM 等多种硬件架构,提供一条龙服务。
  • ncnn:是一个为移动端极致优化的高性能神经网络前向计算框架,支持大部分常用的 CNN 网络,可部署在部分嵌入式芯片上。
  • MNN:轻量级的深度神经网络引擎,支持深度学习的推理与训练,支持具有 POSIX 接口的嵌入式设备。
  • TensorFlow Lite:极有名的机器学习库,可用于在移动设备、微控制器和其他边缘设备上部署模型,以便实现设备端机器学习。
  • Mediapipe:谷歌开源的跨平台机器学习框架。它是一个能够轻松部署到移动端、Web、PC 和物联网设备的机器学习工具库,包含了物体检测、图像分类、人脸识别、手势识别、文本分类、语言检测、音频分类等模型。
  • Edge Impulse:流行的嵌入式机器学习开发平台,可以完成数据处理和分析、模型训练、部署模型等工作。
  • YMCV:纯 C 写的迷你计算机视觉库,无依赖、跨平台,可方便裁剪所需功能。
  • NeuralNetwork:专用于单片机的神经网络库,仅需极少的资源即可运行RNN、GRU和LSTM等架构,支持裸机和部分操作系统。

AI 模型&算法

  • Knn:C 编写的 Knn 算法,无优化,带有训练集,可以作为学习用途。
  • NanoDet-Plus:超快速、高精度的轻量级无锚物体检测模型,基于移动端 AI 框架实现。
  • pico:轻量级的人脸识别算法,基于像素强度比较的目标检测,适合单一、流量较小的场景。

系统与线程库

时间片调度系统

  • ztask:最基础的时间片调度器,仅 5 个 api,属于那种随手就可以写出来的框架。
  • ETP:时间片轮询框架,旨在解耦主轮询中各个不同时间片的任务,属于最基础的轮询框架。
  • cotTask:时间片轮询框架,初始化、启动和任务调度管理,可以设置任务优先级。
  • CodeBrick:时间片轮询框架,包含了很多实用模块,不含驱动层,简单易用。符合现在项目的开发理念,是我很喜欢的一个裸机框架。
  • vkern:仿照 RTOS 架构编写的任务调度内核,其原理还是使用定时器创建前后台系统。
  • cola_os:前后台系统,适合对功耗有要求且 CPU 性能不强的,有稍复杂功能的裸机。
  • JxOS:前后台系统,没有复杂的注册与函数指针结构,提供系统内核功能:任务、事件、消息、公告板、邮箱、管道、注册、内存分配等。
  • EventOS:事件驱动型的嵌入式系统,提供内核等功能。
  • BabyOS:注册服务型框架,适用于裸机 MCU 项目,是一套管理功能模块和外设驱动的框架,拥有极明确的代码分层和代码规范,类 RTT 的“MenuConfig”终端配置,带有 PC 模拟。

类实时系统

  • cotOs:简单的查询式协作多任务系统,无需使用定时器进行任务切换,就和 RTOS 创建任务一样,但没有提供其他功能,我很喜欢,感觉酷毙了。
  • BasicOS:极简的协作式系统,所有的任务共享一个任务栈,包含简单的内核功能组件等。协作式系统适合实时性要求更高的项目。
  • TaskScheduler:协同多任务处理框架,抢占式编程,但不需要担心并发处理的安全问题。能够对任务的执行参数进行多种配置。
  • QuarkTS:事件驱动型多任务调度系统,是它无需考虑并发的陷阱(资源共享、竞争条件、死锁等...),并提供完整内核功能,符合多种行业标准,适合基础企业项目。
  • VSF:是一个基于事件驱动的抢占式多任务框架,包含内核和常用的组件,适用于企业级项目。

RTOS

  • KLite:最简洁易用的 RTOS,附带最基本实用的内核功能。适合需要快速部署的简单 RTOS 项目。
  • FreeRTOS:很多小厂商会使用的 OS,网上资料比较多,属于中规中矩那种,适合有一个基础项目,准备上 RTOS 的那种。
  • uC/OS:早期比较流行的 OS,和 FreeRTOS 特征差不多,功能比它强一些。
  • RT-Thread:国产里耀眼的星星,非常好且实用的 RTOS,附带多个组件和附加功能,文档详细,非常适合一个空白期的 OS 项目。
  • RTX:ARM 公司的 RTOS,和 Keil 适配性较强。
  • NuttX:强调标准兼容和小型封装的操作系统,遵循 POSIX 标准和 ANSI 标准。
  • embOS:SEGGER 公司的 RTOS,可免费用于非商业用途。
  • Azure RTOS:微软公司的 RTOS,具有丰富的组件。
  • Zephyr:Linux 基金会维护的一个 RTOS,很适合学习 Linux 的开发思想。
  • At-RTOS:一个用户友好的嵌入式控制器实时操作系统,仅提供基本的内核功能。
  • Embox:多任务操作系统,其特点是支持使用 Linux 开源组件而不使用 Linux 系统,该开源系统旨在任何地方都能够使用 Linux 软件。
  • YiYiYa OS:功能全面的 OS 系统,架构从上而下分层设计,几乎可以将其视为简易版的安卓系统,适合手机那种类型的产品。
  • LK:全称 Little Kernel,是一个微型嵌入式系统,其引导加载程序(BootLoader)最为出名,被作用于原生 Android 系统上。
  • SKRTOS_sparrow:仅几百行的超微小系统,实现了基本调度和 IPC 机制,有人称之为儿童版 FreeRTOS。
  • CosyOS:零中断延迟的操作系统,可实现全局不关总中断而保持实时性,包含很多创新实用的内核功能。
  • scmRTOS:C++ 编写的轻量级的 RTOS,仅提供调度和消息等最基本的内核功能。
  • MuditaOS:基于 FreeRTOS 构建,专为 E-Ink 显示屏优化的移动操作系统。
  • egos-2000:仅用 2000 行代码实现的极简 OS,包括(线程控制、内存管理、文件系统、总线 IO)等核心功能,附带详细的教学,旨在帮助学生理解系统原理。
  • seL4:专为高安全、高稳定领域所需打造的系统内核,提供细粒度访问控制、虚拟化和快速 IPC。
  • AkiraOS:基于 Zephyr 系统,以模块化和安全为核心的嵌入式平台,支持 C、Rust 或 Python 编码。提供 WebAssembly(WASM)运行时和容器技术,让 MCU 拥有如手机 APP 一般的应用生态。

IoT-RTOS

  • Contiki-NG:uIP 和 LwIP 的作者维护的多任务物联网操作系统,它专注于可靠(安全可靠)的低功耗通信和标准互联网协议。
  • Mbed OS:Arm 旗下的易于使用的物联网操作系统。
  • Huawei LiteOS:华为旗下针对物联网领域推出的轻量级物联网操作系统。
  • Xiaomi Vela:小米旗下的物联网操作系统,底层基于 NuttX 内核打造。
  • AliOS Things:阿里旗下面向 IoT 领域的、高可伸缩的物联网操作系统。
  • TencentOS Tiny:是腾讯面向物联网领域开发的实时操作系统。
  • OneOS:中国移动针对物联网领域推出的轻量级操作系统,具有可裁剪、跨平台、低功耗、高安全等特点,支持 ARM Cortex-M/A、MIPS、RISC-V 等主流芯片架构,兼容 POSIX、CMSIS 等标准接口,支持 JavaScript、Micropython 语言开发。
  • LuatOS:一款针对嵌入式的 Lua 脚本运行框架,包含了一个系统的功能体量。
  • Lua-RTOS-ESP32:是一种支持 Lua 解释器的实时操作系统,提供了 Lua 所需所有资源和基本模块、中间件,可以移植到其他 32 位平台。
  • Apache Mynewt OS:Apache 旗下专为低功耗无线设备所设计的 OS,自带蓝牙协议栈和 IEEE 通信协议,开箱即用。
  • Mongoose OS:物联网固件开发框架,支持 C/JavaScript 语言开发,对远程管理及升级有较好支持。开源版功能受限。
  • MicroPythonOS:MicroPython 构建的轻量级多功能作系统,专为 ESP32 和桌面系统等微控制器而设计,提供类似 Android 的现代触屏界面、应用商店、OTA 等功能。
  • RIOT:支持 8/16/32 位 MCU 的物联网系统,注重安全性。以低能耗、低资源占用、模块化为设计原则,同时提供各种外设驱动和完整的网络协议栈功能。

ROS

  • ROS:业界有名的开源机器人操作系统,它实现了一整套的软件库和工具集。
  • AimRT:是一个基于 Modern C++ 开发,面向现代机器人领域的运行时开发框架。提供了全面的插件开发接口,具有高度可扩展性,与其他 ROS 生态兼容。

Unix

  • NetBSD/evbarm:不那么著名的精简 Unix 系统,但快速、安全、稳定且高度可移植,代码干净、设计规整。

模块集合包

  • ToolKit:一个小功能的嵌入式工具包,提供循环队列、软件定时器、事件集三个功能,文档写的很清楚。
  • lwUTIL:实用工具包,包含值运算、大小端存储、位运算、ascii 转化等。
  • sc:高性能且小内存占用的独立工具包,主要提供数据结构的相关功能。
  • cotUtils:C 语言的通用扩展库,包括多种容器(队列、栈、双向链表、动态数组),序列化/反序列化的结构体,PP 库(多功能宏)等功能。
  • mr-library:嵌入式轻量级框架,提供标准化的驱动接口和简单的内核功能组件等,是普通厂商级项目的首选。
  • Zorb Framework:轻量级的嵌入式框架,包含基本的内核功能,都是单独集成,方便裁剪使用。
  • Gear-Lib:一组通用的 C 基础库,全部用 POSIX C 实现,旨在兼容 Linux, Windows, Android, iOS 等跨平台,包括数据结构、异步、I/O、状态机、动态加载等功能。
  • c-algorithms:提供常用算法和数据结构的集合来弥补标准库的缺失,并且比 C 标准库编译出来的小得多。
  • klib:一个独立的轻量级 C 库,提供多种基础算法、数据结构和解析器等功能。
  • AMetal:是 ZLG 旗下的软件包,涵盖了各类型的外设,并统一编写了抽象层接口。代码比较冗余,但类型全面。
  • eLab:综合开发平台,包含嵌入式所需大部分功能包,尤其注重跨平台开发和 PC 仿真,特别适合对开发流程规范的项目。
  • TheAlgorithms:开源组织 TheAlgorithms 维护的各种基础算法、数据结构、机器学习等库,内容十分丰富,且包含各个流行语言的版本。
  • simpostOS:是一套设计方法,以及多个软件组件、服务的集合。其理念是将所有功能模块化,并极大地增加功能复用性。使用的是纯 C++ 语言,库写的十分现代化,不适合新手使用。
  • PetiteDrv:通用的 SDK 库,其思想是层层抽象,在不使用复杂的代码完成解耦功能,适合小公司小项目的开发。
  • varch:是嵌入式 C 语言常用代码模块库,包含了嵌入式中常用的算法库、数据结构(容器)库,、解析器库、独立 C 语言 std 库、工具库等等,每个库独立使用,简单高效。
  • ctool:常用但一般库里并不包含的工具,包括不定参数、日期、内存测试等。
  • Generic_MCU_Software_Infrastructure:提供必要的软件基础设施、服务、宏来支持一些高级的抽象概念和范式。
  • appkit:基于 C++ 的 Linux 应用开发库,包括开发中常用的模块功能(线程管理、定时器、文件 IO、串口通信等)。
  • GLib:GTK 项目下的核心库,提供非常多的功能,包括数据结构、类型转换、字符串工具、文件操作、主循环抽象等。

芯片和工具链适配库

51

  • 8051-ELL:结合了 HAL 库和 LL 库的编程思想编写的 ELL(efficient low-layer)库,以 STC8 系列为主。
  • ECBM:51 芯片外设函数库,需要哪个模块就取用哪个模块。

AVR

ST

  • STM32F4 Discovery:面向 STM32F4 系列微控制器的驱动库集合,包含多个外设、接口的实现教学及配套示例。

ESP

  • LwESP:专业的 AT 解析器库,旨在其他设备通过 AT 命令与 ESP 设备进行通信。
  • ESPUI:为 ESP32 和 ESP8266 设备设计的简单的网络用户界面库。它使用户能够轻松地创建和管理设备的 Web 界面,无需任何 HTML、CSS 或 JavaScript 前端开发知识。
  • FluidNC:针对 ESP32 控制器优化的 CNC 固件库。
  • Rabbit GRBL:运行在 ESP32 处理器上的 CNC 固件库,经过高度优化,能够保持高达 120khZ 的稳定、无抖动的控制脉冲。

SIMCom

  • LwCELL:专业的 AT 解析器库,旨在其他设备通过 AT 命令与 SIMCom 设备进行通信。

MDK

  • flash_blob:利用 MDK 的 FLM 文件快速生成通用 flash 驱动。

Driver

  • LibDriver:一个开源的驱动开发组织,包含了所有常用的外设模块驱动库(140+)。

引擎(仿真)库

SoftFP

  • SoftFP:用于没有硬件浮点单元(FPU)的情况下,作为软件浮点运算的实现方式。

C++

  • sds:简单动态字符串库,使用堆内存,其作用就是在 C 语言中仿照 C++ 的 string 类型。
  • STR:字符串处理库,拥有字符串分割/修剪/搜索/查错等功能。
  • etl:适用于嵌入式的 C++ 模板库(STL),旨在编译时为容器定义固定大小。
  • LW_OOPC:适合嵌入式的面向对象的编程扩展,在源码的基础上进行了多个版本的更新优化,简单易用。
  • PLOOC:在 C 语言中提供面向对象的编程扩展,可以实现私有成员、继承、重载等功能。
  • vlib:C 语言模板库,提供了类似 C++ STL 的功能,包含了常用的容器,且可以使用任意数据类型。

Lua

  • MicroLua:适用于树莓派 Pico 的 LUA 开发软件包,通过移植修改应该可以用于其他微控制器设备。
  • eLua:适用于嵌入式的 Lua 引擎。可在嵌入式平台使用 lua 脚本语言。

Python

  • PikaPython:超轻量级 python 引擎,零依赖,零配置,使用 Python 代替 C 开发。具有大量的中文文档和视频资料。

Rust

  • Rust Embedded:专注于改善在资源受限的环境和非传统平台中使用 Rust 的端到端体验。

JavaScript

  • mJS:专用于微控制器的 JavaScript 引擎,空间占用量小(RAM:1k,ROM:50k),基于 ES6 标准。

Arduino

  • ArduinoCore-API:Arduino 内核的硬件独立层,使用基于 Arduino 相关的库时需要包含对应的 API 文件。

虚拟机(沙盒)

  • EVM:针对物联网的超轻量虚拟机,由语法解析前端框架和字节码运行后端构成,可运行在资源受限制的单片机上。支持自行开发 app 运行在此虚拟机引擎上。
  • uvm32:一款极简、无依赖的虚拟机(RISC-V)沙箱,专为微控制器及其他资源受限设备设计。单C文件,无动态内存分配,采用异步架构设计。可作为LUA、MicroPython等脚本引擎的替代品。

多媒体

  • FFmpeg:业界极为知名的一个跨平台音视频处理框架,提供一组音视频编解码开发套件。

游戏框架

  • Arduboy:提供游戏制作所需的编程接口,使其允许游戏玩家轻松制作 C/C++ 游戏,运行在该平台上,并通过社区共享。
  • raylib:纯 C 编写的游戏库,简易的视频、游戏编程库。

✨ 额外

库分类细则

由于开源库是多种多样的,有些同样功能的代码用在不同地方就有了不同名字,而有些库里包含了多个子功能,每个子功能都能作为一个领域进行划分,因此开源代码库分类就变得不太容易。 鉴于其特性,我将开源库分为三类:单功能,集功能和其他。

  • 单功能:针对单一功能或单一领域的开源代码库,分类原则是按照 领域-功能 进行划分;
  • 集功能:集成多个功能的软件包或框架系统等,分类原则是按照 领域 进行划分;
  • 其他:只适配特定类型的芯片或引擎库;

其他相关开源库汇总


🤝 贡献

我们欢迎大家的贡献!详情请参阅我们的贡献指南。

⬆TOP

Ähnliche Projekte entdecken