DSP 6000系列开发指南

合集下载

第3章C6000系列DSPs的开发工具PPT课件

第3章C6000系列DSPs的开发工具PPT课件

BMEM
.sysmem >
BMEM
.far
>
EXT2
}
第三章 共49页
18
代码产生工具——文档管理器
• 可以将一组源文件或目标文件放入一个 文档文件库,每一个文件为一个库成员
• 可以对库成员方便地进行增、删、改操 作
• 根据库成员的种类,可以分为宏库和目 标库
• 目标库可以作为连接器的输入
第三章 共49页
第三章 共49页
22
代码产生工具——运行支持库
• 一个由一组C文件、C头文件和汇编语言 文件组成的库文件,实现了符合ANSI标 准的运行支持功能。
• C6000的运行支持库还支持浮点函数、 C6000的汇编指令性函数,并且能够访问 主机操作系统的C I/O函数。
第三章 共49页
23
系统集成与调试工具
生的中间文件,生成C6000汇编代码 (.asm)作为输出。
第三章 共49页
9
代码产生工具——汇编优化器
• 通过循环优化与合理分配寄存器来将线 性汇编转换成高度并行的汇编代码,充 分利用软件流水
• 输入为线性汇编、输出为标准汇编。
第三章 共49页
10
代码产生工具——汇编优化器
• 线性汇编代码中不需要给出汇编代码必 须指出的所有信息,这些信息由汇编优 化器确定,它们包括:
第三章 共49页
12
代码产生工具——汇编器
• 汇编器的输入是: □汇编优化器输出的汇编文件 □C编译器产生的汇编文件 □文档管理器管理的宏库内的宏 • 汇编器的输出是可重新分配地址的机器
语言目标文件(TI的COFF格式)
第三章 共49页
13
代码产生工具——连接器

TMS320C6000系列DSP程序开发word版本

TMS320C6000系列DSP程序开发word版本
DSP实用教程
4.1.1 TMS320C6000系列DSP的C语言特点
5.声明 (1)寄存器存储类对所有的chars﹑short﹑integer和pointer类型有效。 (2)结构体成员被打包为字。 (3)整数类型的位段带有符号,位段被打包为从高位开始的字,并且不能超
越字的边界。 (4)中断关键字interrupt只能用于没有参数的void型函数。
6.预处理器 预处理器忽略任何不支持的#pragma伪指令。
DSP实用教程
4.1.2 TMS320C6000系列DSP的C++语言特点
TMS320C6000系列DSP编译器支持ISO标准的C++语言,但与标准的C++又存在不 同的特点:
(1)并不包括完整的C++标准库支持,但是包括C子集和基本的语言支持。 (2)支持C的库工具(C library facilities)的头文件不包括: <clocale>,<csignal>,<cwctype>,<cwchar>。 (3)所包括的C++标准库头文件为<typeinfo>﹑<new>和<ciso646>。 (4)对bad_cast和bad_type_id的支持并不包括在typeinfo文件中。 (5)不支持异常事件的处理。 (6)默认情况下,禁止运行时类型的信息(RTTI)。RTTI允许在运行时确定各 种类型的对象。它可以使用-rtti编译选项来使能。 (7)如果两个类不相关,reinterpret_cast类型指向其中一个类成员的指针,不 允许这个指针再指向另一个类的成员。 (8)不支持标准中[tesp.res]和[temp.dep]里描述的“在模板中绑定的二相名”。 (9)不能实现模板参数。 (10)不能实现模板的export关键字。 (11)用typedef定义的函数类型不包括成员函数cv-qualifiers。 (12)类成员模板的部分说明不能放在类定义的外部。

DSP6000使用说明书

DSP6000使用说明书
1将dsp6000软件拷贝至d盘目录下2打开dsp6000文件夹将nspro配置文件拷贝至c盘windows目录下软件使用方法1ieditor
DSP6000使用说明书
DSP6000使用说明
软件安装方法:
1 将DSP6000软件拷贝至D盘目录下
2 打开DSP6000文件夹将nspro配置文件拷贝至C盘Windows目录下
1 打开NsdbtoБайду номын сангаасl.exe数据库软件‘点击用户管理,将会出现用户名,双击用户名就可以设置想要的密码.
软件使用方法
1Ieditor.exe为DSP6000的制图软件,利用这软件可以删除或者增加设备的一次图
2Nsdbtool.exe为DSP6000的数据库软件,利用这个软件可以设置各个模拟量数字量的数据属性
3Online.exe为DSP6000的在线监测软件,利用这个软件可以对高压系统实现实时监测.
密码的设置

DSP6000ICETEK-DM642-IDK-M图像、语音和网络处理实验系统操作指南

DSP6000ICETEK-DM642-IDK-M图像、语音和网络处理实验系统操作指南

DSP 6000(ICETEK-DM642-IDK-M)图像、语音和网络处理实验系统操作指南东南大学仪器科学与工程学院2008-5目录第一部分ICETEK-DM642 -IDK-M 硬件安装说明 (1)第一章硬件清单 (1)第二章硬件安装 (2)第二部分ICETEK-DM642-PCI 评估板技术参考手册 (4)第一章ICETEK-DM642-PCI评估板简介 (4)1.1 ICETEK-DM642-PCI 主要特点 (4)1.2 ICETEK-DM642-PCI 评估板功能概述 (5)1.3 基础操作 (5)1.4 存储器映射 (5)1.5 开关配置 (6)1.6 电源 (7)第二章ICETEK-DM642-PCI评估板板卡构成 (8)2.1 EMIF 端口 (8)2.2 视频端口/McASP端口 (10)2.3 PCI/HPI/Ethernet 端口 (13)2.4 I2C 端口 (14)2.5 SPDIF 端口 (14)2.6 背板端口 (15)2.7 FPGA 的编程 (15)2.8 DM642 核心CPU 时钟 (16)2.9 HDTV 执行 (16)第三章实物描述 (17)3.1 评估板版面布局 (17)3.2 连接器 (17)3.3 用户指示灯 (27)3.4 系统状态指示灯 (27)3.5 复位开关S3 (28)第四章ICETEK-DM642-PCI评估板OSD FPGA用户使用手册 (29)1 特点 (29)2 体系结构 (33)3 EMIF 配置 (37)4 显示信息的产生和处理 (39)5 异步寄存器定义 (40)6 同步寄存器定义 (45)7 不同的Video/OSD 模式操作 (47)第五章ICETEK-DM642-PCI评估板背板规范 (50)1 绪论 (50)2 背板接口 (50)第三部分ICETEK-DM642-IDK-M 实验系统的安装说明 (60)第一章软件安装 (60)第二章设置CCS (61)第三章实验操作 (61)第四章实验操作注意事项 (61)第一部分ICETEK-DM642 -IDK-M 硬件安装说明第一章硬件清单1.DSP 系统板(1)ICETEK-DM642-PCI 系统板1 块。

EL-DSP-E300型DSP6000系列实验开发系统

EL-DSP-E300型DSP6000系列实验开发系统

EL-DSP-E300型DSP6000系列实验开发系统一、适用范围:EL-DSP-E300型DSP6000系列实验开发系统是达盛科技在总结多年来产品开发经验的基础上推出的最新产品,与其他产品相比,它采用四层板制作工艺,从而使得产品的性价比和系统的稳定性及抗干扰性达到最优。

该产品适合《数字信号处理器原理与开发应用》等课程的实验教学以及相关课题的研究和开发。

二、结构简介:EL-DSP-E300型DSP6000系列实验开发系统由DSP CPU板、TFT-LCD单元、键盘输入单元、A/D转换单元、D/A转换单元、USB单元、语音单元、8路开关量输入输出和8个LED数码管显示输出单元、信号扩展单元、波形产生单元、CPLD逻辑单元、及E-lab扩展总线组成。

如下图示:EL-DSP-E300-6000系列结构图硬件资源:CPU板:CPU板可更换,系统支持Techv 6000系列的CPU板,包括Techv-6713、Techv-6416、Techv-6720/26、Techv-6727等;键盘单元:4X4键盘,用户可自定义键值,由CPLD软件译码控制;TFT-LCD单元:本单元的液晶屏采用台湾晶采光电科技股份有限公司的AM-176220JTNQW ,该款彩屏2.0英寸,具有白色LED背光显示;176 x 220点阵;26万真彩显示;支持8/9/16/18位并行接口设计,驱动芯片一般采用HX8039。

本设计采用16位并行接口模式;A/D转换单元:A/D转换芯片采用ADI公司的AD7887。

该芯片是一款高速、低功耗、12位的模数转换器,其供电电压范围为2.7V~5.25V。

具有125kSPS的吞吐率,转换的信号速率可达2.5MHz。

AD7887具有单/双通道两种工作模式和灵活的电源管理模式,并可通过芯片上的控制寄存器进行转换。

在缺省的单通道模式中,AD7887还可作只读ADC。

采用SPI串行接口与DSP连接;D/A转换单元:DA转换芯片采用ADI公司的AD7303。

dsp6000课程设计

dsp6000课程设计

dsp6000课程设计一、课程目标知识目标:1. 理解并掌握DSP6000的基本原理和功能特点;2. 学习并掌握DSP6000的编程方法和操作流程;3. 了解DSP6000在信号处理领域的应用场景。

技能目标:1. 能够运用DSP6000进行基本的信号处理操作,如滤波、傅里叶变换等;2. 能够编写简单的程序,实现DSP6000的数据处理功能;3. 能够运用所学知识解决实际问题,具备一定的实际操作能力。

情感态度价值观目标:1. 培养学生对数字信号处理技术的兴趣,激发学习热情;2. 培养学生的团队协作精神,提高沟通与协作能力;3. 增强学生的创新意识,培养勇于探索和解决问题的能力。

课程性质:本课程为实践性较强的学科,注重理论与实践相结合,以DSP6000为载体,培养学生的信号处理能力和编程技能。

学生特点:学生具备一定的数学基础和编程能力,对新技术充满好奇,喜欢动手实践。

教学要求:教师需引导学生主动参与,注重启发式教学,将理论与实践相结合,关注学生的个体差异,提高教学效果。

二、教学内容1.DSP6000原理概述:介绍DSP6000的基本结构、工作原理及其性能特点,对应教材第一章内容。

2.编程环境搭建:讲解如何安装和配置DSP6000的开发环境,包括集成开发工具的使用,对应教材第二章内容。

3.编程语言与指令集:学习DSP6000的编程语言和指令集,理解汇编语言和C 语言的编程规范,对应教材第三章内容。

4.数字信号处理算法实现:通过实例学习常见的数字信号处理算法,如快速傅里叶变换、数字滤波器设计等,对应教材第四章内容。

5.DSP6000应用案例分析:分析DSP6000在实际应用中的案例,如音频处理、图像处理等,对应教材第五章内容。

6.实践项目:设计并实现一个简单的信号处理项目,运用所学知识解决实际问题,培养学生动手能力和创新意识,对应教材第六章内容。

教学内容安排与进度:第一周:DSP6000原理概述第二周:编程环境搭建第三周:编程语言与指令集第四周:数字信号处理算法实现第五周:DSP6000应用案例分析第六周:实践项目设计与实现教学内容确保科学性和系统性,注重理论与实践相结合,以教材为基础,合理安排教学进度,关注学生的学习效果。

DSP初学者入门教程从零学DSPC5000C2000C6000OMAP

DSP初学者入门教程从零学DSPC5000C2000C6000OMAP

DSP初学者入门教程从零学DSPC5000C2000C6000OMAPDSP入门教程1、TI DSP的选型主要考虑处理速度、功耗、程序存储器和数据存储器的容量、片内的资源,如定时器的数量、I/O口数量、中断数量、DMA通道数等。

DSP的主要供应商有TI,ADI,Motorola,Lucent 和Zilog等,其中TI占有最大的市场份额。

TI公司现在主推四大系列DSP1)C5000系列(定点、低功耗):C54X,C54XX,C55X相比其它系列的主要特点是低功耗,所以最适合个人与便携式上网以及无线通信应用,如手机、PDA、GPS等应用。

处理速度在80MIPS--400MIPS之间。

C54XX和C55XX一般只具有McBSP同步串口、HPI 并行接口、定时器、DMA等外设。

值得注意的是C55XX提供了EMIF 外部存储器扩展接口,可以直接使用SDRAM,而C54XX则不能直接使用。

两个系列的数字IO都只有两条。

2)C2000系列(定点、控制器):C20X,F20X,F24X,F24XX,C28x该系芯片具有大量外设资源,如:A/D、定时器、各种串口(同步和异步),W ATCHDOG、CAN总线/PWM发生器、数字IO脚等。

是针对控制应用最佳化的DSP,在TI所有的DSP中,只有C2000有FLASH,也只有该系列有异步串口可以和PC的UART相连。

3)C6000系列:C62XX,C67XX,C64X该系列以高性能著称,最适合宽带网络和数字影像应用。

32bit,其中:C62XX和C64X是定点系列,C67XX是浮点系列。

该系列提供EMIF 扩展存储器接口。

该系列只提供BGA封装,只能制作多层PCB。

且功耗较大。

同为浮点系列的C3X中的VC33现在虽非主流产品,但也仍在广泛使用,但其速度较低,最高在150MIPS。

4)OMAP系列:OMAP处理器集成ARM的命令及控制功能,另外还提供DSP的低功耗其他系列的DSP曾经有过风光,但现在都非TI主推产品了,除了C3X系列外,其他基本处于淘汰阶段,如:C3X的浮点系列:C30,C31,C32C2X和C5X系列:C20,C25,C50每个系列的DSP都有其主要应用领域.2、设计中如何得到技术参考资料以及如何得到相关源码原则是碰到问题就去/doc/cb15462718.html 1)在TI网站的搜索中用keyword搜索资料,主要要注意的就是Application Notes,user guides 比如不知道怎样进行VC5402的McBSP编程,搜McBSP和VC5402如果不知道如何设计VC5402和TLV320AIC23的接口以及编程,搜TLV320AIC23和VC5402;这样可以搜到一堆的资料,这些资料一般均有PDF文档说明和相应的源程序包提供,download后做少许改动即可2)版上发问hellodsp 欢迎每一位有需要的提问者3)google搜4)再不济,找技术支持,碰运气了3、如何看待TI DSP庞杂的技术文档新手进行DSP开发学习之时,常常感觉技术文档太多,哪本都有用,哪本都想看,无从下手。

DSP器件原理与应用02_TMS320C6000系列DSP开发工具

DSP器件原理与应用02_TMS320C6000系列DSP开发工具

第2章 TMS320C6000系列DSP开发工具随着DSP应用的日益广泛深入和市场竞争的日趋激烈,如何降低开发难度,缩短开发周期成了开发者关心的焦点问题。

对于DSP厂商,其DSP产品的开发环境如何,开发工具是否完备,学习和使用是否方便是产品推广的重要因素。

TI公司的TMS320C6000系列DSP采用独特的VLIW结构,芯片强大的硬件功能是否能充分发挥在很大程度上取决于代码的效率,即取决于代码生成工具的好坏。

为此,TI公司推出了世界上第一个效率可达70% ~ 80%的汇编语言级C编译器,它产生的代码的平均效率是其他DSP编译器的3倍。

另外,C6000独有的汇编优化器使开发者可以采用线性汇编语言(串行汇编语言)得到近似标准汇编的性能,因而降低了开发难度。

2.1. CCS组件在CCS(Code Composer Studio)推出之前,DSP软件开发的过程是分立的,开发者要自行使用单独的代码编辑器、代码生成工具以及软件或硬件仿真工具。

CCS出现后,上述操作都隐藏在CCS集成环境下。

CCS扩展了基本的代码生成工具,集成了了调试和实时分析功能。

开发者的一切开发过程,包括工程的建立、源程序的编辑以及程序的编译和调试等,都在CCS集成环境下进行。

CCS包括:●TMS320C6000代码生成工具●集成开发环境●DSP/BIOS插件●RTDX插件,主机接口和应用程序接口2.2. 代码生成工具图2-1是C6000软件开发流程图,其中阴影部分是开发C代码的常规流程,其他功能用于辅助和加速开发过程。

图2-1 C6000软件开发流程图1. C/C++编译器C6000的C/C++编译器对C/C++代码进行编译,生成C6000汇编代码。

如图2-2所示,C/C++编译器内分为语法分析器(parser)、优化器(optimizer)和代码生成器(code generator)。

图2-2 C6000 C/C++编译器(1)语法分析器语法分析器的功能是对C/C++代码进行预处理,进行语言检查,然后生成一个中间文件(.if)作为优化器或代码生成器的输入。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图七 内存分配
图八 是一些打印调试用到的信息需要分配空间
这些信息,是和 cmd 文件是一致的。 运行完 main 函数之后,系统就转到线程函数运行。如下图
图九
其中,HWI 是硬中断,优先级是最高的,即 main 函数运行完毕后,要首先运行中断函数, 如果没有,就会到 SWI 软件中断,运行完毕中断之后,就到 TSK 了,即任务了。如果没有 任务运行,就是启动空闲线程 IDL,这个如果没有定义东西,系统就默认状态。 现在,我们的视频采集和处理,都会在 TSK 中进行的。
.rtdx_data: align = 0x40 { . += 0x80; *(.rtdx_data) } > DDR2
/* RTA_fromHost buffer */ .hst1: align = 0x4 {} > DDR2
/* RTA_toHost buffer */ .hst0: align = 0x4 {} > DDR2
FVID_Frame *frameBuffTable[FRAME_BUFF_CNT];定义视频采集帧要用到的内存 可以看看这个内存结构式如何的: typedef struct _FVID_Frame {
QUE_Elem
queElement; /* for queuing
*/
union
{
FVID_IFrame iFrm;
/* Initialize BSL library to read jumper switches: */ EVMDM6437_DIP_init();//初始化,根据 cmd 或 tcf 档,初始化内存的分配,所以在执 行工程前,要设定好。
sysModuleRegs -> PINMUX0 &= (0x005482A3u); sysModuleRegs -> PINMUX0 |= (0x005482A3u);
} > DDR2
.stack: { GBL_stackbeg = .; *(.stack) GBL_stackend = GBL_stackbeg + 0x8000 - 1; _HWI_STKBOTTOM = GBL_stackbeg + 0x8000 - 4 & ~7; _HWI_STKTOP = GBL_stackbeg;
DDR2
: origin = 0x80000000, len = 0x8000000 //DDR2 分配地址空间
L1DSRAM : origin = 0x10f04000, len = 0x10000 //全局变量分配地址空间
}
具体的代码等分配地址空间 SECTIONS {
.bss: {} >A_VECS = .; *(.hwi_vec)
} align = 0x400 > DDR2
.far: {} > DDR2
.sysdata: {} > DDR2
.dsm: {} > DDR2 .udev: {} > DDR2 frt: {} > DDR2 .mem: {} > DDR2 .bios: {} > DDR2 .cio: {} > DDR2 .data: {} > DDR2 .gio: {} > DDR2 .pinit: {} > DDR2 .sys: {} > DDR2 .sysregs: {} > DDR2 .text: {} > DDR2 .cinit: {} > DDR2 .devtable: {} > DDR2 .switch: {} > DDR2 .gblinit: {} > DDR2 .sysinit: {} > DDR2 .trcdata: {} > DDR2 .hwi: {} > DDR2 .rtdx_text: {} > DDR2 .TSK_idle$stk: {
/* PCIEN = 0: PINMUX1 - Bit 0 */ sysModuleRegs -> PINMUX1 &= (0xFFFFFFFEu); sysModuleRegs -> VPSSCLKCTL = (0x18u); 上面部分,是设置一些寄存器。 接下来,到视频处理任务线程 /* * ======== video_preview ======== */ void video_preview(void) {
图二 打开 DM6437 SDK 的 example
图三 打开 example
图四 打开视频采集例子
图五 打开 project
图六 看看有什么代码
2.工程解析 首先是 main 函数,其在 video_preview.c 这个文件中, void main() {
printf("Video Preview Application\n"); fflush(stdout);
.sts: { STS_A_TABBEG = .;
_STS_A_TABBEG = .; *(.sts) STS_A_TABEND = .; _STS_A_TABEND = .;
STS_A_TABLEN = (. - _STS_A_TABBEG) / 16; _STS_A_TABLEN = (. - _STS_A_TABBEG) / 16; } > DDR2
.pip: { PIP_A_TABBEG = .;
_PIP_A_TABBEG = .; *(.pip) PIP_A_TABEND = .; _PIP_A_TABEND = .;
PIP_A_TABLEN = (. - _PIP_A_TABBEG) / 100; _PIP_A_TABLEN = (. - _PIP_A_TABBEG) / 100; } > DDR2
GROUP { .const: align = 0x8 {} .printf (COPY): {} } > DDR2
.args: align=4 fill=0 { *(.args) . += 0x4;
} > DDR2
.trace: fill = 0x0 align = 0x4 { _SYS_PUTCBEG = .; . += 0x200; _SYS_PUTCEND = . - 1;
图十三
4.代码解释部分 /* Initialize BSL library to read jumper switches: */
EVMDM6437_DIP_init(); Main 函数,首先要初始化芯片,所以要调用这个函数。感觉是必须的
sysModuleRegs -> PINMUX0 &= (0x005482A3u); sysModuleRegs -> PINMUX0 |= (0x005482A3u);
/* * ======== video_preview ======== */
void video_preview(void) {
FVID_Frame *frameBuffTable[FRAME_BUFF_CNT]; FVID_Frame *frameBuffPtr; GIO_Handle hGioVpfeCcdc; GIO_Handle hGioVpbeVid0; GIO_Handle hGioVpbeVenc; int status = 0; int result; int i; int standard; int width; int height; ... } 下来就是 IDL,是空闲的时候,系统调用的,你可以定义一些任务,当系统空闲时,运行这 些函数,这里不详细说。 再下来,看看线程之间的同步和通信,是通过 synchronization 来定义一些变量的 如 SEM,是旗语,就像海军的那些,摇摇旗,就告诉你我这个任务是结束还是开始,MBX 是油槽,用来在任务之间传递参数的,旗语,只是一个标志形象那种,有点像 bool 量,e 而 MBX 对象,可以传递和交换数据。QUE,是队列,指定任务的先后运行顺序,LCK,没 有用过,自己理解。 后面看看 Input/Outpit 他是用来定义输入输出设备的
/* y/c frame buffer
FVID_PFrame pFrm;
/* y/c frame buffer
FVID_RawIFrame riFrm;
/* raw frame buffer
FVID_RawPFrame rpFrm;
/* raw frame buffer
Ptr
frameBufferPtr; /* Raw Frame Buffer
/* PCIEN = 0: PINMUX1 - Bit 0 */ sysModuleRegs -> PINMUX1 &= (0xFFFFFFFEu); sysModuleRegs -> VPSSCLKCTL = (0x18u);
return; } 从 cmd 档可以看到
/* MODULE MEM */
} > DDR2
.hst: { HST_A_TABBEG = .;
_HST_A_TABBEG = .; *(.hst) HST_A_TABEND = .; _HST_A_TABEND = .;
HST_A_TABLEN = (. - _HST_A_TABBEG) / 20; _HST_A_TABLEN = (. - _HST_A_TABBEG) / 20; } > DDR2
.DDR2$heap: { DDR2$B = .; _DDR2_base = .; DDR2$L = 0x4000000; _DDR2_length = 0x4000000; . += 0x4000000;
} > DDR2 .L1DSRAM$heap: {
L1DSRAM$B = .; _L1DSRAM_base = .; L1DSRAM$L = 0x10000; _L1DSRAM_length = 0x10000; . += 0x10000; } > L1DSRAM } 其地址空间的分配,和 tcf 文件里面是一致的
相关文档
最新文档