达芬奇平台-EMCV移植和测试

2024-05-15 07:48

本文主要是介绍达芬奇平台-EMCV移植和测试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

有了在ccs上开发基于emcv算法的经验,下一步我们要做了就是把我们的算法

移至到达芬奇平套上去运行。

一、codec的编写。

这里我们拷贝codecs下的scale文件夹,修改名字为fft,修改相关配置,这些配置都比较简单,我们就不再叙述。把emcv文件夹加入到fft文件夹中,在package.bld中加入emcv中的source文件,利用srcs.push("文件名");这时候涉及到编译了,但是这时编译是不行的,由于我们还没完成xdcpath.mak的配置。

二、xdcpath.mak配置

Xdcpath.mak的配置涉及到很多路径和参数,路径这里就不多说了,不断的make,不断的报错,就可以把路径修改正确。

这里我遇到过意问题,就是make可以通过了但是没有生成xv5t可执行文件,后来找到的原因是由于xdcpath.mak参数设置不正确,我们只要把device,gppos,PROGRAMS这三个参数设置正确就可以了。

 

OMAP3530开发环境搭建

1.      版本说明

DVSDK: DVSDK_3_00 3_00_02_44

PSP: OMAP35x-PSP-SDK-02.01.03.11

Kernel: Linux arago 2.6.29-rc3-omap1

2.      下载软件

         软件列表

1.        dvsdk_setuplinux_3_00_02_44.bin

2.        OMAP35x-PSP-SDK-setuplinux-02.01.03.11.bin

3.        cs1omap3530_setuplinux_1_00_01-44.bin

4.        bios_setuplinux_5_33_06.bin

5.        xdctools_setuplinux_3_15_01_59.bin

6.        TI-C6x-CGT-v6.0.16.1.bin

7.       arm-2008q1-126-arm-none-linux-gnueabi.bin

 

下载网址:

http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/dvsdk/DVSDK_3_00/3_00_02_44/index_FDS.html

3.      安装

1.      安装TI DVSDK:dvsdk_setuplinux_3_00_02_44.bin

目录:/omap3530/dvsdk

安装之后会生成dvsdk_3_00_02_24文件夹,下面包含很多文件夹,包含几乎整个davinci架构的代码。

 

2.      安装其他组件

bios_setuplinux_5_33_06.bin

cs1omap3530_setuplinux_1_00_01-44.bin

xdctools_setuplinux_3_15_01_59.bin

OMAP35x-PSP-SDK-setuplinux-02.01.03.11.bin

目录:/omap3530/dvsdk/dvsdk_3_00_02_24

 

3.      安装Linux下DSP的交叉编译工具链:TI-C6x-CGT-v6.0.16.1.bin

目录:/omap3530/TI/

 

4.      安装ARM交叉编译工具链:arm-2008q1-126-arm-none-linux-gnueabi.bin

目录:/omap3530/CodeSourcery/arm-2008q1

并设置环境变量:

exportPATH=/omap3530/CodeSourcery/arm-2008q1:$PATH

(如果想要每次开机启动环境变量都生效,请将上句加入/etc/profile文件的末尾)

4.      配置

1.     /omap3530/dvsdk/ dvsdk_3_00_02_44/Rule.make

将其中的变量路径按实际安装情况修改,例如:

                     # Define target platform.

PLATFORM=omap3530

                

# The installation directory of the DVSDK.

DVSDK_INSTALL_DIR=/omap3530/dvsdk/dvsdk_3_00_02_44

                      

# For backwards compatibility

DVEVM_INSTALL_DIR=$(DVSDK_INSTALL_DIR)

                       

# Where DSP/BIOS is installed.

BIOS_INSTALL_DIR=$(DVSDK_INSTALL_DIR)/bios_5_33_00_06

 

      2./omap3530/dvsdk/dvsdk_3_01_00_04/codec_engine_2_25_00_01/examples/xdcpath.mak

1)        设置平台、系统和程序类型

                            DEVICES  := OMAP3530

GPPOS := LINUX_GCC

PROGRAMS := APP_CLIENT DSP_SERVER

 

2)        设置变量安装路径

                     # (Mandatory) Specify wherevarious components are installed.

CE_INSTALL_DIR :=

/omap3530/dvsdk/dvsdk_3_00_02_44/codec_engine_2_24

XDC_INSTALL_DIR :=

/omap3530/dvsdk/dvsdk_3_00_02_44/xdctools_3_15_01_59

BIOS_INSTALL_DIR :=

/omap3530/dvsdk/dvsdk_3_00_02_44/bios_5_33_06

DSPLINK_INSTALL_DIR :=

/omap3530/dvsdk/dvsdk_3_00_02_44/dsplink_1_61_03/packages

 

USE_CETOOLS_IF_EXISTS := 1

XDAIS_INSTALL_DIR :=

/omap3530/dvsdk/dvsdk_3_00_02_44/xdais_6_24

FC_INSTALL_DIR :=

/omap3530/dvsdk/dvsdk_3_00_02_44/framework_components_2_24

CMEM_INSTALL_DIR :=

/omap3530/dvsdk/dvsdk_3_00_02_44/linuxutils_2_24_02

 

WINCEUTILS_INSTALL_DIR:=

/omap3530/dvsdk/dvsdk_3_00_02_44/winceutils_1_00

BIOSUTILS_INSTALL_DIR :=

/omap3530/dvsdk/dvsdk_3_00_02_44/biosutils_1_01_00

EDMA3_LLD_INSTALL_DIR :=

 /omap3530/dvsdk/dvsdk_3_00_02_44/edma3_lld_01_10_00_01

LPM_INSTALL_DIR :=

/omap3530/dvsdk/dvsdk_3_00_02_44/local_power_manager_1_24

 

CGTOOLS_V5T :=/omap3530/CodeSourcery/arm-2008q1

CC_V5T := bin/arm-none-linux-gnueabi-gcc

CGTARGET := gnu.targets.arm.GCArmv5T

 

CGTOOLS_C64P :=/omap3530/dvsdk/TI/cg6x_6_0_16

#CC_C64P      := bin/cl6x

 

在文件末尾加上XDC_PATH的补充,否则编译会报错!!!

                            #XDC_PATH is complete. Any other components you could add as

XDC_PATH := $(XDC_PATH);$(LPM_INSTALL_DIR)/packages

                             (can't locate thepackage 'ti.bios.power' along the path:...)

 

5.      编译

1.        进入目录CE例程目录

#cd/omap3530/dvsdk/dvsdk_3_00_02_44/codec_engine_2_24/examples/ti/sdo/ce/examples/

             可以看到主要的关键的三个目录,apps,codecs,servers,分别放着应用程序代码,算法代码,算法服务器代码。

 

2.        编译server,选择all_codecs

                     #cd servers/all_codecs

#makeclean

#make

编译完后会在bin/ti_platforms_evm3530/ 下生成来两个.x64P程序:

       all_pm.x64P all.x64P

             (如果编译出错,大多数是前面配置Rule.make,和xdcpaht.mak出错,可以根据错误提示更改过来)

 

3.        编译应用app,选择video_copy

                     #cd apps/video_copy

#makeclean

#make 

编译完后会在在bin/ti_platforms_evm3530/ 下生成来一个.xv5T程序:

app_remote.xv5T

这是应用在arm端,算法在dsp端的程序。

6.      执行

1.        将下列文件拷贝到开发板同一目录下,例如/home/root

算法服务器:all.64P

应用程序:app_remote.xv5T

内核驱动:cmemk.ko, dsplinkk.ko, lpm_omap3530.ko

内核加载脚本:loadmodules.sh unloadmodules.sh

 

2.        加载内核驱动

#./ loadmodules.sh

CMEMK module: built on Apr 212010 at 00:22:22

  Reference Linux version 2.6.29

  File/omap3530/dvsdk/dvsdk_3_00_02_44/linuxutils_2_24_02/packages/ti/sdo/linux

utils/cmem/src/module/cmemk.c

ioremap_nocache(0x85000000,16777216)=0xca000000

allocated heap buffer0xca000000 of size 0xcac000

cmem initialized 3 poolsbetween 0x85000000 and 0x86000000

DSPLINK Module (1.61.03)created on Date: Apr 21 2010 Time: 03:48:32

如果出错,可能是驱动版本和当前内核版本不匹配,需要重新编译驱动,并重新编译server和app。

 

3.        执行应用程序

# ./app_remote.xv5T

@0x000f0053:[T:0x4001d000]ti.sdo.ce.examples.apps.video_copy.singlecpu - main>ti.sdo.ce.examples.apps.video_copy.singlecpu

@0x000f025a:[T:0x4001d000]ti.sdo.ce.examples.apps.video_copy.singlecpu - App-> Application started.

@0x000fbfa8:[T:0x4001d000]ti.sdo.ce.examples.apps.video_copy.singlecpu - App-> Processing frame 0...

@0x000fc116:[T:0x4001d000]ti.sdo.ce.examples.apps.video_copy.singlecpu - App-> Encoder frame 0 processreturned - 0x0)

@0x000fc247:[T:0x4001d000]ti.sdo.ce.examples.apps.video_copy.singlecpu - App-> Decoder frame 0 processreturned - 0x0)

@0x000fc378:[T:0x4001d000]ti.sdo.ce.examples.apps.video_copy.singlecpu - App-> Processing frame 1...

@0x000fc48b:[T:0x4001d000]ti.sdo.ce.examples.apps.video_copy.singlecpu - App-> Encoder frame 1 processreturned - 0x0)

@0x000fc57f:[T:0x4001d000]ti.sdo.ce.examples.apps.video_copy.singlecpu - App-> Decoder frame 1 processreturned - 0x0)

…………………

@0x00497a45:[T:0x4001d000]ti.sdo.ce.examples.apps.video_copy.singlecpu - App-> Processing frame 127...

@0x00497b1b:[T:0x4001d000]ti.sdo.ce.examples.apps.video_copy.singlecpu - App-> Encoder frame 127process returned - 0x0)

@0x00497c0f:[T:0x4001d000]ti.sdo.ce.examples.apps.video_copy.singlecpu - App-> Decoder frame 127process returned - 0x0)

@0x00497ca7:[T:0x4001d000]ti.sdo.ce.examples.apps.video_copy.singlecpu - 128 frames encoded/decoded

@0x0049986e:[T:0x4001d000]ti.sdo.ce.examples.apps.video_copy.singlecpu - app done.

 

这个可以参见http://zhuairlunjj.blog.163.com/blog/static/80050945201153112020382/ 这篇文章,写的不错,他是基于omap3530,我们的可以仿照着他进行修改。

三、由于emcv是支持ccs的,而ccs中有很多内联函数,而在dvsdk中却没有,所以我们要实现这些内敛函数,具体如下:

这些内敛函数可以查看TMS320C6000系列内联指令.pdf。由于本人在修改函数时不是很懂的dsp汇编,所以可能实现不是很完美。

到此基本就完成了所有的移植,只等运行结果。

这篇关于达芬奇平台-EMCV移植和测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/991237

相关文章

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

如何解决线上平台抽佣高 线下门店客流少的痛点!

目前,许多传统零售店铺正遭遇客源下降的难题。尽管广告推广能带来一定的客流,但其费用昂贵。鉴于此,众多零售商纷纷选择加入像美团、饿了么和抖音这样的大型在线平台,但这些平台的高佣金率导致了利润的大幅缩水。在这样的市场环境下,商家之间的合作网络逐渐成为一种有效的解决方案,通过资源和客户基础的共享,实现共同的利益增长。 以最近在上海兴起的一个跨行业合作平台为例,该平台融合了环保消费积分系统,在短

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。