[分享] 基于CCS的双核芯片的DSP端开发

Jacktang   2019-10-11 14:39 楼主

      由于双核心的异构处理器,一个是DSP内核一个是ARM内核,官方提供的开发方式都是在Linux下的,这样,对于DSP的程序,也是要使用makefile进行工程管理的,对于使用习惯了CCS类的IDE的小伙伴,可能都不太适应,而且还有大量的库文件以及很复杂的依赖关系,在开发时,往往是手足无措。那么我们就把Linux下的DSP工程,移植到windows或是Linux下的IDE 中来开发,使用IDE进行工程管理。

      首先,要了解工程的结构,对于最基本的DSP工程,是还没有添加库函数的,所以这里只是一个工程中最小的功能性的组成。

 

├── dsp

│   ├── bin

│   │   ├── debug

│   │   │   ├── obj

│   │   │   │   ├── main_dsp.oe674

│   │   │   │   ├── server_dsp.xe674.map

│   │   │   │   └── Server.oe674

│   │   │   └── server_dsp.xe674

│   │   └── release

│   │   ├── obj

│   │   │   ├── main_dsp.oe674

│   │   │   ├── server_dsp.xe674.map

│   │   │   └── Server.oe674

│   │   └── server_dsp.xe674

│   ├── configuro

│   │   ├── compiler.defs

│   │   ├── compiler.opt

│   │   ├── config.bld

│   │   ├── custom.mak

│   │   ├── linker.cmd

│   │   ├── package

│   │   │   ├── build.cfg

│   │   │   ├── cfg

│   │   │   │   ├── Dsp_pe674.c

│   │   │   │   ├── Dsp_pe674.cfg

│   │   │   │   ├── Dsp_pe674.cfg.dot

│   │   │   │   ├── Dsp_pe674.cfg.xml

│   │   │   │   ├── Dsp_pe674.dep

│   │   │   │   ├── Dsp_pe674.h

│   │   │   │   ├── Dsp_pe674.mak

│   │   │   │   ├── Dsp_pe674.oe674

│   │   │   │   ├── Dsp_pe674.oe674.dep

│   │   │   │   ├── Dsp_pe674.rov.xs

│   │   │   │   ├── Dsp_pe674.rta.xml

│   │   │   │   ├── Dsp_pe674.xdc.inc

│   │   │   │   ├── Dsp_pe674.xdl

│   │   │   │   └── Dsp.xe674.mak

│   │   │   ├── configuro.ccs

│   │   │   ├── configuro.class

│   │   │   ├── configuro.java

│   │   │   ├── configuro.pjt

│   │   │   ├── configuro.sch

│   │   │   ├── internal

│   │   │   ├── lib

│   │   │   ├── package.bld.xml

│   │   │   ├── package_configuro.c

│   │   │   ├── package.defs.h

│   │   │   ├── package.xdc.dep

│   │   │   ├── package.xdc.inc

│   │   │   └── rel

│   │   │   ├── configuro.xdc.inc

│   │   │   └── configuro.xdc.ninc

│   │   ├── package.bld

│   │   ├── package.mak

│   │   ├── package.xdc

│   │   └── package.xs

│   ├── Dsp.cfg

│   ├── main_dsp.c

│   ├── makefile

│   ├── Server.c

│   └── Server.h

├── host

│   ├── App.c

│   ├── App.h

│   ├── bin

│   │   ├── debug

│   │   │   ├── app_host

│   │   │   ├── app_host.map

│   │   │   └── obj

│   │   │   ├── App.ov5T

│   │   │   ├── App.ov5T.dep

│   │   │   ├── main_host.ov5T

│   │   │   └── main_host.ov5T.dep

│   │   └── release

│   │   ├── app_host

│   │   ├── app_host.map

│   │   └── obj

│   │   ├── App.ov5T

│   │   ├── App.ov5T.dep

│   │   ├── main_host.ov5T

│   │   └── main_host.ov5T.dep

│   ├── main_host.c

│   └── makefile

├── makefile

├── products.mak

├── readme.txt

├── run.sh

└── shared

├── AppCommon.h

├── config.bld

└── SystemCfg.h

 

      这里的头文件与C文件,都是与windows下一样的,而makefile是对工程进行编译时使用到的,这里当使用到CCS后,就不再使用这个文件了,而最主要的就是Dsp.cfg文件了,这个文件是比较重要的,这个是使用syslink进的一个配置文件。

 

     还有一个文件在shared中的config.bld。这是对DSP内存进行分析的一个文件,内存分配不对的话,工程可能不会有语法错误,但是会在双核心系统运行时,出现内存溢出或是参数错误的情况,这里在格外注意,否则后期再找错误就很费时间了。

这里是把所有的内存分成了几个部分,分别分配给Linux与DSP使用,内存间不可以有重叠的部分,最好也是要按字节对齐。

 

 

 

有上这些,我们就可以在CCS中新建一个工程,再移植这些配置信息了。

 

首先,新建一个CCS的工程,这里就不再细说了,新建工程都不会的话,那么就真的太……

新建工程时,选择的工程类型是Code Composer Studio下的CCS Project

 

 

 

 

 

详细的配置如上,这里要指定你的芯片类型,还有要指定是DSP下的工程,也就是内核要选择成C674x的,这个是这个芯片的DSP内核的型号,工程类型这里进一步选择是SYS工程,选择典型工程即可以。

 

 

 

 

下一步后,配置如下图,这里选择好SYS的版本,这个版本是要与软件的版本与Linux的版本要对应的。

 

 

这里先选择的是evm开发板的platforms配置文件,后面,我们要建一个针对自己的开发板的配置文件,其实内存的配置是差不多的,但是在缓存与内存总大小是不一样的,所以分配的地址空间也不一样,就要在IDE下重新进行建立一个配置文件了。

要选择新建中的其他类型,才可以找到platforms配置文件的,如下图

 

 

在如下图的新建界面选择New RTSC Platform

 

 

按如下图配置,设置名称与芯片的类型与芯片的型号。

 

 

      再一下步就是重点了,这要按之前的config.bld来分析内存与缓存了。

     由于这里默认的配置与我们的开发板上的是完全不一样的,要全部删除后重新建立,所以,对于这些内存分配的控制可以按下图的方式删除与添加。添加时,按config.bld文件中的地址进行添加。

 

 

 

下面,对config.bld文件进行分配。

 

     如下图所示,绿色的为External memory ,黄色的是地址与偏移长度,这里要设置好的。注意,这里由于是分配的外部的DDR的内存,而不是芯片内部的RAM,所以这里统一都要设置在External memory这一栏中。

比如SR_0这一块,起始地址是0xC2000000,长度为0x10000,即64K。依次类推,SR_1是128K,DSP_PROG是8M的空间。

     并且要将芯片片上的RAM都设置成缓存,也就是使能L1D、L1P、L2的缓存功能。

 

 

最后的配置界面内容如下。

 

最后,在工程的属性界面,重新配置工程的platforms配置文件,也就是修改成我们新建的这个platforms配置文件,再把工程中的源文件与头文件都添加到新的工程中,把原文件删除后,这个工程就算是移植完成了。

 

到此,基于IDE的双核心芯片下的DSP工程就移植好了,编译一下,生成了out文件,把out文件复制到开发板,并通过syslink的工程进行加载。

 

 

加载成功会有下的输出。其中,run.sh是加载DSP程序的脚本,之前使用一条条的命令加载,写与脚本方便好多,可以把DSP程序与驱动一起加载。

 

 

 

 

 

 

本帖最后由 Jacktang 于 2019-10-11 14:46 编辑

回复评论 (2)

你是真棒啊   一次性垒这么多字出来!

 

这里的头文件与C文件,都是与windows下一样的,而makefile是对工程进行编译时使用到的,这里当使用到CCS后,就不再使用这个文件了,而最主要的就是Dsp.cfg文件了,这个文件是比较重要的,这个是使用syslink进的一个配置文件。

数控等离子切割机,数控精细等离子切割机
点赞  2019-10-11 15:10

您好,请问图片不能看到,能发我一份吗?


点赞  2023-10-27 18:39
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复