Communication Model

邮箱通信(Mailbox)

邮箱机制用于实现任务之间的轻量级消息传递。 发送任务将数据写入邮箱,接收任务从邮箱读取数据,实现异步通信。

机制定义

Mailbox = 消息发送 + 邮箱缓存 + 消息接收 + 任务同步

Mailbox 是 HRTOS 通信模型(Communication Model)中的基础机制之一,用于实现任务间异步消息传递。

所属模型体系

Communication Model

返回通信模型总览

调度依赖关系

邮箱通信依赖调度器进行任务唤醒与切换。

触发条件

邮箱通信通常由以下情况触发:

任务发送消息

发送任务写入邮箱数据。

接收任务等待

接收任务阻塞等待消息到达。

邮箱数据就绪

消息到达后唤醒等待任务。

消息处理完成

任务读取并处理消息内容。

执行流程

1. 初始化邮箱

创建系统邮箱资源。

2. 发送任务写入消息

调用邮箱发送接口。

3. 接收任务等待消息

任务阻塞等待数据。

4. 数据到达唤醒任务

系统恢复接收任务执行。

5. 读取并处理消息

完成任务间通信。

演示代码


#include <HRTOS.H>
#include <HRTOS_KERNEL.H>

void sender(void)
{
    while(1)
    {
        os_news_send1(0, 0x55);
        os_wait1(10);
    }
}

void receiver(void)
{
    while(1)
    {
        os_wait1(5);
    }
}

void main(void)
{
    os_mail_init();

    os_task((unsigned int)sender, 0, 3, 0);
    os_task((unsigned int)receiver, 1, 2, 0);

    os_task_release(0);

    while(1)
    {
        os_nop();
    }
}
    

API 参考

邮箱初始化

os_mail_init()

发送消息

os_news_send1()

接收消息

os_news_recv1()

与其他通信机制对比

Message Queue

支持多消息缓存与队列管理。

Event Flags

适合状态触发型通信。

Semaphore

偏向同步与资源控制。

系统意义

邮箱通信为RTOS提供了简单高效的任务间消息同步机制, 适用于事件通知、状态更新与异步数据交换。

相关导航

通信模型

Communication Model

调度系统

Scheduling Engine

中断机制

Interrupt Flow

任务生命周期

Task Lifecycle