错误处理不太可能成为任何用于嵌入式系统应用程序的操作系统的主要功能。这是资源限制的必然结果——所有嵌入式系统都有某种限制。这也是合乎逻辑的,因为只有有限数量的嵌入式系统有机会像桌面系统一样运行——即为用户提供机会来决定在发生某些异常事件时下一步要做什么。
在 Nucleus SE 中,大致有三种类型的错误检查:
“健全性检查”所选配置的工具——只是为了确保所选选项一致
可选包含代码以检查运行时行为
有助于设计更健壮的代码的特定 API 函数
本文将涵盖所有这些内容以及有关用户实现的诊断的一些想法。
配置检查
Nucleus SE 的设计非常易于用户配置,因此可以对其进行定制以充分利用可用资源。这种可配置性是一个挑战,因为选项的数量以及它们之间的相互依赖性非常大。正如之前许多文章中所述,Nucleus SE 的大多数用户配置是通过 在文件nuse_config.h 中设置#define常量来执行的。
为了帮助识别配置错误,包含了一个文件 – nuse_config_check.h –(即通过#include 进入nuse_config.c),它对#define 符号执行许多一致性检查。以下是该文件的摘录:
/*** 任务和任务控制 /
#if NUSE_TASK_NUMBER < 1 || NUSE_TASK_NUMBER> 16
#ERROR NUSE:任务数量无效-必须是1-16
#ENDIF
#如果NUSE_TASK_RELINQUISH &&(NUSE_SCHEDULER_TYPE == NUSE_PRIORITY_SCHEDULER)
#ERROR NUSE:NUSE_Task_Relinquish()选择-不是有效
的优先级调度
#ENDIF
#如果NUSE_TASK_RESUME &&! NUSE_SUSPEND_ENABLE
#error NUSE: NUSE_Task_Resume() 选择 – 任务暂停未
启用
#endif
#if NUSE_TASK_SUSPEND && !NUSE_SUSPEND_ENABLE
#error NUSE: NUSE_Task_Suspend() 选择 – 任务暂停不
启用
#endif
#if NUSE_INITIAL_TASK_STATE_SUPPORT && !NUSE_SUSPEND_ENABLE
#error NUSE:初始任务状态已启用 – 任务挂起未
启用
#endif
/ 分区池 ***/
#if NUSE_PARTITION_POOL_NUMBER > 16
#error NUSE:分区池数量无效 – 必须为 0-16
#endif
#if NUSE_PARTITION_POOL_NUMBER == 0
#if NUSE_PARTITION_ALLOCATE
#error NUSE: NUSE_Partition_Allocate() 已启用 – 未

本文详细介绍了Nucleus SE实时操作系统在错误检查和诊断方面的方法,包括配置检查、API参数检查、任务堆栈检查和版本信息。配置检查通过一致性验证避免不合逻辑的配置;API参数检查在运行时验证参数,防止错误调用;任务堆栈检查监控剩余堆栈空间;版本信息提供内核版本详情。此外,还讨论了用户如何实现特定应用的诊断,如内存检查、外围设备检查和看门狗服务等。
最低0.47元/天 解锁文章
479

被折叠的 条评论
为什么被折叠?



