TinyOS中的电源锁与硬件抽象架构解析
1. 电源锁概述
在编程中,无线电栈的接收部分需要完成一系列步骤,包括从无线电读取数据包、检查是否发送确认、切换到传输模式、发送确认以及返回接收模式。这些步骤通常是单独的分阶段操作。以CC2420无线电为例,每个操作都需要通过SPI总线发送读写数据的命令。然而,SPI总线被许多芯片和子系统共享,例如闪存存储驱动可能会在节点接收数据包时同时使用SPI总线读取数据。因此,无线电栈需要一种方法来请求对总线的独占访问,完成操作后再释放总线。
1.1 分阶段锁
TinyOS通过分阶段锁支持对资源的独占访问。传统的锁(如互斥锁和信号量)是阻塞结构,用于保护关键部分或共享数据结构。但TinyOS没有阻塞调用,因此其锁必须是分阶段的。组件通过调用命令请求电源锁,并在获得锁时接收事件。锁接口名为 Resource ,其定义如下:
interface
Resource
{
async
command
error_t
request ();
async
command
error_t
immediateRequest ();
event
void
granted ();
async
command
void
release ();
async
command
uint8_t
getId ();
}
获取锁时,组件通常调用 request ,之后会收到 grante
超级会员免费看
订阅专栏 解锁全文
2556

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



