基于嵌入式操作系统VxWorks 的多任务并发程序设计(6)

本文档详细介绍了基于嵌入式操作系统VxWorks的多任务并发程序设计,涉及任务创建、调度策略、任务间通信以及中断处理。通过实例展示了如何实现与DSP的通信控制以及与Windows系统的数据交互,利用消息队列、二进制信号量等机制确保并发任务的协调运行。
摘要由CSDN通过智能技术生成

基于嵌入式操作系统VxWorks 的多任务并发程序设计(6)
――综合实例
作者:宋宝华 e-mail:
21cnbao@21cn.com
这一次连载我们将给出一个综合的实例,系统地用到连载1~5中所学的知识。
13 系统描述
假设我们面对这样的一个通信控制系统,它由三大部分组成:运行于PC 机
Windows 操作系统上的人机界面程序、运行于RISC 结构通用处理器上的VxWorks
操作系统和运行于数字信号处理(DSP)处理器上的波形处理软件。RISC 处理器和
DSP 都存在于目标电路板上,是一个典型的嵌入式系统硬件平台。在Windows 的人
机界面上我们可以编辑一些信息,经过TCP/IP 协议栈传递给VxWorks 操作系统,
VxWorks 再控制DSP 将这些信息经过数字调制之后发送出去。VxWorks 与DSP 通
过共享内存(硬件意义上的同一片内存,即同一存储芯片的相同存储空间)通信。
系统整体框架如下图:
人T机CP界/I面P
DSP
波形控制
Windows
共Vx享wo内rk存s 上述框架来源于一个真实的开发项目,限于技术保密的原因,笔者不能透露其
细节。但是从上述简单描述中,我们应该大概已知道该系统的功能。其实,这样的
系统非常常见,是一种较通用的软硬件架构方式。
14 任务控制与调度
整个VxWorks上的波形控制模块需要运行如下几个并发的用户任务:
// VxWorks与DSP之间的数据传递
(1)SendDatatoDSP:VxWorks发送数据到DSP;
(2)RecvDataFromDSP:VxWorks从DSP接收数据;
// VxWorks与DSP之间的通信控制(硬件查询方式)
(3)IsDspDataCome:查询DSP是否有数据向VxWorks传送;
(4)IsDspReqData:查询DSP是否向VxWorks及上层请求报文;
// VxWorks与Windows的数据传递
(5)SendDataToWin:通过socket(基于UDP协议)向Windows上传报文;
(6)RecvDataFromWin:接收来自Windows的通过socket(基于UDP协议)下
传的报文。
根据任务的紧要程度,SendDatatoDSP、RecvDataFromDSP、SendDataToWin、Se
ndDataToWin运行于相同的较高优先级,而查询任务IsDspDataCome、IsDspReqDat
a运行于相同的较低优先级。查询任务主要运行一个while(1)的无限循环,占据开
销很大,我们适宜让它们运行在SendDatatoDSP、RecvDataFromDSP、SendDataToWi
n、SendDataToWin四任务被阻塞的情况之下。
鉴于此,系统采用了优先级抢占和时间片轮转调度相结合的方式。
下面给出了启动这些任务的代码:
//向DSP发送数据任务
if ((taskSpawn("SendDatatoDSP", 180, 0, 100000,
(FUNCPTR) SendDatatoDSP,0,0,0,0,0,0)) == ERROR)
{
printf("Create Task Se

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值