ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

HRTOS COOP 实测:8051 低资源场景下创建 15 个任务,仅占用 68B XDATA

HRTOS COOP 实测:8051 低资源场景下创建 15 个任务,仅占用 68B XDATA 在 8051 单片机应用中资源往往是系统设计必须面对的限制。相比完整的 HRTOS 系统一些小型 8051 芯片并不需要复杂的抢占式调度、丰富的同步机制和大量系统资源而更需要一个足够小、足够稳定、能够支持多任务运行的实时操作系统。针对这一场景HRTOS 正在推进 COOP 独立版本为低资源 8051 应用提供更加轻量的协作式实时操作系统方案。本文通过一个实际工程测试对 HRTOS COOP 的资源占用和多任务能力进行验证。一、测试目标本次测试创建15 个任务所有任务均采用协作式调度方式运行。每个任务负责控制一个 LED 输出状态并通过os_schedule()主动让出 CPUos_task_delay()实现任务延时多个任务共享 CPU任务轮转执行构成一个简单的多任务运行环境。LED 显示序列为01 → 02 → 04 → 08 → 10 → 20 → 40 → 80 80 → 40 → 20 → 10 → 08 → 04 → 02 → 01通过这个测试可以同时观察 COOP 的多任务创建能力协作式任务切换Round-Robin 任务轮转任务主动让出 CPU任务延时极低系统资源占用二、测试代码本次测试一共创建 15 个任务os_task_create(task_led1, 1); os_task_create(task_led2, 2); os_task_create(task_led3, 3); os_task_create(task_led4, 4); os_task_create(task_led5, 5); os_task_create(task_led6, 6); os_task_create(task_led7, 7); os_task_create(task_led8, 8); os_task_create(task_led9, 9); os_task_create(task_led10, 10); os_task_create(task_led11, 11); os_task_create(task_led12, 12); os_task_create(task_led13, 13); os_task_create(task_led14, 14); os_task_create(task_led0, 15);每个任务执行自己的 LED 操作在完成一次工作后调用os_schedule();主动将 CPU 交给其他任务。其中一个任务还进行了延时测试os_task_delay(200); os_schedule();因此这不仅是一个简单的 LED 流水灯程序同时也验证了 COOP 的任务调度与延时机制。三、编译环境本次测试采用MCU8051编译器Keil C51操作系统HRTOS COOP测试工程hrtos_nano完整工程重新编译结果如下Rebuild started: Project: hrtos_nano Rebuild target hrtos_nano compiling os.c... compiling main.c... linking... *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS SEGMENT: ?PR?_OS_TASK_DELETE?OS Program Size: data9.0 xdata68 code909 creating hex file... 0 Error(s), 1 Warning(s)最终程序资源占用资源占用DATA9.0 BXDATA68 BCODE909 BError0Warning1其中最值得关注的是XDATA 仅占用 68 Bytes。四、15 个任务与 68B XDATA对于 8051 来说XDATA 是非常宝贵的资源。本次测试在仅使用68B XDATA的情况下创建并运行了 15 个任务。这意味着 COOP 并不是通过大量系统内存换取多任务能力而是在非常有限的资源条件下完成任务管理。对于一些资源非常紧张的 8051 芯片这种设计具有明显意义。尤其是一些只有较小 RAM/XDATA 资源的传统 8051并不适合运行完整功能的 RTOS。此时COOP 可以承担更加基础的多任务调度需求。五、协作式调度HRTOS COOP 采用协作式任务调度。任务不会被系统强制抢占而是在自身完成当前工作后主动调用os_schedule();将 CPU 控制权交给其他任务。这种方式最大的特点是简单、可控、资源开销低。对于控制逻辑明确、任务执行时间可预测的小型 8051 应用来说协作式调度已经能够满足大量实际需求。同时由于任务切换由任务主动触发因此系统不需要为了抢占式调度承担额外的复杂运行机制。六、为什么需要 HRTOS COOPHRTOS 完整版的目标是提供更加完整的 8051 实时操作系统能力包括更加复杂的任务管理、中断管理、同步通信、资源管理以及完整的工程生态。但是并不是所有 8051 芯片都拥有足够的系统资源。因此HRTOS COOP 并不是 HRTOS 完整版的简单缩减而是针对另一类应用场景进行设计HRTOS │ ┌─────────┴─────────┐ │ │ HRTOS 完整版 HRTOS COOP │ │ 完整实时系统 极低资源系统 │ │ 复杂应用场景 小型控制场景 │ │ 更强的系统能力 更低的资源开销两者形成互补。当系统资源充足、功能复杂时可以使用 HRTOS 完整版。当芯片资源非常有限而应用又需要多任务管理时可以选择 HRTOS COOP。七、一次非常典型的低资源测试这次测试最有价值的地方并不是 15 个任务这个数字本身。真正值得关注的是在 8051 极其有限的资源条件下仍然可以建立一个具备多任务调度能力的实时软件环境。最终程序DATA 9.0 B XDATA 68 B CODE 909 B TASK 15这使 HRTOS COOP 可以覆盖传统完整 RTOS 不容易覆盖的低资源应用。对于一些小型仪表、简单控制器、LED 控制、通信辅助任务以及传统 8051 项目而言这种极简系统具有实际价值。八、关于编译警告本次编译结果为0 Error(s), 1 Warning(s)唯一警告为UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS ?PR?_OS_TASK_DELETE?OS该警告对应任务删除相关代码未被当前测试程序调用并不代表系统编译失败。当前测试重点是多任务创建、任务调度、任务延时以及资源占用因此该功能没有进入本次测试路径。九、HRTOS COOP 的定位HRTOS COOP 的核心目标可以概括为面向低资源 8051 的极简协作式实时操作系统。它不追求在低资源芯片上复制完整 RTOS 的全部功能而是针对资源限制重新做取舍。其重点是极低内存占用极小程序体积多任务支持协作式调度任务延时适合传统 8051面向长期维护这也是 HRTOS 生态进一步完善的重要一步。十、总结本次hrtos_nano测试成功创建15 个任务并验证了 HRTOS COOP 的协作式调度、任务轮转和任务延时机制。最终资源占用仅为DATA 9.0 B XDATA 68 B CODE 909 B在资源极其有限的 8051 平台上实现这样的多任务能力正是 HRTOS COOP 存在的意义。未来HRTOS COOP 将从 HRTOS 完整版中进一步独立出来加强对低资源、低内存 8051 应用场景的覆盖与 HRTOS 完整版形成互补。HRTOS —— 面向 8051 的硬实时操作系统。HRTOS COOP —— 面向低资源 8051 的极简协作式实时操作系统。
返回列表