实时核心应用程序设计建议
重要
这是 Azure Sphere(旧版)文档。 Azure Sphere(旧版)将于 2027 年 9 月 27 日停用,用户此时必须迁移到 Azure Sphere(集成)。 使用位于 TOC 上方的版本选择器查看 Azure Sphere(集成)文档。
实时(RT)核心应用程序在裸机上运行,或者在实时核心上使用实时操作系统(RTOS)运行。 HL 核心应用程序的许多设计建议也适用于设计 RT 核心应用程序。 本主题讨论在设计 RT 核心应用程序时要考虑的进一步设计建议。
- 使用监视器计时器: 建议启用并实现 MT3620 监视器计时器,以便可以检测死锁并实现正确的恢复逻辑。 有关详细信息,请参阅 RTApp 中使用监视器计时器。 这也可能是 RT 应用程序可以向 HL 核心应用程序(例如,通过核心间邮箱)发出信号,指出出现问题,以便任一应用程序(例如重置设备)可以采取适当的操作。 这可以通过以下方式完成:
- 通过从 HL 核心应用程序调用
PowerManagement_ForceSystemReboot
函数来重启设备。 请参阅 设备上的重启级别。 - 通过 MT3620 电源管理引脚(PMU_EN、EXT_PMU_EN或SYSRST_N)通过专用 GPIO 执行硬件重置来绕过 HL 核心 API。 有关PMU_EN和EXT_PMU_EN的详细信息,请参阅 Power Down 注意事项。 使用SYSRST_N的硬件重置通常涉及设计设备示意图,其中最多三个(每个核心一个)专用重置 GPIO,通过二元和 RC 筛选器连接到设备的SYSRST_N引脚。 如果设计需要从任何核心上运行的任何应用程序进行确定性恢复,则执行硬件重置允许任何 HL 核心和 RT 核心应用程序执行独立操作。
- 通过从 HL 核心应用程序调用
注意
请仔细考虑使用 GPIO 从 RT 核心应用程序重置设备,因为编程或设计的意外效果(例如,持续重置设备)可能会阻止设备接收操作系统和应用程序更新。
- 在组合 HL 核心和 RT 核心应用程序的项目中实现核心间通信: 即使不需要显式通信,也始终建议在 HL 核心和 RT 核心应用程序之间实现最小的通信交换。 有关详细信息,请参阅 与支持实时的应用程序通信。 除了在明确设计核心间通信作为整体应用程序体系结构的一部分时进行明显的数据交换外,双方在相互状态方面同步非常重要,以便可以相互管理更好的整体设备状态(请参阅 核心间通信 示例)。
有关开发 RT 核心应用程序的其他参考信息,包括用于使用 MT3620 外围设备和功能的驱动程序和示例,请参阅:
- MediaTek MT3620 文档
- MediaTek MT3620 M4 驱动程序和实时应用程序示例代码
- Codethink Labs 为 Azure Sphere MT3620 实时核心(CM4)的驱动程序 - 这些驱动程序是使用易于使用的接口(API)开发的,这些接口(API)非常模拟可用于 HL 核心应用程序的驱动程序。
- Codethink Labs 提供的 Azure Sphere MT3620 实时核心(CM4)示例