(多核DSP快速入门)4.编译测试多核DSP实例Vlfft

原创文章

转载请注册来源http://blog.csdn.net/tostq

系列教程目录:http://blog.csdn.net/tostq/article/details/51245979

Vlfft是由TI官网提供的一个大尺寸快速傅里叶变换的多核DSP实例,其下载地址如下:

http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/p/12423/67467.aspx

这个实例是许多同学多核DSP的入门实例,实例内也提供了简单的安装编译教程,不过并没有讲得很清楚,在编译的过程中还是会出现很多问题,本节主要提供一个详细的Vlfft安装编译步骤,但是由于这个实例涉及了较多关于多核通信的内容,所以这里并不详细解释代码原理,如果后面有时间的话,以后再具体分析这个实例。

一、安装MCSDK和STMlib

这MCSDK组件是Vlfft必须的,不过STMlib却是不必须的。

(1)MCSDK的安装

MCSDK ( Multicore Software Development Kit )是一个多核的软件开发组件,它主要是通过同BIOS协同开发,里面提供了比如PDK等工具,与CCS5.2兼容的MCSDK应该是2.0版本,而我使用的是2.1版本,会出现一个警告,但也是可以运行的。

MCSDK的下载地址:http://www.ti.com/tool/bioslinuxmcsdk ,这里我选择的是最后一个。

 
    下载MCSDK后,直接点击安装,安装目录同CCS在同一文件夹下,如D:/ti,在安装组件上,可以全部选择啦。

完成安装,重新启动CCS,查看相关组件是否安装到CCS中去(一般都自动导入了),如果不是,请手动导入。

关于SYS/BIOS的官方安装方法:http://processors.wiki.ti.com/index.php/BIOS_MCSDK_2.0_Getting_Started_Guide

(2)STMlib安装

STMlib(System Trace)是一个系统追踪组件,Vlfft这个工程支持2种配置,一种是纯VLFFT运算工程(默认模块,也可以不安装STM),还有一种是集成了STM 模块的VLFFT工程,即在Build option中的build variables中定义了STM_LIBRARY_ROOT,如果未安装STM lib或者STM的路径不对,则可能编译报错。

STMLib 下载地址:https://gforge.ti.com/gf/project/ctoolslib/frs/

STMLib 的学习使用:http://processors.wiki.ti.com/index.php/Using_System_Trace_(STM)

STMLib安装只需要将安装解压跟CCS放到同一个文件夹就可以了(如D:/ti)

二、Vlfft的配置

(1)将Vlfft项目的整体文件夹放到MCSDK的demo文件夹下:如\mcsdk_2_01_02_06\demos

(2)CCS中导入项目

在Project Explorer中右击选择Import...,选择导入一个已存在的CCS项目

 
      项目位置中输入Vlfft文件夹所在地址,此时在Vlfft文件夹下,发现了两个项目文件(6678版本和6670版本)这里选择6678版本就可以了。

如果是选择6670版本,还需要打开vlfftconfig.h(vlfft\vlfftInc文件夹下),把常量EIGHT_CORE_DEVICE设为0,常量FOUR_CORE_DEVICE设为1,(默认是6678,与个这个设置刚好相反)

TIPs:

a).关于FFT的大小设置,将vlfftconfig.h中的如下宏中的一个设为1,其他为0

b). DSP内核的数目设置,选择1,2,4,8个设置

(3)BIOS文件的配置

vlfft_evmc6678l.cfg文件是BIOS文件的配置文件,下一节会具体解释如何使用BIOS,这里直接双击点开,出现如下:

 
      

BIOS的设置提供了界面和源代码编辑两种选择,这里我们点击Source,选择源代码编辑

如果是Debug模型,需要将.cfg源代码中的92~96行的代码注释,而Release模式,则不作改变。

此时点击小锤子进行Debug模式编译,出现如下错误,这里的警告主要是MCSDK版本不配,关系不大。

 
      错误主要是placement fails for object

这里提示.const所在段L2SRAM太小,内存段分配太小,需要打开链接命令文件.cmd(在Debug/configPkg/Linker.cmd)查看:

这里的L2SRAM只有156kb,实在太小,于是我们可以增加其大小到4M左右,但是我们不能直接到.cmd文件上修改,因为这个文件是由BIOS配置文件.cfg自动生成的,所以即使我们在.cmd文件中修改了,最后还是会出现原来的错误。

(3)在BIOS文件中修改内存设置

SYS/BIOS是DSP的一个实时操作系统,其给DSP提供许多API函数和操作组件,CSS提供了界面式的配置方法(通过System Overview)可以打开,这里的Task、Swi、Hwi、Memory等都是BIOS的相关组件,这里绿色小勾表明了当前组件已经被安装到了BIOS中了,现在我们需要重新分配内存,所以我们点开Memory组件,选择Program模式

在Program中选择View,找到cpu中的MemoryMap中修改L2SRAM的大小和L2SRAM_1的起始地址,这里需要注意的是虽然错误只是提示L2SRAM的太小,但由于L2SRAM和L2SRAM_1相邻,所以如果修改L2SRAM的大小,就必然也要修改L2SRAM_1的起始地址。

还有一种更为便捷的方法是直接在.cfg的源文件(Source)上修改,这里在文件末尾添加如下:

var execontextInstance0 = xdc.lookup(‘xdc.platform.ExeContext.Instance#0‘);

execontextInstance0.memoryMap["L2SRAM"].len = 4194304;

execontextInstance0.memoryMap["L2SRAM_1"].base = 12582912;

此时再次点击编译,完成编译

三、Vlfft的调试结果

(1)导入目标配置文件.ccxml,选择C6678 Device Functional Simulator, Little Endian的目标配置文件

(2)将所有的(8个)核Group,点击运行,获得结果:

四、集成了STM 模块的VLFFT工程

前面我们安装了STMLib,这一节介绍如何使用STMLib

(1)在Build option中的build variables中定义了STM_LIBRARY_ROOT

(2)在Linked Resources中修正STM_LIBRARY_ROOT的地址

做完上面两件事后,我们点击项目文件中的STMhelper.c,发现现在是可以打开的,说明STMlib已经成功导入了

Vlfft代码下载

https://github.com/tostq/EasyMulticoreDSP/tree/master/4.vlfft

时间: 2024-10-12 02:00:29

(多核DSP快速入门)4.编译测试多核DSP实例Vlfft的相关文章

(多核DSP快速入门)0.前言+CCS的安装

原创文章 转载请注册来源http://blog.csdn.net/tostq 前言 最近老师给布置了个作业,让我用多核DSP做一个基于SIFT的RANSAC图像配准,SIFT+RANSAC网上都有许多代码,并不算难,但是多核DSP对于我来说,完全是一片空白,不光单核DSP没接触过,就连CCS是没用过.网上关于DSP的教程虽然很多,但绝大多数都是关于单核的,而多核DSP的教程虽然说也有,但是要么太复杂太专业,如TI的官网资料,要么就是说的不清楚,而且又没有什么完整体系,特别是我买的几本国内教程,完

(多核DSP快速入门)1.创建简单的多核DSP项目HelloWorld

原创文章 转载请注册来源http://blog.csdn.net/tostq 教程目录:http://blog.csdn.net/tostq/article/details/51245979 本节我们将运行第一个多核DSP程序,熟悉CCS开发环境,学会使用CCS调试工具,主要内容如下: (1)新建CCS项目 (2)导入Target 仿真模块 (3)使用调试工具 一.新建CCS项目 选择File/New/CCS Project 二.新建项目对话框 (1)Project name: 指项目名称,这里

(多核DSP快速入门)3.利用EMCV进行图像灰度转换的单核DSP程序

原创文章 转载请注册来源http://blog.csdn.net/tostq 教程目录:http://blog.csdn.net/tostq/article/details/51245979 在CCS中应用EMCV有两种方法: (1)通过导入EMCV静态库的方法 (2)直接将EMCV的源代码导入项目文件中,虽然EMCV的源文件是C++格式的,而C++基本兼容C,而项目文件一般是用C写的,所以还需要将.c文件改成.cpp就可以了. 一.在新建空项目后,导入静态链接库和相关头文件 (1)这里的头文件

快速入门:通过测试资源管理器进行由测试驱动的开发

源码下载地址:http://pan.baidu.com/s/1ntooNO1 我们建议你创建单元测试来帮助保持你的代码在众多递进式开发步骤中正确运行. 你可以使用几个框架来编写单元测试,包括第三方开发的一些框架. 某些测试框架专用于不同语言或平台中的测试. "测试资源管理器"为其中任意框架中的单元测试提供了一个接口. 大多数常用框架都有适配器,你可以为其他框架编写自己的适配器. "测试资源管理器"将取代 Visual Studio 早期版本中的单元测试窗口. 其优点

基于python的性能负载测试Locus-2-快速入门

快速入门 Example locustfile.py 这是一个快速入门的小例子 locustfile.py: from locust import HttpLocust, TaskSet def login(l): l.client.post("/login", {"username":"ellen_key", "password":"education"}) def index(l): l.client.

Python3快速入门(十七)——Python扩展模块开发

Python3快速入门(十七)--Python扩展模块开发 一.Python扩展模块 1.Python扩展模块简介 Python与C/C++交互的方案有多种,如Python C API,SWIG,SIP,ctypes,cpython,cffi,boost.python等.Python只是一个语言规范,有很多具体实现,CPython是标准Python,由C编写,Python脚本被编译成CPython字节码,然后由虚拟机解释执行,垃圾回收使用引用计数,Python与C/C++混合编程本质是基于CPy

C++ Primer Study Note 系列[1]-chapter1快速入门

I want to study it all the time , and now I am ready to study this book in the next mouth. Time : 2014/07/02 先看一个程序体验一下: #include <iostream> int main() {     /*This is a test example*/     std::cout << "Enter two numbers:" << s

Gradle用户指南(章10:Web应用程序快速入门)

Gradle用户指南(章10:Web应用程序快速入门) 本章正在完善中..... 本章介绍gradle对web应用程序的支持.Gradle为web应用程序开发提供了两个插件:War插件和Jetty插件.War插件扩展了java插件并且能为你的项目构建一个war包.Jetty插件扩展了War插件并且提供了发布你的web项目到Jetty容器中的功能. 构建一个War文件 构建War文件,你需要在项目中添加War插件. 注意:你可以在gradle发布库和源文件的samples/webApplicati

C语言快速入门教程(二)

C语言快速入门教程(二) C语言的基本语法 本节学习路线图: 引言: C语言,顾名思义就是一门语言,可以类比一下英语; 你要说出一个英语的句子需要:  单词  +  语法!  将单词按照一定的语法拼凑起来就成了一个英语句子了; C语言同样是这样,只不过单词可以理解为一些固定的知识点,而语法可以理解为算法(可以理解为解决问题的方法) 在这一节中我们就对固定知识点中的语言描述与数据存储进行解析! 1.C语言的基本元素 1.1  标识符 什么是标识符? 答:在C语言中,符号常量,变量,数组,函数等都需