裸机应用
裸机应用程序的核心只是在设备上电/重置例程中初始化硬件/软件后主函数中的一个大循环。所有执行都是顺序逻辑,换句话说,所有指令都按顺序执行,除非被中断服务例程 (ISR) 中断。因此,裸机编程中唯一的非顺序逻辑是使用异常。
虽然裸机编程通常具有更高的能效、更少的内存使用量和更快的性能,但情况并非总是如此。对于简单的应用程序,采用单个顺序逻辑循环就足够了,这得益于裸机程序固有的能效和内存节省。然而,随着应用程序复杂性的增加,仅通过顺序逻辑维护固件架构可能会变得具有挑战性、不可扩展和不可移植。这就是使用实时操作系统 (RTOS) 的优势所在。
基于RTOS的应用
在操作系统上设计应用程序允许您在应用程序中拥有在称为线程的不同执行单元中运行的多个并发逻辑,从而使您的架构变得简单,而不是仅在独立模式下在主函数中运行一个顺序逻辑。
RTOS 的核心称为内核,它控制系统中的所有内容。另一个巨大的附加优势是 Zephyr 等 RTOS 原生提供大量库、驱动程序和协议栈资源。
中断服务程序 ( ISR ) 可用于基于 RTOS 的应用程序和裸机应用程序。它们由配置的不同设备驱动程序(包括回调函数)和协议栈异步生成。
裸机(左)和基于 RTOS(右)的应用程序可视化
Note
在基于 Zephyr RTOS 的应用程序中,该main()函数是可选的。这是因为 RTOS 自动生成的主线程将执行必要的 RTOS 初始化,包括调度程序/内核设置和核心驱动程序设置。
之后,它会尝试调用用户定义的 (main()如果存在)。如果不main()存在函数,主线程将退出。系统仍将正常运行,其他线程可以正常调度。