从核心来看,裸机应用程序就是在设备上电/复位例程中初始化硬件/软件后,在主函数中运行的一个大循环。所有的执行都是顺序逻辑,换句话说,除非被中断服务程序 (ISR) 中断,否则所有指令都是按顺序执行的。因此,在裸机编程中,您拥有的唯一非顺序逻辑就是利用异常。
虽然裸机编程通常与更高的能效、更低的内存占用以及潜在的更快性能相关联,但情况并非总是如此。对于简单的应用程序,采用单一的顺序逻辑循环就足够了,并能从裸机程序固有的能效和内存节省中获益。然而,随着应用程序复杂性的增加,仅通过顺序逻辑来维护固件架构可能会变得具有挑战性,且缺乏可扩展性和可移植性。这正是使用实时操作系统 (RTOS) 展现优势的地方。
在操作系统之上设计应用程序,允许您的应用程序在被称为“线程”的不同执行单元中运行多个并发逻辑,从而使您的架构变得简单,而不是像独立模式下那样仅在主函数中运行一个顺序逻辑。
RTOS 的核心被称为内核,它控制系统中的一切。另一个巨大的附加优势是像 Zephyr 这样的 RTOS 原生提供的库、驱动程序和协议栈等海量资源。
中断服务程序 (ISR) 在基于 RTOS 的应用程序和裸机应用程序中均可使用。它们由配置的不同设备驱动程序(包括回调函数)和协议栈异步生成。

在基于 Zephyr RTOS 的应用程序中,包含 main() 函数是可选的。这是因为 RTOS 自动生成的子主线程将完成必要的 RTOS 初始化,包括调度器/内核设置以及核心驱动程序设置。
之后,它将尝试调用用户定义的 main()(如果存在)。如果不存在 main() 函数,主线程将退出。系统仍将保持运行,其他线程可以正常调度。