转载一篇简单的多核dsp项目helloWord

本文详细介绍如何在CCS环境中创建并运行多核DSP项目,包括项目建立、文件导入、编译、仿真及调试等关键步骤。

原创文章

转载请注册来源 http://blog.youkuaiyun.com/tostq

教程目录:http://blog.youkuaiyun.com/tostq/article/details/51245979

本节我们将运行第一个多核DSP程序,熟悉CCS开发环境,学会使用CCS调试工具,主要内容如下:

(1)新建CCS项目
(2)导入Target 仿真模块
(3)使用调试工具

一、新建CCS项目

选择File/New/CCS Project

二、新建项目对话框
(1)Project name: 指项目名称,这里要注意的项目名称不区分大小写
(2)Output type: 输出类型,Executable指可执行文件(一般为.out格式,可直接下载到DSP内运行),Static Library指静态库(输出格式一般为.lib文件),我们这里的程序需要直接在DSP内运行,所以选择Executable格式
(3)Use default location: 是指项目存放的目录
(4)Device: 确定我们程序需要在什么型号的DSP下运行,如果我们选择的型号是通用型号如Generic C66xx Device,只能进行软仿真,但是如果我们有硬件评估板之类如EVMC6747,此时下面的Connection会高亮,可以选择需要硬件仿真器,如下所示:

(5)Project templates and example: 可以选择项目模板,有空项目也有许多DSP自带例子,这里我们先选择Empty Project
关于项目模板的创建和使用可以参考这个文档: http://processors.wiki.ti.com/index.php/Project_Templates_in_CCS
(6)Advance setting,保持默认就可以了
(7)点击Finish,完成项目创建,之后我们可以在Project Explorer看到工程项目,当前项目中只有一个Includes文件夹,项目名称旁边的[Active - Debug]是指当前项目是工作项目,当Project Explorer有多个项目时,同一时间只能有一个项目是有效的,通过单击项目就能实现切换。 
三、新建与添加文件
(1)新建文件helloworld.c,选择当前项目,右键单击,选择/New/File,得到新建文件对话框,输入文件名后Finish

(2)编辑文件内容,双击文件,就可以进行编辑了,DSP的语法同C语言基本一致。这里的DNUM是在c6x.h中定义,表明当前核的ID号。
(3)导入Linker文件(或叫链接命令文件),其是.cmd格式的,是项目必须的,主要是给处理器安排内存、堆、栈等方面的分配,可以自己手动生成,也可以到Ti官网上根据不同的处理器下载不同Linker文件:http://processors.wiki.ti.com/index.php/Linker_CMD_Files_for_CCS 。这里我们假设处理器平台为C6678,因此下载对应的C6678链接命令文件。
       下载后C6678.cmd文件后,回到项目上,右击选择Add Files...,将C6678.cmd导入到项目中,此时出现如下对话框:
       选择Copy files是将导入的文件复制到项目目录下,而Link to files只是相当于快捷方式,这里我们选择Copy files,此时我们完成了项目的文件导入,如下,还有一种导入方法,是直接将文件复制到项目目录下,然后刷新Project Explorer后就能自动导入项目需要的文件。

三、编译项目
当源文件、链接命令文件、头文件就位后,就可以进行项目编译了。项目编译有如下几种方法:
(1)右击当前项目,选择Build Project
(2)选择菜单栏Project,点击Build Project
(3)选择工具栏上的小锤子,此时还可以切换Debug/Release
       点击编译后,可能会得到如下提示,这里Console是控制命令窗口,Problems是提示错误和警告,这里的编译结果是没有错误和警告。
四、项目仿真
       这里仿真是软件仿真,我们需要首先生成一个Target文件,这个文件主要目的是定义仿真器
       点击选择Target Configuration File,键入目标配置文件名称后,Finish完成安装
       此时Project Explorer中多了一个.ccxml文件,我们可以看到这个文件上多了一个红色小叉,这个标记说明了当前文件有错误,因为当前我们还没有配置目标仿真器,所以会出现错误。
       我们选择C6678 Device Functional Simulator, Little Endian,单击Save,完成目标配置,此时我们也可以发现文件上红色小叉也消失了。
       目标配置文件完成后,就可以开始仿真了,这里同项目编译一样也有三种方式,不过这里我们推荐直接点击工具栏上的小虫,点击仿真后,因为这里的C6678是多核DSP,所以会现在如下选择DSP核的对话框。这里全选完成。
       仿真调试窗口如下:
       这里如果有部分窗口没有出现,也没关系我们可以在窗口中选择
(1)单核运行,我们选择一个核,点击运行,在控制台窗口可以看到结果

(2)多核运行,我们通过Shift全选所有核,右击选择Groups cores,然后点击运行,在控制台窗口可以看到多个核运行的结果

       这里如果没有出现预期的结果,可以重新导入程序,重新测试下,这里导入的执行文件是前面编译过程生成的.out文件

       完成调试后,我们点击红色小方块停止调试,重新返回到我们原来的界面
这里我们就完成了第一个多核DSP项目,是不是很简单,这里关于相关调试工具的使用,我们放到后面进行讲解~_~
五、参考文献
Ti官网资料
关于创建项目:http://processors.wiki.ti.com/index.php/GSG:Creating_projects_v5

关于调试项目:http://processors.wiki.ti.com/index.php/GSG:Debugging_projects_v5

例程:https://github.com/tostq/EasyMulticoreDSP/tree/master/1.HelloWorldtest

  •                     <li class="tool-item tool-active is-like "><a href="javascript:;"><svg class="icon" aria-hidden="true">
                            <use xlink:href="#csdnc-thumbsup"></use>
                        </svg><span class="name">点赞</span>
                        <span class="count">8</span>
                        </a></li>
                        <li class="tool-item tool-active is-collection "><a href="javascript:;" data-report-click="{&quot;mod&quot;:&quot;popu_824&quot;}"><svg class="icon" aria-hidden="true">
                            <use xlink:href="#icon-csdnc-Collection-G"></use>
                        </svg><span class="name">收藏</span></a></li>
                        <li class="tool-item tool-active is-share"><a href="javascript:;"><svg class="icon" aria-hidden="true">
                            <use xlink:href="#icon-csdnc-fenxiang"></use>
                        </svg>分享</a></li>
                        <!--打赏开始-->
                                                <!--打赏结束-->
                                                <li class="tool-item tool-more">
                            <a>
                            <svg t="1575545411852" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5717" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M179.176 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5718"></path><path d="M509.684 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5719"></path><path d="M846.175 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5720"></path></svg>
                            </a>
                            <ul class="more-box">
                                <li class="item"><a class="article-report">文章举报</a></li>
                            </ul>
                        </li>
                                            </ul>
                </div>
                            </div>
            <div class="person-messagebox">
                <div class="left-message"><a href="https://blog.youkuaiyun.com/tostq">
                    <img src="https://profile.csdnimg.cn/9/3/2/3_tostq" class="avatar_pic" username="tostq">
                                            <img src="https://g.csdnimg.cn/static/user-reg-year/1x/9.png" class="user-years">
                                    </a></div>
                <div class="middle-message">
                                        <div class="title"><span class="tit"><a href="https://blog.youkuaiyun.com/tostq" data-report-click="{&quot;mod&quot;:&quot;popu_379&quot;}" target="_blank">tostq</a></span>
                                            </div>
                    <div class="text"><span>发布了87 篇原创文章</span> · <span>获赞 213</span> · <span>访问量 64万+</span></div>
                </div>
                                <div class="right-message">
                                            <a href="https://bbs.youkuaiyun.com/forums/p-tostq" target="_blank" class="btn btn-sm btn-red-hollow bt-button personal-messageboard">他的留言板
                        </a>
                                                            <a class="btn btn-sm attented bt-button personal-watch" data-report-click="{&quot;mod&quot;:&quot;popu_379&quot;}">已关注</a>
                                    </div>
                            </div>
                    </div>
    </article>
    
光电经纬仪是最早、最广泛应用于飞行器测控领域的光电跟踪测量设备,它 的组成部分包括大地测量光学经纬仪、激光跟踪测量系统、微机控制系统与图像 处理系统组成。光电经纬仪通过记录飞行过程中的目标图像,并测量传动机架的 角度,从而获得目标飞行参数,它在飞行实况记录中发挥重要的作用 [1] 。此外, 它还可以实现迅速定位目标位置和自动跟踪高速目标,已被广泛地应用于诸如航 天发射、飞行器测控等光电测量领域 [1] 。 随着数字图像处理等技术的发展,光电经纬仪由胶片式成像向数字式成像转 变。此外,高帧速率、高分辨率成像传感器技术已被广泛应用于光电经纬仪。这 些给光电经纬仪实时图像处理平台的发展带来新的挑战:复杂图像处理算法的实 现和数据吞吐量的巨大需求 [1-2] 。 DSP 作为一种密集型数据运算与实时信号处理的微处理器,能够很好的满足 复杂图像处理算法、实时性处理的需求。DSP 技术经过年的发展,被广泛应用 在信号、图像、通信等技术领域,尤其是高性能计算、高速实时图像处理、超大 数据量处理的军用电子领域 [2] 。现今的图像处理平台由于芯片单片运算能力受到 限制,绝大部分使用了DSP + FPGA 的架构,才能勉强实现实时图像处理任 务 [3] 。但是这样的平台带来的困难是显而易见的: 1. 系统结构复杂。采用DSP+FPGA 的架构,系统的整体处理性能受片 间(DSP 与 FPGA 之间、DSPDSP 之间)通信带宽瓶颈而下降。 2. 系统功耗大。DSP 在单块电路板上的集成度越高,带来了单板整体 功耗的增加和散热的问题,导致单板DSP 整体处理性能的可靠性和稳定性。 3. 系统调试困难。由于系统结构的复杂,导致系统的调试异常的困难。芯 片之间的任务分配、数据传输、并行处理非常复杂,使得产品在设计、调试、生 产阶段的难度加大。 本文研究的课题来源于光电经纬仪图像处理平台由DSP 架构升级到 DSP 架构而提出的系统应用需求。结合实验室的项目情况,本文将重点放在 DSP 并行的以下相关技术: 1. DSP+FPGA 架构下图像数据流的设计。光电经纬仪的图像处理系统需要 兼容前端的种图像输入格式,包括 CameraLink、SDI 以及光纤接口,DSP+FPGA载板搭配不同的子板就可以实现输入的灵活性;此外,DSP+FPGA 图像处理系 统中的高速 SRIO 接口用于图像数据通信。本文在 CameraLink 和 SRIO 这两个关 键接口做了一定的研究工作。 2. 环境下并行访问共享/外部存储器的性能研究和设计原则分析。 DSP 中存在个主设备,包括DSP个 EDMA 设备等,它们并行访 问存储器的数据带宽,对于应用程序存储资源的安排、软件结构的设计是至关重 要的。 3. DSP 并行调度方案的研究。 DSP 图像处理平台,一方面要实 现复杂的图像处理算法,另一方面要满足超大运算量对实时性处理的需求。基于 的系统应用开发关键的一步,就是选择合适的处理模型实现任务并行调度。 本文将介绍 DSP 并行调度的几种方案,并以算法实例对主从模型进行分析。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值