DAVINCI DSP
的开发环境分两部分来讲,一是单核
DSP
运行的环境,二是和
ARM
建立相互通信
DSP SERVER
机制。本片先从简单的单核
DSP
运行环境说起,因为这个是基础的必须的东西,同时适合
DM643X
、
DM644X
平台。说到
DSP
的开发环境,当然离不开
CCS
,仿真器安装调试等步骤,这些很多网友都发表过不错的文章。本人重点介绍
DM6446
的
DSP
开发环境。
一、
CCS
安装介绍
目前
CCS4.0
已经出来,网上有篇文章《
CCS V4
+
SEED
仿真器基本操作指南
.pdf
》的介绍,大家可以了解一下,功能比
CCS3.3
强大多了,而且配置也比较简单。但鉴于国内主流开发
DAVINCI
的
CCS
版本是
3.3
,所以在这里具体介绍一下。
购买合众达仿真器或闻亭仿真器,都会提供
TI CCS3.3
,网上也有下载,安装之前,建议把各种杀毒软件先关闭掉,然后运行文件包里的
setup.exe
,会提示你的安装路径选择和平台选择界面,见下图:
如果不是开发
OMAP
芯片、
C2000
、
C5000
平台芯片,这些可以参考上图,把他们
“
X
”
掉,这样
CCS
安装就更省空间。
TMS470
和
C6000
平台一定要选,
TMS470
包括
ARM9
的驱动和配置,
C6000
包括
C64
、
C64+
、
C67
。然后点击“
Next
”,按提示安装下去。
二、
仿真器驱动安装介绍
选用仿真器,一般就是合众达
SEED
和闻亭了,开发
DAVINCI
平台,都必须用到
560
型仿真器,
510
是不行的,不知道
TI
当时是怎么想的,仿真器如此贵,也不便于
DAVINCI
平台的推广。三年前
PCI 560
(
8000
多)
和
USB 560
(上万元)都非常贵,后来推出
560 PLUS
一般都要
4000
左右。购买两家公司的仿真器都会提供安装光盘,里边有详细的安装介绍,这里不累赘。
三、
建立
DSP BIOS
例子工程
1、
配置
CCS
CCS
安装和仿真器驱动(本人买的是
SEED 560PLUS
)结束后,双击桌面
Setup CCStudio v3.3
,进入配置界面,见下图
主要选择
C64+
平台,
xds560
,开发
DM6437
,就选择
C6455 XDS560
这一项,如果开发开发
DM6446
,就选择
DM6446 XDS560
这一项,然后点击下面“
Add
”,这样在配置
My System
左边出现平台信息。
右键点击“
ARM9_0
”,选择“属性
properties
”,进入,在
GEL file
输入
dm644x_dvevm_arm.gel
,
接着,点击“
C6400PLUS_0
”,选择“属性
properties
”,在
GEL file
输入
dm644x_dvevm_dsp.gel
。一般买开发板都会提供相应的
GEL
文件,最后点击左下边“
Save&Quit
”,保存设置。
为了验证
CCS
安装、仿真器安装和配置是否正确,首先插好仿真器
JTAG
,如果板子有程序,建议把
DM6446 BOOT MODE
设置为
UART
模式,目的让板子发送
BOOTME
命令,板子没程序也会发送
BOOTME
,在这种模式下,才能连接
JTAG
。运行桌面的
CCStudio v3.3
,见下图,
给板子上电,确保上面的安装和配置一切
OK
,右键点击
ICEPICK_C_0
,“
Connect Device
”能连接上的话,表明仿真器等安装没问题,见下图。
连接设备
连接
ARM
Open ARM9_0
,设置
DSP
从
DDR BOOT
连接
DSP
Open DSP
以上连接如果都
OK
的话,表明仿真环境已经建立好,这时可以做
DSP
开发工作了。不过在进行工程开发之前,补充一点东西,有些朋友喜欢更新较新的
DSP/BIOS
包,
DSP/BIOS
是一个实时的操作系统,比如
bios_setupwin32_5_33_06.exe
,或者开发
DM6437
平台,则需要安装
DM6437_DVSDK
、
NDK
等开发包。
CCS3.3
自带的
DSP/BIOS
版本比较低,是
5.31.02
,安装新的
DSP/BIOS
包后,要对新的
BIOS
版本进行设置,点击菜单上的“
Help
”的“
About
”就会弹出下图:
点击“
Component Manager
”,见下图,
选择新的
BIOS
版本,从菜单上“
Save
”,并“
OK
”退出。关闭
CCS
,然后再重新启动
CCS
,新版本的
BIOS
就设置好了。
2、
工程建立
通过以上的步骤,我们可以开发
DSP
程序了,
DSP
程序分两种开发模式,算法
LIB
的开发和系统工程开发,或者把
LIB
的源码一起放到工程统一开发。
点击
DSP
界面菜单“
Project
”的“
New
”,出现以下界面,
如果是系统工程开发,输入工程名字,选择工程保存路径,点击
Finish
,就
OK
了。如果是算法
LIB
开发,则按下图选择
.lib
进入工程界面
这里边的工程配置有很多学问,涉及到
DSP/BIOS
的配置和设计,程序运行效率(优化),大部分
DSP
的书籍都有介绍,如果这里要详细一步一步描述,则太浪费时间,我们在这里点到为止,重点介绍
DM6446 DSP
端开发。右键点击工程
,dm6446_example.prj
,下拉有
Build Options
,这里有
Debug
模式和
Release
模式,运行程序时,
Debug
模式可以设置断点等一些功能,但运行效率很低。而
Release
则是正式发布版本模式,对程序做了一些优化,包括流水线等,不能设置断点。我们以
Release
模式为例,见下三图,
其他设置保持默认的就可以了,更完善的功能,则需要自己修改,这方面得书籍和网文有很多,
CCS
菜单
Help
里也有很多描述详细的文档。
设置完工程配置后,右键点击
Soure
,添加源码文件
,
一般就是
*.C
、
*.CPP
、
*.asm
、
*.sa
文件,然后添加相应的
*.cmd
文件,有例子可参考。
Include
不需要添加,编译的时候会自动链接到工程配置指定的路径搜索。
Libraries
则需要添加(
\CCStudio_v3.3\C6000\cgtools\lib\
)里的
rts64plus.lib
。还有其他
LIB
,比如自己开发的
*.lib
,
c6400\dsplib\lib
下的
dsp64x.lib
,
c6400\imglib\lib
下的
img64x.lib
,
EDMA3 LIB
,这些根据工程和算法程序需要而添加。
对于
DM6446
产品开发,无论采用
TI DSP SERVER
机制,还是独立
DSP
运行模式,都离不开
DSP/BIOS
,下图是新添加
DSP/BIOS
的方法,当然,你也可以直接使用开发板提供商提供的例子,或从网上下载相关带
DSP/BIOS
的例子。选择
ti.platform.evmDM6446
,
选择“
Global Settings
”,右键进行设置,见下图,
DSP
工作频率,看情况设定,商业级
DM6446
采用
594M
,其他设置保持不变。
还是在同一个界面,选择
64PLUS
,关键的地方时
L2CFG
,就是定义
L2
内部存储器
CACHE
的大小,同时使能
MAR 128-159
,这些
L1D
、
L2
的存取速度比
DDR2
快多了,可惜这两个片上内存很小,不能把很多程序段定义到这些片上内存运行。
同时,因为上面使用了
32K
的
L2
,则
MEM
下面的
IRAM
处,右键选择属性配置
IRAM
的
len
为
32K
,否则保存
BIOS
配置文件
*.TCF
时会出现错误,同样设置
DDR
或分配新的内存段(片内和片外),段的地址和长度一定要一一对应,衔接好,不能越界。
然后我们对
MEM
进行设置,同样右键选择
MEM-Memory Section Manager
,
第一个参数一般为
0x0004
,第二个参数默认是
0x400
,太小,我们加大一点,
0x4000
、
0x8000
、
0x10000
都可以。“
No Dynamic Memory heaps
”,不选,这样就允许我们在程序里动态申请内存,刚开始是不出现
DDR2
的,你要先“确定”,再右键选择
DDR
,入下图,“
create a heap in this memory
”一定要选中,然后
heap
的大小定义为
0x01000000
,
16M
,这个大小自己定义。这里设置完后,回到上图,
DDR2
就出现在下拉条里。这时候,上图的
BIOS data BIOS code
这些设置都可以定义到
DDR
内存上运行都可以。还有
BIOS
里的
BUF
、
SYS - System Settings
、
Instrumentation
、
Scheduling
、
Synchronization
、
Input/Output
介绍到这里,编译自己建的工程是没问题了,
CCS
仿真也可以运行程序,有关
Instrumentation
的设置、
Scheduling
、
Synchronization
、
Input/Output
这些在这里就不用累赘了,要认真讲完,完全可以写一本书,其实书店很多
DSP
的书籍都有介绍,网上各大
DSP
的论坛也有人举例如何添加多
TSK
、
PRD
、
HWI
、
SWI
、
SEM
、
MBX
等应用。
四、
OUT
文件的处理
生成的
OUT
文件,可以使用
HEX64
产生
BIN
文件,然后通过
ARM
,字节写个
DSP BOOT
的程序,设置控制
DSP BOOT
的寄存器,就可以把
DSP
给运行起来,这是一种独立运行
DSP
的方法,第二种就是下篇要介绍的
TI DSP SERVER
机制,如何把
OUT
文件和
Codec Engine
结合起来。
本文出自 “集成系统-人生观” 博客