dsp 编译错误与解决方法
DSP烧写错误原因

1.DSP程序烧写后,带仿真器程序能正常运行,通信测试是对的,但拔下仿真器后就出错了,请问是什么原因?答:串口通信连着仿真器说明有硬件电气连接。
使用无源rs232转485接口跟dsp通信的,接着仿真器就行,不接仿真器通信异常。
然后把485的地和dsp电源的地共起来,就好了。
2. DSP使用仿真器很正常工作,但是通过烧写到ROM后,load代码到DSP RAM中后无法正常运行.答:首先检查你的烧写程序可有问题。
有些烧写程序指定.test代码长度。
其次在代码上找问题,可以锁定在在线与烧写cmd文件的变化。
烧写原理是什么?代码编译为二进制或十六进制数,搬移进rom,存储起始地址、长度确定没有问题。
假设正确,检查能否在线对rom进行正常的擦除与读写?假如还是正确,检查硬件电路,这个就比较麻烦了。
确定启动模式设置的正确?自举启动要dsp外围电路的电压、时钟、模式选择、默认态确认正确?还有问题就是芯片自启动有问题了3.我也出现过能仿真,但不能烧写的情况!解决方法:降低时钟频率。
点击FLASH插件上的“View Config File”,打开VAR.h文件。
将该文件中的“PLL_PATIO_CONST .Set 0000h”改成“PLL_PATIO_CONST .Set 0200h”存盘后,执行目录下的Buildall.bat批处理文件。
再重新启动CCS及FLASH插件。
最大可能是DSP的FLASH烧掉了,这个烧掉不影响程序的仿真;我之前也是烧不进去,后来换了块芯片就好了,芯片的来源很重要。
第二个问题是你在烧写程序时将CMD修改了没有,要跳过密保单元;你的memory map设置是否正确? 还有如果烧写flash 评估办上跳线是否正确? 我用的时候好几块评估板都是可以load programme 。
可以加载到ram 中进行仿真,但是不能烧写道flash 进行自动运行。
4.我也遇到这样的问题,同样郁闷。
一个以前跑过的好好的程序,因为改了仿真器的配置,就出现了楼主所述问题,反复尝试,都是如楼主所述。
DSP常见问题及解决

问:我测试你们的程序的时候,go main 进不去主函数,进入的是一段汇编。
是怎么回事?答:程序如果要进行设断点,观察变量等操作,要先调入project文件,然后再调入out文件。
如果是可以直接执行能看到结果的,就直接调入out文件,run就可以。
问:CY68013的固件程序怎么修改?答:在把QQ2812都研究清楚了,有精力有兴趣自己可以买一本EZ-USB的书好好看看。
在此之前,请不要随便更改固件代码,因为一旦出错,可能带来不必要的麻烦。
固件代码是通过USBControlPanel,使用USB接口进行下载的。
:2812的主频是最大150M,我如果想设为100M是在那里设置?答:打开工程,在Source文件夹下,打开DSP28_SysCtro.c文件,找到如下语句,修改即可。
// Initalize PLLSysCtrlRegs.PLLCR = 0x02;///锁相环产生的时钟频率定标,这里配置为30M问:为什么我的程序在SRAM中正常,烧入Flash后不对?答:1、请先确认你编译的时候使用了flash.cmd,推荐使用我们提供的flash.cmd,如果自己更改了这个文件,请先确认cmd文件的正确性;2、编译的时候,如果选择release模式,请检查一下build option,把其中的opt level改为none,即取消编译优化选项,很多语句在优化的时候可能会产生错误的优化结果。
或者选择debug模式编译,烧写正确后再改为release模式,通过对比两种模式的编译选项也能看出其中的区别。
3、程序在flash中运行会比在ram中运行大概慢20%,因此对于一些时序敏感的外设,比如usb总线,就有可能需要调整时序,否则就会有问题。
问:数码管LED显示的时候发送的数据是怎么规定和产生的?答:其实如果自己看程序和原理图自己就可以知道是怎么产生的。
数码管数据如下:Uint16SpiCode[]={0x7E7E,0x2929,0x2c2c,0x6666,0xa4a4,0xa0a0,0x3e3e,0x2020,0x2424,0x22 22,0xe0e0,0xb1b1,0x6868,0xa1a1,0xa3a3,0xffff,0xdfdf};数码管的笔画对应关系如下:63 742 01 5就是说0~7分别对应笔画的a~h,在原理图看就是分别连接的Q0~Q7这个数码管的型号是LG3611BH,是共阳级的,也就是说某个笔画为0的时候,这个笔画被点亮。
DSP常见问题及解决

问:我测试你们的程序的时候,go main 进不去主函数,进入的是一段汇编。
是怎么回事?答:程序如果要进行设断点,观察变量等操作,要先调入pro ject文件,然后再调入ou t文件。
如果是可以直接执行能看到结果的,就直接调入ou t文件,run就可以。
问:CY68013的固件程序怎么修改?答:在把QQ2812都研究清楚了,有精力有兴趣自己可以买一本EZ-USB的书好好看看。
在此之前,请不要随便更改固件代码,因为一旦出错,可能带来不必要的麻烦。
固件代码是通过USBCon trolPa nel,使用USB接口进行下载的。
:2812的主频是最大150M,我如果想设为100M是在那里设置?答:打开工程,在Source文件夹下,打开DSP28_SysCt ro.c文件,找到如下语句,修改即可。
// Initali ze PLLSysCtrl Regs.PLLCR = 0x02;///锁相环产生的时钟频率定标,这里配置为30M问:为什么我的程序在SRAM中正常,烧入Flash后不对?答:1、请先确认你编译的时候使用了flash.cmd,推荐使用我们提供的flas h.cmd,如果自己更改了这个文件,请先确认cmd文件的正确性;2、编译的时候,如果选择rel ease模式,请检查一下bu ild option,把其中的opt level改为none,即取消编译优化选项,很多语句在优化的时候可能会产生错误的优化结果。
或者选择deb ug模式编译,烧写正确后再改为relea se模式,通过对比两种模式的编译选项也能看出其中的区别。
3、程序在flas h中运行会比在ram中运行大概慢20%,因此对于一些时序敏感的外设,比如usb总线,就有可能需要调整时序,否则就会有问题。
DSP常见问题解答

DSP常见问题解答如何选择外部时钟?DSP的内部指令周期较高,外部晶振的主频不够,因此DSP大多数片内均有PLL。
但每个系列不尽相同。
1)TMS320C2000系列:TMS320C20x:PLL可以÷2,×1,×2和×4,因此外部时钟可以为5MHz-40MHz。
TMS320F240:PLL可以÷2,×1,×1.5,×2,×2.5,×3,×4,×4.5,×5和×9,因此外部时钟可以为2.22MHz-40MHz。
TMS320F241/C242/F243:PLL可以×4,因此外部时钟为5MHz。
TMS320LF24xx:PLL可以由RC调节,因此外部时钟为4MHz-20MHz。
TMS320LF24xxA:PLL可以由RC调节,因此外部时钟为4MHz-20MHz。
2)TMS320C3x系列:TMS320C3x:没有PLL,因此外部主频为工作频率的2倍。
TMS320VC33:PLL可以÷2,×1,×5,因此外部主频可以为12MHz -100MHz。
3)TMS320C5000系列:TMS320VC54xx:PLL可以÷4,÷2,×1-32,因此外部主频可以为0.625MHz-50MHz。
TMS320VC55xx:PLL可以÷4,÷2,×1-32,因此外部主频可以为6.25MHz-300MHz。
4)TMS320C6000系列:TMS320C62xx:PLL可以×1,×4,×6,×7,×8,×9,×10和×11,因此外部主频可以为11.8MHz-300MHz。
TMS320C67xx:PLL可以×1和×4,因此外部主频可以为12.5MHz-230MHz。
DSP调试及烧写和加载常见错误及分析

DSP调试及烧写和加载常见错误及分析在进行DSP调试、烧写和加载过程中,常见的错误有很多,下面是一些常见错误及其分析:1.调试错误:-问题描述:无法连接到DSP设备。
-分析:可能是因为设备未正确连接,或者连接线路有问题,也可能是驱动程序不兼容导致的。
-解决方法:检查设备的连接状态,确保连接正确;检查连接线路是否完好;更新或卸载并重新安装驱动程序。
2.烧写错误:-问题描述:烧写失败或者烧写之后设备无法启动。
-分析:可能是烧写的文件有错误或者不完整,也可能是设备本身存在问题。
3.加载错误:-问题描述:加载程序时出现错误,或者加载之后程序无法正常运行。
-分析:可能是加载的程序有问题或者与设备不兼容,也可能是设备本身存在问题。
4.软件错误:-问题描述:使用的调试、烧写或加载软件出现错误或崩溃。
-分析:可能是软件本身存在问题,也可能是与其他软件或系统的兼容性冲突。
-解决方法:更新软件版本,或者使用其他可靠的软件;检查是否存在与其他软件或系统冲突的情况,如果有需要进行排查和修复。
5.设备故障:-问题描述:设备无法识别、烧写或加载,存在硬件故障。
-分析:可能是设备损坏或老化,设备内部电路出现问题。
-解决方法:检查设备的物理状态,是否存在损坏或老化情况;检查设备的内部电路,如果有问题需要进行修复或更换。
6.嵌入式系统错误:-问题描述:DSP芯片上的嵌入式系统无法正常运行。
-分析:可能是系统的软件代码有问题,硬件与软件的不匹配,系统配置错误等。
-解决方法:检查系统的软件代码,重新进行编译、调试和烧写;检查系统的硬件与软件的兼容性,如果有问题需要进行修复或更换;检查系统的配置参数,进行适当的修改。
在遇到以上错误时,可以根据具体情况进行分析和解决。
同时,可以参考调试、烧写和加载工具的操作手册,寻求厂商的技术支持,或者查阅相关的文档和资料来获取更多的帮助和解决方案。
调试、烧写和加载过程中可能会遇到各种各样的问题,需要耐心和细心进行排查和解决。
DSP软件应用中出现的问题

DSP软件应用中出现的问题自己在使用DSP软件Code Composer Studio v4是遇到一些常见的错误:1:Severity and Description Path Resource Location Creation Time Iderrors encountered during linking; "timer_sdram.out" not builtSeverity and Description Path Resource Location Creation Time Idunresolved symbol _ADC_cal, first referenced in ./DSP2833x_SysCtrl.obj出现这样的问题,通常是少了一些文件,需要手动添加这些文件到工程里解决的方法是:在工程上右击links files to project,之后找到DSP2833x _ADC_cal.asm文件添加到工程里2:当我在用到软件中自带的头文件中的一些结构体,共用体。
说白了就是要对芯片寄存器的位进行操作时软件给我们提供了方便,如果不能“.” 符号不能灵活弹出对应选项时,例如CpuTimer0Regs.TCR.all,应该检查CpuTimer0Regs是否敲写正确,应该编译一下工程,我的做法就是写一个头文件,和主函数,并在函数里写一个InitSysCtrl();(当然前提你的头文件要有定义这个函数)在编译。
3:在学习中遇到了在工程中不用添加头文件,有软件来自动查找,就是得先设置Properties选项,指定头文件的路径,在这之前我一直都是手动添加头文件,很是麻烦,对于不太熟练的我还容易出错,4:还要注意要将我们写的程序中用到的源文件全部添加到工程中(这句话听起来好像没说似的,其实不然),如果我们平时在编写程序时,不注意他,他经常会给添加不必要的麻烦(说白了就是在浪费你的时间)5:我在主函数里用到(“MemCopy(&XintffuncsLoadStart, &XintffuncsLoadEnd, &XintffuncsRunStart);”)编译时出现下列错误提示:unresolved symbol _MemCopy, first referenced in ./timer_sdram.obj这样的问题一看就是MemCopy这的问题,1-可能是在你调用前没有声明,在工程中没有添加这个函数2-我们在用到这个MemCopy时拼写错误自己在学习DSP中,在看过的一些书上有的说过在自己编写工程时不清楚自己工程里要用到什么源文件可以把他们都添加到工程里,今天就出现了问题,由此想起了“尽信书不如无书”6:errors encountered during linking; "cpu_flash1.out" not builtplacement fails for object ".text", size 0x1091 (page 0). Available ranges: RAML1出现这样的错误是因为自己多添加了“DSP2833x_ECan.c”这个文件7:errors encountered during linking; "cpu_flash1.out" not builtsymbol "_delay_loop" redefined: first defined in "./cpu_flash.obj"; redefined in "./DSP2833x_Mcbsp.obj" 我的这个程序是对FLASH进行读写操作,正如提示我多加了“DSP2833x_Mcbsp.h”源文件出现了错误。
DSP实验常见错误及解决方法

实验常见错误及解决方法1、启动CCS时出现如下错误:错误原因:以前在CCS setup里设置当前使用的平台为sdgo2xx(硬件仿真),或者同时设置为sdgo2xx 与c2xx simulator,所以进行软件仿真时应设置当前正在使用的为c2xx simulator。
解决方法有两种:方法1:点击“终止”,然后重新设置CCS setup,将sdgo2xx移除。
方法2:点击“忽略”,然后在“Parallel Debug Manager”中Open菜单下选择c2xx simulator2、编译连接时出现如下错误:错误原因是:文件命名、文件夹命名或保存位置不正确。
文件命名:不能以数字开头(包括mak文件的名字)文件夹命名:不能为中文保存位置:项目文件(mak文件)存储的位置一定要与其它文件(C文件、asm文件、h文件、cmd文件、等)放在同一目录下,且最好放在“x:\tic2xx\myprojects”目录下。
3、编译连接时出现如下错误提示:warning: entry point symbol _C_int0 undefined错误原因:用C语言开发的DSP程序在向工程文件添加文件时没有添加运行支持库文件rts2xx.lib注意rts2xx.lib的路径:在C:\tic2000\c2000\cgtools\lib目录下4、CCS与CCS setup均不能启动,提示:不能正确初始化程序或者CCS运行到某个地方后(例如编译连接后)不能停止,观察任务管理器,发现cc_app.exe占用CPU为100%,即CCS已经死了。
错误原因:CCS被病毒感染或破坏,或者多个版本CCS共存,相互干扰。
解决方法:方法1:重新启动电脑方法2:用运行正确的cc_app.exe程序替换被破坏的cc_app.exe程序。
5、编译连接通过,加载程序后,在运行时出现如下错误提示:错误可能原因:第一种可能:没有加载CMD文件第二种可能:CMD文件已加载,但CMD文件编写有问题,存储器配置、定位不正确第三种可能:用C语言编写的DSP程序,C初始化设置错误,已修改C Initialization 设置,方法:Project ——> Option——> Linker6、探测点设置不成功注意:①在设置探测点时应先加载程序②如下图所示,应先点击Probe Point中的选择框,使volume.c line 63——> No Connection被选中,然后在选Connect下拉菜单,找到相关联的数据文件,再点击Replace ,最后点“确定”。
dsp 编译错误与解决方法

cmd文件中有不合法的符号比如 “//”等
1fatal error: #error NO CHIP DEFINED详细的出错信息:
"...." -g -q -fr"e:/project_documents/dsp_project/dsp_mp3/Debug" -d"_DEBUG" -@"Debug.lkf" ...c"
SPRAM: origin=0x0060H,解决书写格式错误
4WARNING: entry point other than _c_int00 specified
解决,在“TMS320C6000优化汇编手册”第五章“链接C/C++代
令人生厌的multiple definition of
我把所有的全局变量写在一个global.h里然后其他文件都include了它于是出现了multiple definition of .....编译器gcc )后来在网上搜到了很多类似的错误大家各有各的烦心事。我的代码结构
AGenerally this type of error means that the CCS sees this section of memory markedas either Read-Only or RESERVED (Don't read or write). CCS can be passed a virtual memory map which is a safety net for the user. If you look inside your DSK's GEL file you will see a number of instruction calls for GEL_MapAdd() with six arguments inside. Two of these arguments denote a starting address range and the length of that range. These are used to notify CCS what memory is valid (and by extension, everything not mentioned is invalid memory). Take a look inside your DSK6713.gel file (probably located in C:\CCStudio_v3.1\cc\gel) and find where the GEL_MapAdd() instructions are located. You should see something similar to the following: GEL_MapAdd(0x01b7c000, 0, 0x00000128, 1, 1); // PLL here 0x01b7c000 is the starting address and 0x00000128 is the length of 'valid' memory. Because 0x1b7c100 falls within this range, if your GEL file looks like this CCS should then allow accesses to this register. The GEL file may need to be updated so that the address of the PLLCSR register is included to the CCS Memory Map. I actually just noticed that the title of your post is "C6713 Device Cycle Accurate Simulator" but you mentioned using the DSK. Can you please clarify which you are using? If using the DSK, open the DSK6713.gel file found in C:\CCStudio_v3.1\cc\gel and locate the setup_memory_map() function. Inside this function you should see numerous calls to GEL_MapAdd(). One of these will look similar to the one I copied in my last post. Once you find the function call that starts with the address 0x01b7c000, find out the length of this range (which should be the third argument). If this length does not cover address 0x01b7c100, modify the range to something like 0x00000128 to ensure that all of the PLL registers are included. If you are using the Cycle Accurate Simulator, I think this might be a limitation of the simulator software as it is run entirely on software as opposed to hardware. Well, you can modify the init6713sim.gel file in the same directory to add a
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
can't open file '/.obj' for input是什么原因引起的?
cmd文件中有不合法的符号比如 “//”等
1fatal error: #error NO CHIP DEFINED详细的出错信息:
"...." -g -q -fr"e:/project_documents/dsp_project/dsp_mp3/Debug" -d"_DEBUG" -@"Debug.lkf" ...c"
在其他文件中只要包含了global.h就会独立的解释,然后生成每个文件生成独立的标示符。在编译器连接时,就会将工程中所有的符号整合在一起,由于文件中有重名变量,于是就出现了重复定义的错误。
下面是解决方法
在global.c或.cpp)中声明变量然后建一个头文件global.h在所有的变量声明前加上extern ...如extern HANDLE ghEvent;注意这儿不要有变量的初始化语句。然后在其他需要使用全局变量的cpp文件中包含.h文件而不要包含.cpp文件。编译器会为global.cpp生成目标文件然后连接时 在使用全局变量的文件中就会连接到此文件。在其他文件中只要包含了global.h就会独立的解释,然后生成每个文件生成独立的标示符。在编译器连接时就会将工程中所有的符号整合在一起,由于文件中有重名变量,于是就出现了重复定义的错误。
main.cpp
#include "global.h"
WinMain(....)
...
}
file_1.cpp
#include "global.h"
....
file_2.cpp
#include "global.h"
...
由于工程中的每个文件都是独立的解释的即使头文件有
#ifndef _x_h
....
#enfif )
AGenerally this type of error means that the CCS sees this section of memory markedas either Read-Only or RESERVED (Don't read or write). CCS can be passed a virtual memory map which is a safety net for the user. If you look inside your DSK's GEL file you will see a number of instruction calls for GEL_MapAdd() with six arguments inside. Two of these arguments denote a starting address range and the length of that range. These are used to notify CCS what memory is valid (and by extension, everything not mentioned is invalid memory). Take a look inside your DSK6713.gel file (probably located in C:\CCStudio_v3.1\cc\gel) and find where the GEL_MapAdd() instructions are located. You should see something similar to the following: GEL_MapAdd(0x01b7c000, 0, 0x00000128, 1, 1); // PLL here 0x01b7c000 is the starting address and 0x00000128 is the length of 'valid' memory. Because 0x1b7c100 falls within this range, if your GEL file looks like this CCS should then allow accesses to this register. The GEL file may need to be updated so that the address of the PLLCSR register is included to the CCS Memory Map. I actually just noticed that the title of your post is "C6713 Device Cycle Accurate Simulator" but you mentioned using the DSK. Can you please clarify which you are using? If using the DSK, open the DSK6713.gel file found in C:\CCStudio_v3.1\cc\gel and locate the setup_memory_map() function. Inside this function you should see numerous calls to GEL_MapAdd(). One of these will look similar to the one I copied in my last post. Once you find the function call that starts with the address 0x01b7c000, find out the length of this range (which should be the third argument). If this length does not cover address 0x01b7c100, modify the range to something like 0x00000128 to ensure that all of the PLL registers are included. If you are using the Cycle Accurate Simulator, I think this might be a limitation of the simulator software as it is run entirely on software as opposed to hardware. Well, you can modify the init6713sim.gel file in the same directory to add a
SPRAM: origin=0x0060H,解决书写格式错误
4WARNING: entry point other than _c_int00 specified
解决,在“TMS320C6000优化汇编手册”第五章“链接C/C++代
令人生厌的multiple definition of
我把所有的全局变量写在一个global.h里然后其他文件都include了它于是出现了multiple definition of .....编译器gcc )后来在网上搜到了很多类似的错误大家各有各的烦心事。我的代码结构
"...", line 141: fatal error: #error NO CHIP DEFINED 1 fatal error detected in the compilation of "...c".
在Build Options的compiler里设置"-d"CHIP_..""如果没有设置一下
2QI have started to study the book "Digital Signal Processing and Applicationswith the C6713 and C6416 DSK (by Rulph Chassaing, 2005)". I am working with a C6713DSK, using CCS 3.1. But when I try to run the first example (sine8_LED) in Rulph Chassaing's book on the C6713 Device Cycle Accurate Simulator, I get the following error messages: Trouble running Target CPU: Memory Map Error: READ access by CPU to address 0x1b7c100, which is RESERVED in Hardware. Trouble running Target CPU: Memory Map Error: WRITE access by Default to address 0x1b7c100, which is RESERVED in Hardware.