ti.sysbios.knl.Mailbox邮箱模块提供了一组管理邮箱的功能。邮箱能够用于将缓冲区从同一处理器上的一个任务传递到另一个任务。

一个邮箱实例可以由多个读写器使用

邮箱模块将缓冲区复制到固定大小的内部缓冲区。这些缓冲区的大小和数量是在创建(或构造)实例时指定的。通过Mailbox_post()发送缓冲区时,将完成复制。通过Mail_pend()检索缓冲区时发生另一个副本。

Mailbox_create()和Mailbox_delete()被用于创建和删除mailkoxes。也可以静态创建邮箱对象。

邮箱可用于确保传入缓冲区的流量不会超过系统处理这些缓冲区的能力。

邮箱创建时,可以指定内部邮箱缓冲区的数量和每个缓冲区的大小。由于在创建的时候指定了大小,因此与邮箱实例一起发送和接收的所有缓冲区的大小都必须相同。

下面时邮箱的创建和删除

Mailbox_Handle Mailbox_create(SizeT bufsize,UInt numBufs,Mailbox_Params *params,Error_Block *eb
)Void Mailbox_delete(Mailbox_Handle *handle);

Mailbox_pend()用于从邮箱读取缓冲区。如果没有可用的缓冲区(则邮箱为空),则Mailbox_pend()将阻塞。timeout参数允许任务等待超时的时间,无限期等待(BIOS_WAIT_FOREVER),或者根本是不等待(BIOS_NO_WAIT)。时间单位是system clock ticks。
下面是函数原型:

Bool Mailbox_pend(Mailbox_Handle handle,Ptr buf,UInt timeout
);

Mailbox_post()用于将缓冲区投递到邮箱,,如果没有可用的缓冲区插槽(即邮箱已满),则mailbox_post()将阻塞,timeout参数允许任务等待超时的时间,无限期等待(BIOS_WAIT_FOREVER),或者根本是不等待(BIOS_NO_WAIT)。

Bool Mailbox_post(Mailbox_Handle handle,Ptr buf,UInt timeout
);

邮箱提供配置参数,允许您将事件与邮箱关联起来。者允许您同时等待一个邮箱消息和另一个事件。Mailbox提供两个配置参数来支持邮箱readerEvent和readerEventId的读取器事件。这允许邮箱读取器使用事件对象等待邮箱消息。Mailbox还为邮箱写入程序提供了两个配置参数writerEvent和writerEventId。这允许邮箱writers使用事件对象来等待邮箱中的空间。

请注意,这些事件句柄的名称可能会引起误解。readerEvent是邮箱读取器应该挂起的事件,但是它是由邮箱writer在Mailbox_post()调用中发布的。writerEvent是邮箱写入程序应等待邮箱未满时挂起的事件,以便使它能够成功执行Mailbox_post(),而不会因为邮箱已满而挂起。但是,每当成功读取邮箱时,writeEvent由邮箱读取器发布(即,Mailbox_pend()返回TRUE)

使用事件时,线程调用Event_pend()并等待多个事件。从Evnet_pend()返回时,线程必须调用Mailbox_pend()或Mailbox_post()这取决于它是reader还是writer,超时值为BIOS_NO_WAIT。

调用Mailbox_post()可能会导致在特定情况下重新启用硬件中断。

参考文献:

  1. 《TI-RTOS Kernel (SYS/BIOS) User’s Guide》

TI-RTOS---Mailboxes相关推荐

  1. CC3200 TI RTOS LPDS模式

    如何让CC3200正确进入LPDS模式: In Non-OS mode, the call to cc_idle_task_pm should be made directly to get into ...

  2. TI RTOS Kernel

    ##简述 Kernel是一个RTOS最核心的部分,因此大致了解下,对于基于该RTOS的Application的开发会很有帮助. ##TI-RTOS线程 ###启动流程(Start up) 和常见MCU ...

  3. TI RTOS BLE NVS FLASH 驱动

    目录 环境 MX25R8035F Flash 1. 添加NVS 1.1. 配置NVS 1.2. 配置SPI 2. 代码 3. Flash 操作 环境 系统:Windows 10 SDK:simplel ...

  4. TI RTOS BLE CC2642 看门狗 Watcdog

    目录 环境 1. 添加 Watchdog 插件 2. 代码 环境 系统:Windows 10 SDK:simplelink_cc13x2_26x2_sdk_4_30_00_54 IDE:Code Co ...

  5. TI RTOS User Guide

    ##简述 TI-RTOS的设计.使用上希望有较为全面的了解. ##如何使用TI-RTOS评估Application 使用CCS IDE时,可以通过拉出CC26xx的UART线,将printf重定向到U ...

  6. Xiaojie雷达之路---TI实战笔记---ESM Driver说明

    ESM驱动提供API来配置和处理来自ESM H/W模块的错误 ESM头文件在应用程序中应该被包含如下: #include <ti/drivers/esm/esm.h> 驱动初始化 ESM驱 ...

  7. 创龙TI AM570x浮点DSP C66x + ARM Cortex-A15工业开发板规格书

    TL570x-EVM是一款由创龙基于SOM-TL570x核心板设计的开发板,它为用户提供了SOM-TL570x核心板的测试平台,用于快速评估SOM-TL570x核心板的整体性能. TL570x-EVM ...

  8. TDA4VM 8.4 RTOS SDK 中 SBL 的编译流程解析与makefile 分析笔记

    目录 0. TDA4VM 8.4 RTOS SDK 中 SBL 的编译流程解析 TI SDK 的可执行文件后缀名是 .xer5f 的原因 sbl_ospi_img 的 .xer5f 可执行文件的生成过 ...

  9. Xiaojie雷达之路---TI实战笔记---MSS代码详细解读

    文章目录 前言 基础知识 文章中会用到的专业术语 毫米波雷达的初始化流程(在MSS中) 本案例中要用的其他知识 UART MailBox Semaphore 代码解读 main函数 MRR_MSS_i ...

  10. CC1310在868MHz的电路设计

    一.CC1310的简单介绍 特点 CC1310器件是一款高度集成.真正的单片解决方案,其整合了一套完整的RF系统及一个片上DC-DC转换器.该器件具有出色的灵敏度和稳定性(可选择性和阻断)性能,不会以 ...

最新文章

  1. copy构造函数使用深copy
  2. TZOJ 3030 Courses(二分图匹配)
  3. Swiper(Swiper master)是目前应用较广泛的移动端网页触摸内容滑动js插件
  4. [轉]数据挖掘工具的选择
  5. 百度富文本编辑器的应用技巧---在一个页面中使用多个样式不同功能不同的编辑器...
  6. c语言编程游戏开代码错误,[蓝桥杯][历届试题]数字游戏 (C语言代码)(兄弟们帮我看一下为什么运行错误86%)...
  7. socket、端口、进程的关系
  8. C和C++里面的lvalue 和 rvalue的释义
  9. 机器学习-数据科学库-day5
  10. DevOps使用教程 华为云(9)代码检查
  11. shortest path problem
  12. 在家也可以免费下载知网文献,5种免费下载知网文献方法
  13. 什么是1/f噪声_1/f噪声对电路有何影响_如何消除或降低1/f噪声
  14. Zabbix使用指南
  15. 平台搭建---Hive使用介绍
  16. 棣拓DTAS公差分析软件-蒙特卡洛法公差分析软件-容差分析软件
  17. 爆火书单视频怎么制作?实用制作教程来了
  18. 网络安全学习笔记——红队实战攻防(上)
  19. 学生选课系统项目设计报告
  20. Python调用腾讯API发送短信验证码

热门文章

  1. 双向链表基本操作(C语言)
  2. Nessus详细使用教程
  3. PCB设计的148项检查项目,帮你避免不必要的错误!
  4. hadoop 各种概念整理
  5. 国产真无线也有圈铁配置,音质还真不错,FiiTii(魔浪)HiFiPods上手
  6. 蓝牙耳机比较好用的五个品牌品牌推荐
  7. Windows 10企业批量部署实战之MDT 2013 Update 1 preview安装配置
  8. 人大金仓数据库生成uuid
  9. 如何检查显卡适合哪个CUDA的版本?
  10. JavaScript 数组字符串方法