
DSP技术研究
蛋蛋强
科技,才是推动社会发展的最大力量。
展开
-
通用处理器(GPP)与DSP处理器的区别
首先从最明显的差别说起:GPP是通用的处理器,而DSP是专用处理器,专门处理高密集型重复型数据而设置的。 (1)处理器的架构: 传统上,GPP采用冯.诺依曼存储器结构,程序与数据共用一个存储器空间,通用一组总线(一个地址总线和一个数据总线)链接到处理器核。虽然现在典型的高性能GPP都包含两个片内高速缓存(一个数据,一个指令)直接连到处理器核,以加快运行时的访问速度。(这原创 2012-03-30 16:22:06 · 15024 阅读 · 1 评论 -
使用EMCV将工程.c文件改为.cpp文件所出现错误的解决办法
编译现象:"dm642_pci.cpp", line 183: error: argument of type "Ptr" is incompatible with parameter of type "GIO_Handle""dm642_pci.cpp", line 205: error: argument of type "Ptr" is incompatible with param原创 2012-12-14 13:52:07 · 2458 阅读 · 0 评论 -
CCS工程中使用EMCV所需做的配置和修改(独家!)
1、从网上下载EMCV(嵌入式平台的OpenCV)程序包,在CCS下新建lib工程,使用EMCV程序包中的cv源文件和cxcore源文件分别编译生成库文件dm642_cv.lib和dm642_cxcore.lib,将这两个库文件添加到工程中,将C++编程所使用的库文件rts64plus.lib添加到工程中。2、在Build Option--Compiler--Preprocessor--I原创 2012-12-14 11:18:09 · 7203 阅读 · 19 评论 -
使用EMCV出现missing DW_AT_name attribute问题的解决办法
链接现象:>> warning: missing DW_AT_name attribute>> warning: function definitions in CSU declarations are not supported>> warning: missing DW_AT_name attribute>> warning: function definitions in原创 2012-12-14 13:50:58 · 1576 阅读 · 0 评论 -
CCS3.3利用profile对程序的运行时间进行统计
CCS3.3 的运行时间统计有两种模式: 简单方法:profile-->clock-->enable和view,然后在想统计的区域设两个端点,将程序运行到第一个断点处(有人说用:运行到光标处的办法,有人说正常运行run到断点处,这两种方法不大一样,因为我的程序中有函数printf,前者不会显示,后者会显示)。然后,把窗口右下角的小钟表双击一下让他清零,然后run,程序从起始断点调到转载 2012-12-14 11:08:31 · 4794 阅读 · 1 评论 -
CCS中使用DSP定时器的计时程序,可以精确计算某一段程序的执行时间
#include TIMER_Handle hTimer0;TIMER_Config TimerConfig ={ TIMER_CTL_RMK ( TIMER_CTL_SPND_EMUSTOP, TIMER_CTL_INVINP_NO, TIMER_CTL_CLKSRC_CPUOVR8, //定时器的频率是CPU频率的1/8 TIMER_CTL_CP_PULSE,原创 2012-12-14 11:11:53 · 17279 阅读 · 3 评论 -
使用DSPBIOS的CCS工程设置(独家!)
1、创建DSP/BIOS配置文件,点击File→New→DSP/BIOS Configuration,选择DM642平台,进行相关配置,保存,编译。如果有错误,会无法打开图形化配置界面,需要在文本界面下将错误改正,编译无误后就可以重新打开。2、将DSP/BIOS配置文件dm642.tcf添加到工程中,dm642cfg.s62和dm642cfg_c.c文件会自动添加到工程中。3、将dm642原创 2012-09-10 13:40:30 · 8374 阅读 · 0 评论 -
CCS3.3卡死问题的解决方法
在使用CCS3.3写代码的时候经常会遇到编辑器死掉的情况,之后则必须在任务管理器里结束CCS3.3的进程,然后再重新打开CCS3.3才能重新继续写代码,这种情况尤其在双击某个变量或函数的时候特别容易出现,让人非常郁闷,其实解决方法很简单,步骤如下:1、打开CCS3.3主编辑界面2、Option -> Editor -> Language,打开语言属性调整对话框3、选择CodeSense原创 2012-09-10 13:43:53 · 10311 阅读 · 3 评论 -
SDRAM扩展
1、如果需要的数据总线宽度和SDRAM一样的话,使用串联扩展方式。a、12条address连在一起b、两片SDRAM的bank address也接到一起c、cs信号用来作为1bit的address,也就是容量扩大了一倍d、DQM对应的bit接在一起e、其他的cas,ras,we,data信号接在一起2、如果需要的数据总线是SDRAM两倍的情况下,使用并联扩展方式。a、c原创 2012-09-10 14:07:59 · 4341 阅读 · 0 评论 -
CCS工程中cmd文件的编写
Section目标文件中最小单位称为块,一个块就是最终在存储器映象中占据连续空间的一段代码或数据。1、COFF目标文件包含三个默认的块:.text可执行代码.data已初始化数据.bss为未初始化数据保留的空间2、汇编器对块的处理未初始化块 .bss 变量存放空间原创 2012-09-10 13:52:25 · 4453 阅读 · 0 评论 -
extern far void vectors();中far是什么意思
在16位编译器(Turbo C)中常见,这跟内存寻址有关。 PC机的内存地址是由段地址和偏移地址组成(汇编中常见的词),每个段不能超过64K地址。因此在段内寻址,只要用到偏移地址就够了,因段地址寄存器所存的段地址是不变的,用指针时,只16位够了(仅表示偏移地址)这类地址称为近指针(near型);当要跨段时,即要指明所要存取的段地地和偏移地址时,这时段寄存器中所存段地址要改变,因此要原创 2012-07-06 15:27:54 · 4429 阅读 · 0 评论 -
#ifdef __cplusplus详解
时常看到这样的代码:#ifdef __cplusplus extern "C" { #endif//一段代码#ifdef __cplusplus } #endif 这样的代码到底是什么意思呢?首先,__cplusplus是c++中的自定义宏,那么定义了这个宏的话表示这是一段c++的代码,也就是说,上面的代码的含义是:如果这是一段c++的代码,那么加入extern转载 2012-07-06 15:30:46 · 1706 阅读 · 0 评论 -
SEED-VPM642开发板IIC总线死锁解决办法(独家!)
问题现象:IIC程序一直停在while(I2C_bb(hI2C))或者while(!I2C_xrdy(hI2C))处问题原因:IIC总线工作状态不正确1、不正常关机或复位导致的IIC总线死锁(以此情况居多)2、上电时由于FLASH中没有程序,IIC总线容易被误操作,导致IIC总线上的设备被锁死。解决办法:1、将板卡的电源关闭,将仿真器USB线拔掉,重新上电。上电顺序是:原创 2012-07-06 15:24:49 · 3170 阅读 · 0 评论 -
新建CCS工程所需进行的配置(独家!)
相信很多人使用TMS320DM642进行视频编解码开发,对于配置好的工程,CSL用起来很方便。但是新建工程后需要根据自己的硬件平台对build option选项进行相应的配置,否则编译链接会无法通过。1、在Build Option--Compiler--Preprocessor--Pre-Define Symbol处添加上CHIP_DM642,以告诉CSL你现在使用的芯片的型号,CSL要根原创 2012-07-06 15:02:33 · 5292 阅读 · 1 评论 -
SDRAM中数据掩码DQM的作用
DQM就是掩码控制位,在sdram中每个DQM控制8bit Data。在读操作的时候没什么大的影响,比如读32位的sdram module,但只要其中低8bit的数据,没有关系,只要读出32bit数据,再在软件里将高24位bit和0“与”就可以了,有没有DQM关系不大。但在执行写操作时。如果没有DQM就麻烦了,可能在软件上是写一个8bit数据,但实际上32根数据线是物理上连接到SDRAM的,只要W原创 2012-07-06 15:21:32 · 7278 阅读 · 1 评论 -
使用hex6x.exe将out文件生成hex文件方法
首先你要有*.cmd文件和hex6x.exe和*.out文件。其中out文件是上面一篇中提到的,在CCS里面编译成功的输出文件*.out。*.cmd文件,里面的内容是这样的: debug\SEEDVPM642boot.out-a-memwidth 8-boot-bootorg 0x90000400-bootsection .boot_load原创 2012-05-09 11:05:07 · 11410 阅读 · 2 评论 -
DFT和FFT的运算量比较
N点DFT共需要N2次复数乘法和N(N-1)次复数加法,共4N2次实数乘法和(2N2+2N*(N-1))次实数加法。当N很大时,这是一个非常大的计算量。利用FFT算法之后,任何一个N为2的整数幂(即N= 2M)的DFT,都可以通过M次分解,最后成为2点的DFT来计算。M次分解构成了从x(n)到X(k)的M级迭代计算,每级由N/2个蝶形运算组成。完成一个蝶形计算需一次乘法和两次复数加法。原创 2012-04-19 11:19:18 · 45157 阅读 · 1 评论 -
CCS中头文件添加extern C { }语句的作用
CCS工程的头文件中添加extern "C" { }语句的原因是,由于C++支持函数重载,一个函数的名字可能有几个,在编译到汇编的时候,这些函数可能被重新命名(不是简单的在开头添加下划线'_'),这样C语言或汇编在链接由C++实现的函数时就会找不到具体位置。 C语言的规则是添加"_"前缀表示函数在汇编中的名称,例如main函数在汇编中为_main,但是C++不行,C++有重载。比如有原创 2012-12-14 13:53:06 · 4058 阅读 · 2 评论