- 1 -
中国科技论文在线
基于 VDK 的多 DSP 实时操作系统设计#
胡新康,汪国有*
基金项目:武器装备预先研究基金(103020302)
作者简介:胡新康(1983—),男,硕士研究生,主要研究方向:嵌入式操作系统
(华中科技大学图像识别与人工智能研究所,武汉 430074)
摘要:介绍了 ADI 公司的实时操作系统(RTOS)VDK的特点,并将其应用到多 DSP系统中,
提高了多 DSP 系统中软件开发的效率和可移植性。在以两片 ADSP—TS101 为核心的嵌入式硬
件平台上,利用 VDK 搭建了一个小型的实时操作系统,实现了系统与主机之间的通讯、双
DSP 之间的快速数据传输、多线程之间的调度与通信、中断处理等核心功能。使得双 DSP 可
以同步并行的工作并实时与主机进行数据交互,加快了系统的处理速度,增大了系统的数据
吞吐率。系统完成了对视频图像数据流中目标检测跟踪的任务并满足实时性要求。
关键词:操作系统;实时处理;DSP;VDK;并行处理
中图分类号:TP316
Building a Multi-DSP real-time operating system based on
VDK
Hu Xinkang, Wang Guoyou
(Institute for Pattern Recognition and Artificial Intelligence,Huazhong University of Science and
Technology,WuHan 430074)
Abstract: This paper introduces the trait of the real-time operating system VDK(Visual DSP++ kernel)
of ADI ,and applies it to a multi-DSP system,it turns out that this design method of using VDK can
improve the efficiency and portability of software developing on multi-DSP system. The
communication between the system and the host,the data transfer between two DSPs,the
communication and scheduling among threads,and Interrupt handling have been all has
improved the data processing speed of the system and increased the system's data
system can detect and track the target in video image data and meet the real-time requirements.
Keywords:operating system;real-time processing;DSP;VDK;parallel processing
0 引言
TigerSHARC 101(简称 TS101)是 Analog Devices 公司推出的一款高性能的浮点数字
信号处理器,多片 TS101 可采用共享总线的方式构成紧耦合的多处理器系统,DSP 之间可
通过 4 条链路口进行互连构成松耦合的分布式处理系统,实现 DSP 之间的点对点通信。
随着 DSP 处理器功能的日益强大,要把 DSP 的性能充分发挥出来就离不开操作系统的
支持。嵌入式操作系统能提高 DSP 的软件开发速度,便于系统调试,使得硬件可以更好的
被抽象化,代码可以更好的被复用。VisualDSP++ Kernel(VDK)是一种抢先的多任务实时操
作系统,是 AD 公司 DSP 软件开发工具 VisualDSP++的重要组成部分,能够对 ADI 的各款
DSP 进行很好的支持,可用于任务调度和 DSP 之间的通信。VDK 具有通用操作系统的特点,
能够有效管理复杂的系统资源,实现硬件虚拟化[1]。基于 VDK 的软件设计可以不针对具体
的硬件电路,当移植到新的硬件平台上时,不用修改程序的源代码,只需对系统重新进行配
置就可以运行,大大提高了系统中软件开发的效率和可移植性。
本文以实际项目中双 DSP 系统的研制为例,研究了如何实现基于 VDK 的多 DSP 实时
操作系统。
- 2 -
中国科技论文在线
1 ADSP-TS101 及硬件系统组成简介
TigerSHARC 101(简称 TS101)是 ADI 公司推出的高性能的浮点数字信号处理器,它
采用针对大数据量处理任务优化了的静态超标量体系结构,具有 128 位内部总线宽度,内部
集成了 6Mbit 的 SRAM,处理器最高工作主频为 300MHZ,在一个周期内可以执行 4 条指令,
每秒可进行 亿次乘累加运算或 亿次浮点运算,同时支持灵活的多处理器互联,可以
方便的实现多处理器并行处理系统[2]。每个处理器具有 4 个 8 位的链路口,工作频率最高可
达 150MHZ,可以用于多个 TS101 之间点对点的通信,也可与其他具有相同协议的 IO 设备
通信[3]。
本设计中嵌入式多 DSP 硬件平台的系统组成框图如下:
本
地
总
线
PC
I接
口
模
块
图1 系统硬件结构图
Hardware structure of the system
系统由视频采集与显示模块、视频处理模块和 PCI 接口模块三个部分组成。其中,视频
采集与显示模块提供一路的模拟视频输入和一路的模拟视频输出;视频处理模块中两个 DSP
外部总线直接互连,DSP 本身支持多处理器间的竞争和共享总线仲裁;两个 DSP 之间通过
link 口直接互连,两个 Link 口提供最大 500MB/S 的数据传输能力;两个 DSP 共享 256MB
的 SDRAM 存储空间,启动时先由 FLASH 对主 DSP 进行加载,随后主 DSP 对从 DSP 进行
加载;PCI 接口模块实现 PCI 总线到本地总线的转换。
2 VDK 简介
VisualDSP++ Kernel(VDK)是 ADI 公司推出的一款实时嵌入式内核,它能够很好的支
持 ADI 的各款 DSP,可用于任务调度和处理器之间的通信,从而能使系统充分的利用先进
- 3 -
中国科技论文在线
的调度和资源分配算法来解决存储器分配和定时约束条件问题[4]。
VDK 主要由线程、中断服务例行程序、调度程序、同步信号和设备标志等部分组成。
VDK 是一种抢先式的多任务内核,优先级高的线程能抢占低优先级的线程,调度器的任务
就是在一个线程执行过程中进行抢先,然后在适当的时候恢复被抢先的线程。每一个线程都
有一个优先级,供调度时使用。同时,VDK 还可以根据用户提供的一系列模式来实现三种
更为复杂的多线程时序调度:合作式调度方式、时间片轮转调度方式和抢占式调度方式。
VDK 允许系统中同时使用这三种调度方式[5]。
VDK 应用软件开发分层结构图如下:
用户应用线程
实时操作系统内核(VDK)
嵌入式硬件系统
图2 基于 VDK 的系统分层结构
The system structure based on VDK
由图 2 可见,VDK 和嵌入式硬件平台对用户应用线程来说是透明的,而 VDK 是 Visual
DSP++的一部分,它随 VisualDSP++一起更新,因此当底层的 VDK 和硬件系统升级或更换
时,上层的用户应用程序并不需要重写,而只需对系统配置进行相应调整即可,提高了上层
用户应用程序的可移植性和可复用性。
3 系统详细设计
系统线程设计
在主 DSP 中,根据系统要实现的功能,将其系统划分为以下几个线程:与主机通讯线程、
视频图像采集线程、目标检测线程、DSP 间图像数据传输线程、DSP 同步线程和中断处理
线程。鉴于系统任务需要,线程之间采用抢占式的任务调度方式,即一旦就绪队列中的某一
线程的优先级高于当前运行线程的优先级,则它立刻获得响应而成为当前运行线程。主 DSP
中各线程所实现的主要功能描述如下:
① 与主机通讯线程:负责接收并处理上位机发送的控制命令(主要是待识别目标的特
征参数等信息),在目标检测线程检测到目标后,将目标的个数、坐标、大小、置信度等数
据回传给上位机。
② 视频图像采集线程:负责从视频输入设备输入的视频流采集成一幅幅完整的图像,
交给目标检测线程进行处理。期间,如果视频图像采集线程快于目标检测线程的速度,则其
还要负责 SDRAM 中的图像缓冲区的维护。
③ 目标检测线程:是整个系统中的核心线程,根据上位机发送的待识别目标的特征参
数等信息,从图像中检测是否有符合特征的目标。若检测到目标,则将目标的相关信息传送
给与主机通讯线程,并在视频数据流中将检测到的目标用醒目的方式标注出来,便于在视频
输出设备上查看目标。其中目标检测算法的好坏直接关系到目标检测的效果。
④ DSP 间图像数据传输线程与 DSP 同步线程:由于采用了双 DSP 的结构,每个 DSP
轮流处理采集来的各帧图像,所以主 DSP 接受到了图像数据后,要判断该帧图像是否应该
自己处理,若不是,则需要将图像数据用 DMA 的方式快速传输给从 DSP 处理。而从 DSP
在处理完图像数据后也需要通过 DSP 间图像数据传输线程将处理结果回传给主 DSP。这两
个线程负责主、从 DSP 之间的同步与数据交换。
- 4 -
中国科技论文在线
⑤ 中断处理线程:完成释放信标、改变事件位、激活设备驱动以及与线程交换数据等
任务。
在从 DSP 中,没有了与主机通讯线程和视频图像采集线程,其他的线程及其功能基本
上与主 DSP 相同。
双 DSP 并行处理的详细程序流程设计
系统中软件运行的详细流程图如下:
开始
DSP0初始化
设置链式DMA
新一帧图像
传输完毕?
DSP图像处理
传输目标坐标
链式DMA启动
触发中断,修
改图像编号
图像编号是否改变?
Y
Y
N
传输视频图像
比较图像编号
N
Y
图像编号为
奇数?
新一帧图像
传输完毕?
启动
LINK DMA
触发中断,修
改图像编号
Y
传输视频图像
N
N
开始
DSP1初始化
DSP图像处理
传输目标坐标
图像编号是否改变?
Y
比较图像编号
N
DSP0执行流程
(主)
DSP1执行流程
(从)
图3 双 DSP 并行处理流程详解
Double DSP parallel processing program flow chart
其中,主控 DSP 除了承担图像中目标检测任务以外,还承担着图像采集与传输、与上
位机通讯等任务。而从 DSP 只负责目标检测的任务。主 DSP 和从 DSP 通过各自的 link2 和
link3 链路口互连,DSP 间的图像传输和消息的传送均通过这两个通道。当 TS101 工作在
300MHZ,链路口时钟配置为 1/2 核时钟时,每个链路口的吞吐率可达每秒 300MB。在 VDK
中,主 DSP 的“Message”设置中的“Routing Thread”下的“InRouter”的“I/O Object”选
项设置为“Link2”,“Message Flow”设置为“incoming”,“OutRouter”的“I/O Object”
选项设置为“Link3”,“Message Flow”设置为“outgoing”;从 DSP 中只需反过来设置,
即:将“Link2”设置为“outgoing”,“Link3”设置为“incoming”即可。
4 系统性能
对于视频输入的分辨率为 360×288×8bit 的灰度可见光图像,系统可以达到每秒 25 帧以
上的跟踪处理速度,能够将待识别目标全部检测出来并满足实时性要求,并依据目标的坐标
- 5 -
中国科技论文在线
和大小,用白色的方框将目标在视频流中醒目的标记出来。如图 4 所示。
图4 系统目标检测结果
The results of target detection
5 结论
本文利用 VDK 成功的在双 DSP 嵌入式平台上搭建了一个小型的实时操作系统,用于对
视频图像数据流的处理,完成了系统目标检测的任务,满足实时性要求。试验证明:双 DSP
并行处理的结构能够加快系统的处理速度,增大系统的数据吞吐率,完成有时候单个 DSP
无法完成的任务,而 VDK 能够简化系统的设计,提高 DSP 软件的灵活性和可复用性,充分
发挥多 DSP 硬件平台强大的计算能力。
[参考文献] (References)
[1] 王希敏,蔡志明.可移植的 TigerSHARC DSP 应用设计[J].电子器件,2007,30(5):1881~1885.
WANG X M,CAI ZH to achieve TigerSHARC DSP application portability[J].Chinese Journal of Electron
Devices,2007,30(5):1881~1885.(in Chinese)
[2] 刘书明,苏涛,罗军辉.TigerSHARC DSP 应用系统设计[M].北京:电子工业出版社,2004.
LIU SH M,SU T,LUO J DSP application system design[M].Beijing:Publishing House of
Electronics Industry,2004.(in Chinese)
[3] ADSP-TS101 TigerSHARC@Processor Hardware Reference,AD,Inc.(5-20)
[4] 陈元林,汤心溢.VDK 实时内核在红外目标检测跟踪系统中的应用[J].红外技术,2009,31(10):573~576.
CHEN Y L,TANG X VDK real-time operating core application in infrared-target detection and tracking
system[J].Infrared Technology,2009,31(10):573~576.(in Chinese)
[5] VisualDSP++ Kernel(VDK) User's Guide( ),Analog Devices Inc.