一、OS操作系统
鸿蒙 OS: 由华为公司开发,旨在为多种智能终端设备提供统一的操作系统平台,具备分布式架构、跨设备协同等特性,适用于从手机、平板到智能家居、智能汽车等各类场景,支持多种硬件平台,拥有丰富的组件和接口,方便开发者构建多样化的应用生态系统,其开源特性也促进了社区的发展和技术的共享。
TencentOS tiny:腾讯推出的面向物联网领域的实时操作系统,整合了腾讯在云服务、大数据、人工智能等领域的优势,为物联网设备提供高效、稳定的运行环境,支持多种网络协议和云端连接,具备完善的安全机制和低功耗管理功能,适用于智能穿戴设备、智能家电等对功耗和连接性要求较高的场景,同时腾讯提供了丰富的开发工具和文档,方便开发者快速上手。
freertos:一款广泛应用的轻量级操作系统,以其简洁的内核设计和良好的可移植性著称,遵循 MIT 开源协议,代码易于理解和修改,在嵌入式领域拥有庞大的用户群体,支持多种硬件平台,提供基本的任务调度、内存管理、任务间通信等功能,适用于对资源要求较为苛刻、功能相对简单的嵌入式系统,如小型传感器、工业控制中的简单控制器等,其丰富的文档和示例代码有助于开发者快速入门和开发应用。
µC/OS:一个成熟且功能齐全的嵌入式操作系统,具有高度可裁剪性,能够根据不同的硬件资源和应用需求进行定制,提供了可靠的任务调度、信号量、消息队列等操作系统功能,广泛应用于工业控制、汽车电子、航空航天等领域,其稳定性和可靠性经过了大量实际项目的验证,同时拥有完善的开发文档和培训资源,方便开发者进行深入学习和应用开发。
mbed-os:ARM 公司自主打造的面向 IoT 的软件解决方案,集成了丰富的硬件抽象层、驱动库和通信协议栈,旨在简化基于 ARM 架构的物联网设备开发过程,支持多种 ARM 处理器系列,具备良好的安全性和低功耗特性,与 ARM 的硬件生态系统紧密结合,方便开发者快速搭建物联网应用原型,同时 ARM 为其提供了专业的技术支持和社区资源,促进开发者之间的交流和协作。
LuatOS:运行在嵌入式硬件上的实时操作系统,突出特点是只需少量的内存和 flash 空间即可运行,采用 lua 脚本语言进行应用开发,大大降低了开发门槛,使得非专业嵌入式开发者也能快速实现各种功能,如物联网设备的数据采集、控制逻辑等,广泛应用于智能穿戴、共享设备、农业物联网等领域,其开发文档和示例丰富,便于开发者快速入门和开发定制化的应用。开发者是合宙通信科技有限公司。
Contiki-OS:一个小型、开源且极易移植的多任务操作系统,专为资源极度受限的嵌入式设备而设计,具有低功耗、高可移植性等特点,支持多种网络协议栈,适用于无线传感器网络、智能尘埃等低功耗物联网应用场景,其代码简洁高效,社区活跃度较高,为开发者提供了丰富的移植案例和应用示例,方便在不同硬件平台上进行部署和开发。由瑞典计算机科学研究所(SICS)开发和维护,是开源社区的共同成果。
DJYOS:都江堰操作系统,以其独特的内核架构和调度算法而闻名,旨在为嵌入式系统提供高效、稳定的运行环境,具备实时性强、资源利用率高的特点,适用于工业自动化、智能交通、电力系统等对可靠性和实时性要求较高的领域,其开发者在操作系统理论和实践方面有深入的研究,为系统的稳定性和性能提供了坚实的保障,同时也在国内拥有一定的用户群体和技术支持。由都江堰操作系统团队(由个人开发者牵头,汇聚了一批开源爱好者共同参与)。
lmosem:完全自主从第一行引导代码开始编写的基于 ARM 平台的操作系统内核,支持多进程、多 CPU、内存管理、文件与设备管理等全 32 位操作系统功能,具有较高的技术含量和自主可控性,适用于对安全性和自主性要求较高的嵌入式系统开发,如国防军工、关键基础设施等领域,其开发者在操作系统底层技术上进行了深入探索和实践,为国内嵌入式操作系统的自主研发提供了有益的参考和经验,同时也在不断完善和发展中,以适应更多的应用场景和技术需求。
freenos:FreeNOS 微内核操作系统,采用微内核架构设计,具有良好的可扩展性和模块化特性,内核功能精简,将大部分非关键系统服务移到用户空间,通过进程间通信机制进行交互,提高了系统的可靠性和安全性,适用于对安全性和灵活性要求较高的嵌入式系统,如金融交易终端、网络安全设备等,其开源的特性吸引了一批开发者对其进行研究和改进,为系统的发展提供了动力和支持。
二、GUI图形库
GuiLite:号称大道至简的全平台 GUI 库,仅用 5 千行代码且仅以头文件形式存在,这使其具有极高的简洁性和易集成性。它能够在多种不同的操作系统和硬件平台上运行,为开发者提供了一套统一的图形界面开发接口,可用于开发诸如嵌入式设备的操作界面、小型应用程序的图形展示等,无论是资源受限的物联网终端还是桌面端应用,都能尝试借助它来构建直观的图形用户界面,大大降低了 GUI 开发的复杂度,且方便进行跨平台移植,有助于提高开发效率,缩短开发周期。
yoxios:基于 Linux 开发的轻量级物联网系统和硬件平台,将操作系统与硬件进行了较好的整合,一方面提供了适用于物联网设备的轻量级系统环境,具备低功耗、高效能等特点,可满足物联网设备长时间运行、资源有限的需求;另一方面,其硬件平台相关设计也考虑到了物联网应用的连接性、扩展性等,方便开发者快速搭建物联网项目的硬件基础,整体上能帮助开发者更便捷地开发出集硬件与软件为一体的物联网解决方案,例如用于智能家居节点、环境监测设备等物联网场景下的产品开发。
ToughGFX:这是一个用 C++ 编写的 GUI 软件框架,采用面向对象的编程方式进行设计,具有良好的代码结构和可扩展性,方便开发者依据具体的应用需求进行定制开发。它提供了丰富的图形组件和界面布局功能,能够帮助开发者高效地构建出美观、易用的图形用户界面,适用于多种不同类型的嵌入式设备以及桌面应用开发场景,比如工业控制设备的操作面板、手持终端的显示界面等,开发者可以利用其 C++ 的特性实现复杂的界面交互逻辑,提升用户体验。
emwin:作为一个老牌的 GUI 库,有着较长时间的技术积累和众多实际项目的应用验证,在图形界面开发领域具有较高的知名度和可靠性。它提供了丰富多样的图形控件、窗口管理功能以及高效的图形绘制算法,能满足各种复杂的图形用户界面设计需求,无论是在工业自动化领域的人机交互界面,还是消费电子产品的显示界面等方面都有广泛应用,并且针对不同的硬件平台有较好的优化和适配,开发者可以基于它快速开发出高质量、专业的图形界面,但相对来说,由于其功能丰富,学习和使用成本可能会稍高一些。由 SEGGER 公司开发并维护,SEGGER 公司在嵌入式软件领域有着深厚的技术底蕴,长期致力于为开发者提供优质的开发工具和软件库,emwin 就是其众多优秀产品之一,深受全球嵌入式 GUI 开发者的信赖,并且公司会持续根据市场需求和技术发展对其进行更新升级。
littlevGL:是一个免费的开源图形库,具有丰富的图形组件、美观的视觉效果以及良好的可定制性,支持多种输入设备(如触摸、鼠标、键盘等),能够方便地创建出具有交互性的图形用户界面,适用于从嵌入式设备(如智能手表、智能家居显示屏等)到桌面应用等不同类型的项目开发,其开源的特性使得全球众多开发者可以参与到它的改进和完善中,通过社区的力量不断增加新功能、优化性能,同时也为开发者提供了大量的学习资源和示例代码,便于快速上手开发。
MonoGUI:这是一个黑白图形用户接口系统,特点在于其简单直接,专注于以黑白两色呈现图形界面,适用于一些对显示色彩要求不高、更注重信息展示和交互功能的嵌入式设备,比如早期的电子词典、简单的工业控制显示屏等,由于其只处理黑白两种颜色,相对来说在资源占用和处理速度上可能有一定优势,能够在硬件资源较为有限的情况下提供清晰、简洁的用户界面,满足基本的操作和显示需求。
MiniGUI:一个快速、稳定、跨操作系统的 GUI,具备良好的跨平台能力,能够在多种操作系统(如 Linux、Windows 等)上运行,为开发者提供了统一的图形界面开发接口,使得开发的应用可以方便地在不同操作系统环境下部署和使用。它在性能方面表现出色,能快速响应用户操作,渲染图形界面,同时提供了丰富的控件和窗口管理功能,适用于开发各种类型的应用程序,从嵌入式设备的操作界面到普通桌面端应用都可以使用 MiniGUI 来实现,在国内的嵌入式开发领域有较高的使用率和良好的口碑。由北京飞漫软件技术有限公司开发并维护,该公司在嵌入式 GUI 领域有着长期的技术研发和市场推广经验,MiniGUI 也是其主打产品之一,为国内众多开发者在跨操作系统的图形界面开发方面提供了有力的支持,并且公司会持续跟进技术发展,不断完善 MiniGUI 的功能和性能。
QT、QT_Creator:QT 是跨平台的应用程序和用户界面框架,以其强大的功能、丰富的类库和良好的跨平台特性而闻名于世。它采用 C++ 语言编写,支持多种操作系统(如 Windows、Linux、macOS、Android、iOS 等),提供了涵盖从图形界面设计、网络通信、数据库访问到多媒体处理等众多方面的功能模块,能够满足开发大型复杂应用程序的各种需求。QT_Creator 则是专门为 QT 开发的集成开发环境(IDE),提供了便捷的代码编辑、项目管理、调试等功能,方便开发者在一个统一的环境中高效地进行 QT 项目的开发工作,二者相辅相成,被广泛应用于各行各业的软件开发项目中,比如工业自动化软件、移动应用、桌面办公软件等。QT 由挪威的奇趣科技(Trolltech)公司最初开发(后被诺基亚、Digia 等公司收购),经过多年的发展和众多开发者的共同努力,已经成为全球最受欢迎的跨平台开发框架之一。QT_Creator 也是由相关的开发团队进行打造,旨在为 QT 开发者提供更优质、高效的开发体验,并且不断根据用户反馈进行更新升级,提升其易用性和功能性。
Gtk:是一个用于创造图形用户接口的图形库,它基于 C 语言开发,具有良好的跨平台性,能够在多种主流操作系统(如 Linux、Windows、macOS 等)上运行,为开发者提供了丰富的图形组件和布局管理功能,可用于创建各种风格和功能需求的图形界面,在 Linux 系统下应用尤为广泛,比如很多 Linux 桌面环境(如 GNOME)就是基于 Gtk 构建的,同时也被用于开发一些跨平台的应用程序,其开源的性质使得开发者可以根据自身需求对其进行定制和扩展,参与到社区的发展中。最初由 The GNOME Project 开发并维护,是 GNOME 桌面环境的重要组成部分,背后有众多开源开发者参与贡献,不断丰富其功能、优化性能,使其成为图形界面开发领域的重要力量,为 Linux 及其他操作系统下的图形界面开发提供了可靠的基础支持。
AWTK:是 ZLG 倾心打造的一套基于 C 语言开发的 GUI 框架,旨在为嵌入式设备提供简单易用、高效稳定的图形界面开发解决方案。它注重代码的简洁性和运行效率,提供了丰富的可视化组件和灵活的布局方式,能够方便地适配不同分辨率和硬件性能的嵌入式显示屏,适用于智能家居设备、工业控制人机界面、智能穿戴设备等各类嵌入式应用场景,其文档和教程相对完善,方便开发者快速学习和上手使用,并且 ZLG 在嵌入式领域有一定的技术积累和市场影响力,为 AWTK 的推广和持续优化提供了有力保障。
三、实用库 / 框架
cJSON:基于 C 语言开发的轻量级 JSON 解析库,能够高效地将 JSON 格式的数据解析为 C 语言中的数据结构,方便在嵌入式系统中处理 JSON 数据,如与云端服务器进行数据交互、解析配置文件等,其代码简洁、易于使用,并且具有较好的可移植性,在众多嵌入式项目中得到广泛应用,其开源的特性也使得开发者可以根据自己的需求进行定制和优化。
jsmn:同样是小巧的基于 C 语言的 JSON 解析库,专注于提供简单、快速的 JSON 解析功能,适用于资源受限的嵌入式环境,通过简洁的 API 设计,使开发者能够轻松地将其集成到自己的项目中,用于处理来自网络或存储设备的 JSON 数据,其代码量较少,易于理解和维护,在一些对 JSON 解析性能要求不高但注重资源占用的项目中具有优势。
MultiTimer:软件定时器扩展模块,为嵌入式系统提供了灵活的定时功能,允许开发者轻松创建和管理多个定时器,每个定时器可以独立设置定时时间和回调函数,适用于需要周期性执行任务的场景,如定时数据采集、状态更新等,其代码结构清晰,易于集成到现有的嵌入式项目中,通过合理的设计,能够在不占用过多系统资源的情况下实现高效的定时任务调度。
MultiButton:小巧简单易用的事件驱动型按键驱动模块,能够有效地处理嵌入式设备中的按键事件,支持多种按键触发方式,如单击、双击、长按等,通过事件回调机制,方便开发者在按键操作发生时执行相应的任务,如菜单切换、参数设置等,其代码简洁高效,对硬件资源的要求较低,适用于各类嵌入式按键交互场景,在开源社区中受到广泛关注和使用,开发者可以根据实际需求进行定制和扩展。
SmartTimer:轻量级的基于 STM32 的定时器调度器,针对 STM32 系列芯片进行了优化,充分利用了 STM32 的硬件定时器资源,提供了高精度的定时功能和灵活的任务调度机制,适用于 STM32 嵌入式项目中对定时任务要求较高的场景,如电机控制、实时数据采集等,其开源的代码为开发者提供了参考和学习的范例,同时也方便开发者根据自己的项目需求进行修改和完善。
CmBacktrace:一款针对 ARM Cortex-M 系列 MCU 的错误代码自动追踪库,当系统发生错误(如死机、异常中断等)时,能够自动记录函数调用栈信息,帮助开发者快速定位问题所在,大大提高了嵌入式系统的调试效率,对于开发复杂的嵌入式应用具有重要意义,其使用方便,只需简单的配置即可在项目中启用,并且支持多种开发工具和 IDE,是嵌入式开发者解决系统故障的得力助手。
EasyLogger:超轻量级、高性能的 C/C++ 日志库,为嵌入式系统提供了方便的日志记录功能,支持多种日志级别和输出方式,如串口输出、文件系统输出等,开发者可以根据项目需求灵活配置日志的详细程度和存储位置,用于记录系统运行状态、调试信息等,有助于在开发和维护过程中快速排查问题,其代码简洁、高效,对系统资源的占用较少,适用于各类嵌入式项目,尤其是对资源有限的小型设备更为友好。
EasyFlash:开源的轻量级嵌入式 Flash 存储器库,提供了简单易用的 Flash 操作接口,支持对 Flash 的读、写、擦除等基本操作,以及数据的存储和管理功能,如参数存储、固件升级等,适用于需要在嵌入式设备上持久化存储数据的场景,其具有良好的兼容性和稳定性,经过了多个项目的验证,开发者可以方便地将其集成到自己的项目中,通过简单的函数调用即可实现对 Flash 存储器的高效操作。
SFUD:开源的串行 SPI Flash 通用驱动库,旨在为不同型号的 SPI Flash 芯片提供统一的驱动接口,使得开发者在更换 Flash 芯片时无需对代码进行大量修改,大大提高了开发效率和代码的可维护性,支持常见的 SPI Flash 操作,如页编程、扇区擦除、读 ID 等,广泛应用于嵌入式系统中的数据存储和固件升级等场景,其开源的特性使得开发者社区能够不断对其进行完善和扩展,以支持更多新型的 SPI Flash 芯片。
lw_oopc:轻量级的 C 语言面向对象编程框架,通过在 C 语言中模拟面向对象的编程思想,如封装、继承、多态等,提高了代码的模块化和可维护性,使得开发者能够以更清晰、更高效的方式组织和编写嵌入式代码,适用于较大型的嵌入式项目开发,有助于团队协作和代码的复用,其开源的代码为 C 语言开发者学习和应用面向对象编程技术提供了实践参考,同时也可以根据项目需求进行定制和扩展。
PLOOC:受保护的低开销面向对象编程框架,在实现面向对象编程特性的同时,注重降低系统资源的开销,适用于资源受限的嵌入式环境,通过优化代码结构和内存使用,使得开发者能够在有限的资源条件下享受到面向对象编程带来的优势,如代码的可扩展性和可读性,其在一些对性能和资源要求较为苛刻的嵌入式项目中得到应用,开发者可以根据实际情况选择和使用其提供的功能,以提高项目的开发效率和质量。
cmd-parser:一个非常简单好用的命令解析器,能够将输入的命令字符串解析为相应的参数和命令标识符,方便在嵌入式系统中实现命令行交互功能,如设备的调试接口、参数配置等,开发者可以轻松定义自己的命令集和相应的处理函数,通过简单的配置和集成,即可为嵌入式设备添加强大的命令行操作功能,提高设备的可操作性和调试便利性,其开源的代码易于理解和修改,适用于各类需要命令行交互的嵌入式项目。
mqttclient:省资源、高稳定的 MQTT 客户端库,用于嵌入式设备与 MQTT 服务器进行通信,遵循 MQTT 协议标准,支持发布 / 订阅模式,能够在资源有限的嵌入式环境中稳定运行,实现设备与云端或其他设备之间的数据交互,适用于物联网应用中的各类传感器节点、智能设备等,其良好的性能和稳定性经过了实际项目的验证,开发者可以根据自己的需求进行配置和扩展,以满足不同的物联网应用场景。
NorthFrame:一个单片机极简图形化状态机框架,通过图形化的方式直观地展示系统的状态转移和事件驱动逻辑,降低了状态机编程的复杂性,提高了代码的可读性和可维护性,适用于嵌入式系统中的复杂逻辑控制场景,如工业自动化中的设备控制、智能家居中的设备状态管理等,开发者可以使用其提供的图形化工具进行状态机的设计和生成代码,然后轻松集成到自己的项目中,大大缩短了开发周期和降低了开发难度。
letter-shell:一个功能强大的嵌入式 shell,为嵌入式设备提供了类似于命令行终端的交互界面,支持多种命令格式和参数解析,开发者可以在 shell 中执行自定义的命令,实现对设备的调试、配置和监控等功能,同时支持命令历史记录、自动补全、快捷键等特性,提高了操作的便利性和效率,适用于各类嵌入式设备的开发和调试阶段,其开源的代码为开发者提供了丰富的定制化选项,可以根据设备的特点和需求进行个性化的配置和扩展。
pigweed:谷歌开源的嵌入式目标库(模块)集合,涵盖了多个方面的功能模块,如日志记录、进程间通信、设备驱动等,旨在为嵌入式开发提供一套全面、高效的工具集,利用谷歌在软件技术领域的优势,提供了高质量、经过充分测试的代码,适用于谷歌相关的嵌入式项目以及其他对代码质量和功能要求较高的嵌入式开发场景,其开源的特性使得开发者可以借鉴谷歌的技术思路和代码实现,同时也可以参与到社区的贡献中,共同完善和发展这些模块。
lwrb:一个轻量级通用环缓冲区管理器库,主要用于在嵌入式系统中高效地管理环形缓冲区数据结构。环形缓冲区在数据的连续存储和循环使用场景中非常实用,比如在串口数据接收、音频数据处理等情况下,能方便地实现数据的暂存和顺序处理,避免数据丢失或溢出等问题。该库代码简洁,对系统资源占用少,易于集成到各类嵌入式项目中,帮助开发者更便捷地处理数据缓存相关事务。
cQueue:使用 ANSI C 编写的消息队列功能函数,消息队列是一种常用的进程间或模块间通信机制,在嵌入式系统里可用于不同任务之间传递数据和同步信息,例如一个任务负责采集传感器数据,通过消息队列将数据传递给另一个任务进行处理或显示等。其遵循 ANSI C 标准,具有良好的可移植性,能适配多种硬件平台和操作系统,方便开发者依据实际项目需求灵活运用来构建可靠的通信架构。
Unity:一个轻量级的、适合嵌入式的测试框架,专注于为嵌入式软件提供便捷的单元测试功能。它能够帮助开发者编写测试用例,对嵌入式代码中的各个功能模块(如函数、类等)进行单独测试,以验证其正确性和稳定性,尽早发现潜在的代码缺陷,确保嵌入式系统在实际运行中的可靠性。其轻量级的特点使其可以在资源受限的嵌入式环境中顺利运行,且简单易用,降低了嵌入式测试的难度门槛。
Embedded Unit:是个纯标准 C 构建的单元测试框架,利用标准 C 语言的语法和特性来实现单元测试功能,这使得它能很好地兼容各种基于 C 语言开发的嵌入式项目,无需额外引入复杂的依赖库或特殊的编译环境。开发者可以依据框架提供的接口方便地编写测试脚本,对代码中的逻辑单元进行细致的测试,有助于提高嵌入式代码质量,保证项目功能的稳定实现,尤其适合对代码规范性和可移植性要求较高的嵌入式开发场景。
CuTest:一款微小的 C 语言单元测试框架,全部代码加起来不到一千行,这体现了其极致的简洁性。尽管代码量小,但依然能够满足基本的单元测试需求,帮助开发者快速验证 C 语言编写的嵌入式函数、模块的正确性,对于小型嵌入式项目或者初学者学习嵌入式单元测试来说,是一个很实用的工具,因其简单易读的代码结构,也便于开发者深入研究和根据自身需求进行定制拓展。
cmockery:谷歌 C 单元测试框架,依托谷歌强大的软件技术实力和开发经验,具备高质量、高可靠性的特点。它提供了丰富的功能和完善的测试机制,能够应对各种复杂的 C 语言代码测试场景,从简单的函数验证到大型模块的集成测试都能较好地支持,在谷歌内部以及众多采用谷歌技术的外部项目中广泛应用,其开源后也为广大嵌入式开发者提供了参考和借鉴的优质范例,推动嵌入式 C 语言代码测试技术的发展。
googletest:谷歌 C++ 测试框架,是专为 C++ 语言设计的专业测试工具,与谷歌的其他开发工具和编程规范配合紧密,功能十分强大,涵盖了单元测试、集成测试等多个层面,支持丰富的测试断言和测试套件组织方式,能高效准确地检测出 C++ 代码中的各种错误和不符合预期的行为,广泛应用于谷歌的各类大型 C++ 项目以及全球众多遵循谷歌开发风格的 C++ 应用开发中,对提升 C++ 嵌入式项目的代码质量起着重要作用。
znfat:振南 fat,国产嵌入式文件系统方案,旨在为国内嵌入式开发者提供一种自主可控、适合本土应用场景的文件系统选择。它针对嵌入式设备的存储特点和资源限制进行优化,具备良好的读写性能、稳定性以及对不同存储介质的适应性,可用于存储嵌入式设备的配置文件、数据记录等各类文件信息,在国内一些对数据存储有特定要求且强调自主知识产权的嵌入式项目中有着广泛应用,为国产嵌入式产业的发展提供了有力支撑。
libu:一个 C 语言写的多平台工具库,意味着它可以在多种不同的操作系统和硬件平台上使用,通过封装一系列实用的函数和工具类,为开发者解决跨平台开发过程中遇到的一些共性问题,比如文件操作、字符串处理、网络通信等方面在不同平台上的差异问题,大大提高了嵌入式项目跨平台移植的效率,使得开发者可以更专注于业务逻辑本身,减少因平台适配带来的开发成本和工作量。
LWIP:一个小型开源的 TCP/IP 协议栈,在嵌入式网络应用中起着关键作用。它实现了 TCP/IP 协议族中的基本协议,能够让嵌入式设备具备网络连接和通信能力,比如连接到局域网、与服务器进行数据交互等,并且在资源占用方面进行了优化,适合资源有限的嵌入式系统使用,广泛应用于物联网设备、网络摄像头、工业控制网络中的嵌入式节点等各类需要网络功能的场景,帮助这些设备融入网络世界,实现互联互通。由 Adam Dunkels 等众多开发者共同参与开发维护,是开源网络协议栈领域的经典项目,凝聚了全球嵌入式网络技术爱好者的智慧和贡献。
SQLite:一个开源的嵌入式关系数据库,特点是轻量级且功能强大,不需要独立的数据库服务器进程,直接以库的形式嵌入到应用程序中运行,这非常契合嵌入式系统资源有限且通常对数据库功能有特定需求的特点,可用于存储和管理各种结构化数据,如设备配置参数、历史记录数据等,在移动设备、嵌入式工业控制系统、智能家居设备等众多领域有着广泛应用,其稳定性和高效性经过了大量实际项目的验证,深受开发者信赖。由 D. Richard Hipp 开发并维护,在开源数据库领域有着重要影响力,吸引了全球众多开发者为其贡献代码和提出改进建议。
OpenBLT:一种开源引导加载程序,主要负责在嵌入式系统启动阶段加载内核或固件等关键代码到内存并执行,它具备良好的可定制性和兼容性,支持多种硬件平台和存储介质,能够实现远程固件升级、设备启动配置等功能,对于需要频繁更新固件或者远程维护的嵌入式设备来说至关重要,比如一些工业物联网设备、远程监控设备等,通过 OpenBLT 可以方便地进行远程管理和升级操作,提高设备的可维护性和生命周期管理能力。
Linux Lab:Linux 内核实验室,基于 Docker/Qemu 的极速 Linux 内核学习、开发和测试环境。借助 Docker 和 Qemu 的虚拟化技术,为开发者提供了一个便捷、隔离且可快速部署的环境,方便开发者在其中深入学习 Linux 内核的原理、进行内核代码的修改和开发新的内核功能,同时也能高效地对内核进行测试验证,无论是对于 Linux 内核的初学者入门学习,还是专业开发者进行内核相关的研发工作,都提供了极大的便利,有力地推动了 Linux 内核技术在嵌入式等领域的传播和应用。
airkissOpen:腾讯 airkiss 协议解析库,是腾讯针对无线设备配网场景推出的一种便捷的协议解析工具,用于解析 airkiss 协议,实现设备快速、便捷地接入无线网络,比如在智能家居设备初次联网配置时,通过 airkiss 协议可以简化用户操作步骤,设备借助该解析库就能顺利解析接收到的协议信息,从而自动连接到指定的无线网络,大大提高了用户体验,广泛应用于腾讯系以及众多兼容 airkiss 协议的物联网设备中。
nr_micro_shell:shell for MCU,单片机命令行交互工具,为单片机等嵌入式设备提供了一种简单直观的命令行操作界面,开发者可以通过该 shell 向单片机输入命令,实现对单片机内部资源的查看、参数配置、功能测试等操作,方便在开发和调试阶段快速定位问题、验证功能,并且可以根据项目需求定制命令集,增强设备的可操作性和调试便利性,在嵌入式单片机开发领域是一种常用的辅助工具。
FlexibleButton:FlexibleButton 是一个基于标准 C 语言的小巧灵活的按键处理库,在嵌入式设备的人机交互设计中扮演重要角色,它能够精准地处理各种按键事件,无论是机械按键还是触摸按键,支持多种按键触发模式(如单击、双击、长按等),并通过简洁的回调函数机制让开发者轻松地在按键操作发生时执行相应的功能代码,例如菜单切换、数值调整等,由于其小巧且灵活的特性,能很好地适应不同资源条件和功能需求的嵌入式项目,被广泛应用于各类手持设备、工控设备等的按键交互设计中。
mbedtls:一个开源、便携,易于使用,可读的和灵活的 SSL 库,主要用于在嵌入式系统中实现安全套接层(SSL)和传输层安全(TLS)协议相关功能,保障嵌入式设备在网络通信过程中的数据安全,比如在物联网设备与服务器进行加密通信、设备间安全数据传输等场景中发挥重要作用,其开源特性使得开发者可以根据自身需求对加密算法、协议配置等方面进行定制,同时其良好的可移植性保证了能在多种不同的嵌入式硬件平台上稳定运行,深受嵌入式安全领域开发者的青睐。
mosquitto :一个开源的 MQTT 代理,在 MQTT 通信架构中处于核心位置,负责接收来自 MQTT 客户端(如各种物联网设备)发布的消息,并根据订阅规则将消息转发给相应的订阅客户端,实现消息的高效分发和路由,具备高性能、稳定可靠、易于配置等特点,可用于构建大规模的物联网消息通信系统,支持众多的物联网应用场景,从智能家居到工业物联网等领域都有广泛应用,其不同版本(如强调下载速度快的版本)可能在安装包大小、启动速度等方面进行了优化,以满足不同用户的使用需求。
inih:C 语言编写的 INI 文件解析器,INI 文件常用于存储应用程序的配置信息,格式简单直观,该解析器能够方便地将 INI 文件中的键值对数据读取到嵌入式系统的内存数据结构中,供程序使用,或者将程序中的配置数据以 INI 文件格式保存到存储介质中,实现配置数据的持久化和灵活管理,在嵌入式项目中广泛应用于各种需要配置文件管理的场景,如设备参数配置、软件功能选项设置等,其代码简洁、易于集成到项目中。
QP:QP 实时嵌入式框架,基于状态机理论构建,为嵌入式系统中的实时控制和复杂逻辑处理提供了一套高效、规范的解决方案,通过可视化的状态机设计工具以及代码生成功能,帮助开发者快速构建基于状态机的应用逻辑,提高代码的可读性、可维护性和可测试性,广泛应用于工业自动化、汽车电子、航空航天等对实时性和可靠性要求较高的嵌入式领域,能够有效地管理系统状态和事件驱动的业务流程,确保系统稳定高效运行。
protobuf-c:protobuf-c 是 Protocol Buffers(一种由谷歌开发的轻便高效的结构化数据序列化机制)在 C 语言环境下的实现,它允许开发者将复杂的结构化数据转换为二进制格式进行存储或网络传输,在接收端又能准确地还原数据,具有高效、跨平台、语言无关等优点,在嵌入式系统中常用于不同设备间的数据交换、配置数据的存储等场景,尤其是在涉及到多语言协作开发的项目中,能够保证数据结构的一致性,提高通信和数据处理的效率。
eepromfs:基于 EEPROM 的简易类文件的数据读写库,针对嵌入式系统中常用的 EEPROM 存储设备,模拟文件系统的操作方式,让开发者可以像操作文件一样方便地对 EEPROM 中的数据进行读写,例如存储一些小容量但需要频繁修改的配置数据、设备状态记录等,这种类文件的操作方式更符合开发者的习惯,提高了数据管理的便捷性和可读性,适用于各类使用 EEPROM 作为存储介质的嵌入式项目,特别是对数据读写灵活性有一定要求的场景。
gear-lib:适用于 IOT / 嵌入式 / 网络服务开发的 C 库,整合了多个在物联网、嵌入式以及网络服务开发中常用的功能模块和工具函数,比如网络通信、数据处理、设备驱动适配等方面的功能,旨在为开发者提供一个一站式的开发资源库,减少在不同项目中重复开发类似功能的工作量,提高开发效率,其通用性和实用性使其可以应用于多种不同类型的嵌入式项目,尤其是涉及到物联网和网络服务集成的场景,助力开发者更快速地搭建项目框架和实现功能逻辑。
mult_timer:一个 Linux 下的超级精简的多重定时器,在 Linux 操作系统环境下的嵌入式项目中,为开发者提供了方便的定时功能,能够同时管理多个定时器任务,每个定时器可以独立设置定时周期和触发后的回调函数,用于实现诸如周期性的数据采集、任务调度等功能,其精简的设计保证了在不占用过多系统资源的情况下高效地完成定时任务管理,适合于对资源利用效率和定时精度有一定要求的 Linux 嵌入式应用场景。