当前位置: 首页 > 编程日记 > 正文

基于多核DSP处理器DM8168的视频处理方法

摘要:随着1080P高清视频以及4K超高清晰视频的普及和应用,基于传统单核DSP处理器的视频信息处理已有些力不从心。为此TI公司推出了一款专门用于高清视频处理的多核DSP处理器,它拥有4个不同类型的处理器,使得视频处理达到了一个更高水平。本文分析研究了该处理器的多核DSP结构及应用开发方法,并对多核间的协调工作及负载情况进行了测试分析。

引言

以DSP为核心的处理器凭借自身硬件结构的优势和算法优化使得一般的嵌入式产品在视频应用领域得到了广泛的应用。随着高清视频应用的增多,传统单核DSP处理器已经不能很好地满足应用需求了。为此,TI公司推出了一款专门针对高清大数据量快速计算的专用多核DSP处理器DM8168。与传统单核DSP或ARM+DSP的异构多核结构相比,DM8168集成了4个不同类型的处理器,除了传统ARM+DSP结构外,DM8168还拥有两个专门针对高清视频的图像处理器。因此,研究如何基于这种复杂的多核DSP进行应用设计,是有一定实用价值的。

本文在一款基于多核DSP DM8168处理器的SEED-DVS8168平台上,研究了16通道D1数据格式60 fps的大数据量高速视频采集及压缩的实现方法,并且对DM8168实现过程中4个核心处理器的负载进行了测试和分析。

1 硬件平台结构

TMS320DM816是TI公司推出的达芬奇(DaVinci)硬件平台。它在DM8168开发板上拓展了16路模拟输入口,集成了多种外设接口。DM8168硬件平台为TI的高性能异构多核SoC片上系统,该平台集成了一个主频为1.2 GHz的ARM Cortex—A8处理器,一个主频为1GHz的C674x DSP以及3个主频为600 MHz高清视频图像协处理器(High Definition Video/Imaging Coprocessor,HDVICP),以及一个高清视频处理子系统(Hight Defi nition Video Processing Subsystem,HDVPSS)。多核DSP系统应用中,各处理器在硬件上相互独立、相互配合,极大地提升了整个系统的效率。本文针对DM8168集成的4片TVP8158对16路60 fps视频的采集压缩过程进行了研究,并对结果进行了分析。硬件平台结构如图1所示。

基于多核DSP处理器DM8168的视频处理方法

1.1 ARM Cortex—A8处理器

ARM Cortex—A8是一款专门针对多任务应用的高性能哈佛结构处理器。本文中ARM Cortex—A8处理器主要用于控制管理各个从处理器,配置和调节各子系统的协同工作,管理外部设备及外部存储器。

1.2 高清视频处理子系统HDVPSS

HDVPSS集成了两个独立的视频捕捉输入端口VIN0、VIN1,每个VIN口又分为A、B两组,即VINOA、VINOB、VIN1A、VIN1B。每个TVP5158复合了4路视频送入VIN口,HDVPSS采集到数据之后利用内部硬件把视频抽离分解出来进行后期处理,捕捉时钟高达165MHz。此外,HDVPSS每个视频输入端口支持缩放、像素格式转换、支持1路高达1080P60或8路复用的D1数据处理。功能上,HDVPSS集成了两个视频处理引擎,具有去隔行处理、降噪、格式转换、视频输入/输出等数据处理能力。

1.3 高清视频协处理器HDVOCP

HDVICP是一个视频编解码硬件加速器,可以最大支持1080P60标准高清视频的编解码流。硬件加速可支持MPEG1/2/4 ASP/SP、H.264 BL/MP/HP、VC-1 SP/MP/AP、RV9/10、AVS-1.0等主流的编解标准。HDVICP集成了运动估计加速引擎、帧内预测估计引擎、熵编/解码器等硬件模块。HDVICP直接在硬件上提升了原本复杂的数字图像处理运算,从而增强了HDVICP的视频处理能力。HDVICP的内部结构如图2所示。

基于多核DSP处理器DM8168的视频处理方法

在外部,HDVICP与其他处理器之间通过邮箱中断以及硬件自旋锁来实现。邮箱中断通过写寄存器的方式向某个从处理器发送中断信号,自旋锁机制则为访问系统共享资源提供了完善的解决方案;内部,同步箱负责所有嵌入式模块的调度,同步各加速器之间的参数以及数据。

1.4 数字信号处理DSP

C674x DSP内核是TMS320C6000 DSP平台上的高性能浮点数字信号处理器,其除了具有传统DSP的硬件运算加速器单元外,还具有SPLOO P、压缩的指令集、增强的指令集、异常处理以及优先级管理,完备的硬件支持使得C674x DSP在应用中具有强大地数据信号处理能力。本系统研究中将传统的视频采集及压缩编码这类算法从DSP模块中分离出来,极大地减轻了DSP的负载,使多核DSP协同工作的环境、性能得到了极大的优化。

2 系统软件设计

DM8168的主处理器是ARM Cortex—A8,开始上电之后U-Boot引导其从ROM中启动Linux,一旦启动成功,ARM Cortex—A8便引导从处理器C674x DSP和媒体控制器的电源管理、重启控制以及设置可执行文件的入口到相应寄存器中,完成这个软件运行环境的建立。

结合DM8168硬件平台的特点,软件系统整体划分为4个模块。其中ARM为主控模块,运行Linux系统,主要负责整个系统的控制以及外设管理;另外3个内核运行BIOS6系统,其中VPSS M3运行在HDVPSS上,主要管理视频的采集、存储以及输入/输出;Video M3运行在HDVICP上,主要负责视频的编解码;C674x DSP主要执行软件的显示策略以及用户算法。软件结构设计如图3所示。

基于多核DSP处理器DM8168的视频处理方法

多通道视频处理框架(Multi—channel FrameWork,McFw)中对视频处理常用的捕获、压缩编码、解码、显示等处理过程进行了优化,该框架下的视频处理以Link为基本处理单位进行。视频传递采集、编码以及显示过程大致分为以下几个过程。

(1)原始采集过程

系统获得采集任务之后,首先初始化采集参数,包括采集设备的检测、需采集的视频格式、输出格式等。稍后调用McFW框架下的System _linkCreate()创建CaptureLink,调用System_linkStart()进行视频采集,模拟信号经过主板上集成的4片TV5158解码芯片之后转换为16ChD1 YUV422i 60fps的数字信号传递给VPSS协处理器,等待下一步处理。

(2)视频处理

VPSS协处理器检测到视频输入以后,对输入的视频进行降噪、去隔行处理等,然后将数据传递给HDVICP协处理器,DM8168内部集成的3个HDVICP协处理器的视频编解码硬件加速支持MPEG4 H.264等视频的编解码格式,运行在HDVICP上的视频编码子系统(Video Encode Subsyst em,VENC)以及视频解码子系统(Video Decode Subsystem,VDEC)具体实现16 Ch D1 60 fps的H.264编码压缩/解码处理。

(3)视频的存储、显示以及传输

HDVICP协处理器压缩产生的视频数据,放入内存共享区,供ARM处理器进行后期的网络传输或本地存储。同时,也将数据传递给HDVPSS协处理器实现16 Ch视频的显示输出。

(4)视频采集的销毁

视频采集结束后,HDVPSS首先调用System_link Stop()停止视频采集,然后调用System_linkDelete()释放占用资源。视频采集编码过程如图4所示。

基于多核DSP处理器DM8168的视频处理方法

视频的采集、降噪、压缩编码/解码、显示都由Host A8进行控制,每个视频采集过程中的功能都在各自处理上进行了模块的划分,以独立的线程运行。各模块间通过消息中断、IPC等方式进行通信,通过共享内存实现数据共享。

3 结果测试与分析

本研究方法中,模拟视频信号经过主板上集成的4片TVP5158解码芯片转换为16Ch D1 YUV422i 60fps数字信号传递给HDVPSS协处理器进行降噪、隔行扫描处理,数据预处理之后HDVPSS将数据传送给HDVICP协处理器进行视频的H.264压缩存储,同时数据也由HDVPSS协处理器的HDMI数据输出接口输出到显示器。多核CPU负载情况统计如表1所列。

基于多核DSP处理器DM8168的视频处理方法

实验结果中,Host A8作为主控处理器,负责多核DSP的任务调度和协调,HDVPSS以及HDVICP协处理器承担了16 D1视频的采集以及压缩编码工作,处理器负载较均衡。由于协处理器独立承担视频的处理任务,DSP在本设计中只负责SCD算法,负载较小。整体上来看,由于多核DSP DM8168的各个核心处理器之间相互协同工作,整个系统的负载较均衡,整个系统得到了有效的利用,且性能也比较突出。

结语

针对16通道D1数据格式的大数据量视频数据置的采集编码,在传统达芬奇DSP处理器上实现相对较为困难,而本文针对基于多核DSP DM8 168将视频的采集、降噪、隔行扫描以及压缩编码等任务从传统的单核DSP处理器上独立出来,分别由从硬件加速的HDVPSS协处理器和HDVICP协处理器来完成,极大地提升了视频采集的效率,同时也减轻了单核DSP的任务负担,功能模块化设计大大提升了嵌入式设备的整体处理能力,效果较为明显。但从实际应用的角度来考虑,本设计可能考虑得不够全面,需在后期设计中不断地充实和完善。

相关文章:

AWS攻略——使用CodeBuild进行自动化构建和部署Lambda(Python)

Aws Lambda是Amazon推出的“无服务架构”服务。我们只需要简单的上传代码,做些简单的配置,便可以使用。而且它是按运行时间收费,这对于低频访问的服务来说很划算。具体的介绍可以常见aws lambda的官网。(转载请指明出于breaksoftw…

vmware 添加 磁盘 空间

VMware安装linux的时候默认分配的空间是4GB,可能会不够,这个时候可以通过增加一块虚拟硬盘,将/usr或其他内容拷贝过去解决这个问题:创建虚拟硬盘1、关闭VM中正在运行的虚拟系统;2、在虚拟系统名称上点右键-…

Python爬取考研数据:所有985高校、六成211高校均可调剂

又到了一年一度的考研出分时间啦,近期有不少朋友让笔者帮他们分析如何提前做好调剂。复试与调剂总是密不可分。今天,给大家分享一些调剂的重要知识点,希望你在调剂的时候,能明白调剂的趋势与规则。也许,大家对于调剂的…

iOS审核秘籍】提审资源检查大法

iOS审核秘籍】提审资源检查大法 2015/11/27阅读(752)评论(1)收藏(6)加入人人都是产品经理【起点学院】产品经理实战训练营,BAT产品总监手把手带你学产品点此查看详情! 本篇主要是提审…

谈一次单元测试驱动代码重构

目前团队并没有QA岗,而且在很长一段时间内,可能也不会设立QA岗,所以我们需要RD保证代码的质量。而鉴于人类天生的“惰性”,很多时候质量完全依赖于作者的能力以及职业素质。于是我在团队内推动单元测试,并要求提升测试…

新机会在广州拓波

公司简介广州拓波软件科技有限公司的前身为 Turbomail工作室,由广州华工信息软件(集团)有限公司于2002 年成立,是一家专业研发电子邮件系统、企业即时通信和企业短信的开发组织,2005年TurboMail工作室正式发布1.0.2版本…

关于正则表达式,这篇都讲清楚了

作者 | 猪哥来源 | 裸睡的猪(ID:rgznai100)目前越来越多的网站、编辑器、编程语言都已支持一种叫“正则表达式”的字符串查找“公式”,有过编程经验的同学都应该了解正则表达式(Regular Expression 简写regex)是什么东…

MJExtension简介

MJExtension简介 前言:关于MJExtension更多的使用,可以到github网站上根据详述学习。 字典转模型比较流行的第三方框架 Mantle所有模型都必须继承自MTModel JSONModel所有模型都必须继承自JSONModel MJExtension不需要强制继承任何其他类 框架需要考虑的…

Discuz!常用函数解析(续)

/*** 产生随机码* param $length - 要多长* param $numberic - 数字还是字符串* return 返回字符串*/function random($length, $numeric 0) {PHP_VERSION < 4.2.0 && mt_srand((double)microtime() * 1000000);if($numeric) {$hash sprintf(%0.$length.d, mt_ran…

基于新型忆阻器的存内计算原理、研究和挑战

作者 | 林钰登、高滨、王小虎、钱鹤、吴华强来源 | 《微纳电子与智能制造》期刊引言过去半个世纪以来 &#xff0c;芯片计算性能的提高主要依赖于场效应晶体管尺寸的缩小。随着特征尺寸的减小 &#xff0c;器件的制备成本和制造工艺难度不断增加 &#xff0c;芯 片性能的提升愈…

3、JPA一些常用的注解

常用注解有下面这些&#xff1a; ①&#xff1a;Entity、Table、Id、GeneratedValue、Column、Basic ②&#xff1a;Transient 用于忽略某个属性&#xff0c;而不对该属性进行持久化操作 ③&#xff1a;Temporal 一、第①组注解 Entity 标注用于实体类声明语句之前&#xff0c…

实战域树部署,Active Directory系列之十九

实战子域部署<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />域树是Active Directory针对NT4的传统域模型所进行的重要改进。在NT4时代的域模型中&#xff0c;每个域都要使用没有层次结构的NETBIOS名称&#xff0c;而且域和域之…

黑科技抗疫,Python开发者大集结!

2020年初&#xff0c;突如其来的新型冠状病毒肺炎打乱了所有人的节奏&#xff0c;但社会各界迅速团结起来&#xff0c;为抗击疫情贡献出自己的力量。除了捐款捐物外&#xff0c;很多科技公司运用5G、大数据、AI、云计算等新互联网技术&#xff0c;以科技的手段助力抗疫&#xf…

Inplayable技术分享

Inplayable技术分享运维设计模式Web安全工具语言python运维 《aws lambda 通过codebuild上线踩坑指南之 lambda 进程被占用 status error 255》《google pay 配置sub/pub回调》《AWS攻略——使用CodeCommit托管代码》《AWS攻略——使用S3托管静态网页》《AWS攻略——使用CodeB…

将数组A中的内容和数组B中的内容进行交换(数组一样大)

#include <stdio.h>int main() {int arr1[10]{1,2,3,4,5,11,14,16,17,12};int arr2[10]{0,6,7,8,9,15,21,18,19,13};int arr3[10];int i0;for(i0;i<sizeof(arr1)/sizeof(arr1[0]);i){arr3[i]arr1[i];arr1[i]arr2[i];arr2[i]arr3[i];//不定义第三个变量的两种种方法&am…

***必备工具

***必备工具一、扫描工具 X-scan 3.1 焦点出的扫描器&#xff0c;国内最优秀的安全扫描软件之一!非常专业的一个扫描器! X-way 2.5 这也上一个非常不错的扫描器哦!功能非常多!使用也不难,***必备工具! SuperScan 3.0 强大的TCP 端口扫描器、Ping 和域名解析器! Namp 3.5 这个就…

通过评估假设行为来学习人类目标

来源| deepmind编译| 武明利&#xff0c;责编| Carol出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;当我们在现实世界中训练强化学习&#xff08;RL&#xff09;代理时&#xff0c;我们不会希望它们探索不安全的状态&#xff0c;例如将一个移动机器人开进…

ReactiveCocoa入门-part2

ReactiveCocoa是一个框架&#xff0c;它能让你在iOS应用中使用函数响应式编程&#xff08;FRP&#xff09;技术。在本系列教程的第一部分中&#xff0c;你学到了如何将标准的动作与事件处理逻辑替换为发送事件流的信号。你还学到了如何转换、分割和聚合这些信号。 在本系列教程…

VirtualBox虚拟机安装RedHat7.3编译Linux0.01内核

引子 由于需要编译linux0.01内核&#xff0c;而目前的linux版本太高需要降低gcc版本等等&#xff0c;需要做不少调整非常不方便。 所以&#xff0c;直接安装RedHat7.3&#xff0c;这样就好编译linux0.01的内核了。 但是&#xff0c;安装RedHat7.3需要注意一些问题。 下载老…

远程办公是巨头游戏?十倍扩容,他们如何做到百万级并发流量

疫情发生后&#xff0c;除了Zoom这样深耕视频会议多年的软件&#xff0c;钉钉、企业微信、飞书等一大批互联网巨头也开通了免费服务&#xff0c;凭借着自身庞大的资源四处招揽用户。 据说&#xff0c;远程办公工具是2020年的第一个风口。 疫情发生后&#xff0c;除了Zoom这样深…

linux下使用sort命令升序、降序、随机及组合方式排序方法

示例文件&#xff1a;####################################################序号 优先级 字段1 字段21 5 abc def2 5 ae3 wff6 4 l…

mysql数据库备份、恢复文档

说明:为了加强线上数据库安全&#xff0c;避免研发人员误操作造成数据的丢失&#xff0c;制作本文档。一线运维人员可以参考!一、数据备份&#xff1a;专用数据库备份服务器&#xff0c;定时对数据库进行热备、冷备&#xff0c;即主从设置、mysqldump冷备、mysql-bin-log日志备…

Linux环境ddd安装与使用

ddd是一个优秀的调试器&#xff0c;安装ddd破费周折 必须安装x开发环境 1.下载 http://ftp.gnu.org/gnu/ddd/&#xff0c;下载最新的ddd-3.3.12.tar.gz # wget http://ftp.gnu.org/gnu/ddd/ddd-3.3.12.tar.gz # tar zxvf ddd-3.3.12.tar.gz # cd ddd-3.3.12/ 2.配置 # ./…

华为诺亚、北大提出GhostNet​,使用线性变换生成特征图,准确率超MobileNet v3 | CVPR 2020...

作者 | Kai Han, Yunhe Wang等编译 | Conv出品 | AI科技大本营&#xff08;rgznai100&#xff09;受限于内存空间和计算资源&#xff0c;将卷积神经网络部署到嵌入式设备中会比较困难。CNNs中特征图的冗余性是保证其成功的关键&#xff0c;但是在神经网络的结构设计中却鲜有研究…

pap和chap交叉认证

pap和chap交叉认证&#xff1a;R1启动pap&#xff0c;R2启动chap。R1上的配置&#xff1a;Router>enRouter#config tRouter(config)#enable s ciacoRouter(config)#line c 0Router(config-line)#pass ciacoRouter(config-line)#loginRouter(config-line)#logging syRouter(c…

如何在App中实现朋友圈功能之二快速实现用户信息的自定义——箭扣科技Arrownock...

如何在App中实现朋友圈功能之二快速实现用户信息的自定义自我关联社交元素&#xff1a;anSocial中很多的社交元素API&#xff0c;如帖子&#xff08;Post&#xff09;、相册&#xff08;Album&#xff09;、文件&#xff08;File&#xff09;等&#xff0c;这些API的可选参数中…

使用cat /proc/进程id/maps 查看进程内存映射

proc/<PID>/maps 查看进程的虚拟地址空间是如何使用的。 该文件有6列&#xff0c;分别为&#xff1a; 地址&#xff1a;库在进程里地址范围 权限&#xff1a;虚拟内存的权限&#xff0c;r读&#xff0c;w写,x,s共享,p私有&#xff1b; 偏移量&#xff1a;库在进程里地址范…

两成开发者月薪超 1.7 万、算法工程师最紧缺! | 中国开发者年度报告

整理 | 郭芮 责编 | 唐小引 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; “求知若饥&#xff0c;虚心若愚”——这个原本出自《全球概览》的俳句&#xff0c;因为乔布斯在斯坦福大学毕业演讲中的引用而备受推崇&#xff0c;流传成为 IT 界的至理名言之一。在…

怎么处理404 错误页面 、处理404页面、asp.net 处理404页面

说明 On 指定启用自定义错误。如果未指定 defaultRedirect&#xff0c;用户将看到一般性错误。 Off 指定禁用自定义错误。这允许显示标准的详细错误。 RemoteOnly 指定仅向远程客户端显示自定义错误并且向本地主机显示 ASP.NET 错误。这是默认值。 system.web 元素 下添加下边…

转载:python原生态的输入窗口抖动+输入特效

python原生态的输入窗口抖动输入特效 出处&#xff1a;https://coding.net/u/acee/p/PythonPowerInput/git/blob/master/test_power_input.py __author__ Administrator import sys from lib.qm_app import App from PyQt4.QtGui import * from PyQt4.QtCore import * import …