Feedback
Feedback

If you are having issues with the exercises, please create a ticket on DevZone: devzone.nordicsemi.com
Drag & Drop Files, Choose Files to Upload 您最多可以上传 2 个文件。
  • 简体中文
    Eng
    简体中文
  • 裸机与 RTOS 编程对比

    裸机应用程序

    从核心来看,裸机应用程序就是在设备上电/复位例程中初始化硬件/软件后,在主函数中运行的一个大循环。所有的执行都是顺序逻辑,换句话说,除非被中断服务程序 (ISR) 中断,否则所有指令都是按顺序执行的。因此,在裸机编程中,您拥有的唯一非顺序逻辑就是利用异常。

    虽然裸机编程通常与更高的能效、更低的内存占用以及潜在的更快性能相关联,但情况并非总是如此。对于简单的应用程序,采用单一的顺序逻辑循环就足够了,并能从裸机程序固有的能效和内存节省中获益。然而,随着应用程序复杂性的增加,仅通过顺序逻辑来维护固件架构可能会变得具有挑战性,且缺乏可扩展性和可移植性。这正是使用实时操作系统 (RTOS) 展现优势的地方。

    基于 RTOS 的应用程序

    在操作系统之上设计应用程序,允许您的应用程序在被称为“线程”的不同执行单元中运行多个并发逻辑,从而使您的架构变得简单,而不是像独立模式下那样仅在主函数中运行一个顺序逻辑。

    RTOS 的核心被称为内核,它控制系统中的一切。另一个巨大的附加优势是像 Zephyr 这样的 RTOS 原生提供的库、驱动程序和协议栈等海量资源。

    中断服务程序 (ISR) 在基于 RTOS 的应用程序和裸机应用程序中均可使用。它们由配置的不同设备驱动程序(包括回调函数)和协议栈异步生成。

    裸机(左)和基于 RTOS(右)应用程序的可视化

    注意

    在基于 Zephyr RTOS 的应用程序中,包含 main() 函数是可选的。这是因为 RTOS 自动生成的子主线程将完成必要的 RTOS 初始化,包括调度器/内核设置以及核心驱动程序设置。

    之后,它将尝试调用用户定义的 main()(如果存在)。如果不存在 main() 函数,主线程将退出。系统仍将保持运行,其他线程可以正常调度。

    Switch language?

    Progress is tracked separately for each language. Switching will continue from your progress in that language or start fresh if you haven't begun.

    Your current progress is saved, and you can switch back anytime.

    Register an account
    Already have an account? Log in
    (All fields are required unless specified optional)

    • 8 or more characters
    • Upper and lower case letters
    • At least one number or special character

    Forgot your password?
    Enter the email associated with your account, and we will send you a link to reset your password.