【转】DSP/BIOS中的SEM

本文介绍了DSP/BIOS中的Semaphore(旗语)模块,它用于任务同步和通信。Semaphore通过SEM_pend和SEM_post进行操作,实现任务间的消息传递和互斥访问。举例说明了Semaphore在队列和互斥锁场景的应用,强调了Semaphore在解决资源冲突和避免竞态条件上的作用。
摘要由CSDN通过智能技术生成
SEM旗语模块通过对旗语的计数完成任务的同步和相互作用。

    据个人了解:可以有两个功能

(1):使用信号量旗语发送消息(类似MBX)

       旗语是一种DSP/BIOS内核定义的数据结构,用于任务线程之间的通信,同步以及访问共享数据。

通过SEM_pend()来等待旗语的到来,未到来前将此任务挂起。通过SEM_post发送旗语。

参考例程:semtest

该例程SEM配合QUE一起使用:定义一个队列,然后写任务和读任务轮流访问该队列。三个写任务的优先级相同,如果不调用任务切换函数(TSK_yield()或者是sleep),第一个写任务会一直执行完毕,然后第二个,第三个,如果调用了任务切换函数,三个任务轮流执行。

       图形化配置里的参数:initial semaphore count  旗语计数器的初始值

主要是配合SEM_pend()使用,如果旗语计数值大于0,SEM_pend()函数简单的减少计数值并返回,如果旗语计数值为0,那么任务将等待另一线程调用SEM_post()来发送旗语。

(2):利用旗语解决冲突(区别MBX)

      如果两个任务共享一个数据结构,当其中一个任务线程修改这个数据结构时,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值