邮箱通信(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 参考
与其他通信机制对比
Message Queue
支持多消息缓存与队列管理。
Event Flags
适合状态触发型通信。
Semaphore
偏向同步与资源控制。
系统意义
邮箱通信为RTOS提供了简单高效的任务间消息同步机制, 适用于事件通知、状态更新与异步数据交换。