DSP烧写错误原因
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总线,就有可能需要调整时序,否则就会有问题。
TI C2000系列DSP Flash烧写解决方案 (Rev[1]. A)
![TI C2000系列DSP Flash烧写解决方案 (Rev[1]. A)](https://img.taocdn.com/s3/m/0ff2c881e53a580216fcfef5.png)
1Q05
F28x CCS 插件烧写的一些经验
1. 在擦写的过程中意外或异端终止有可能造成Flash烧毁 2. 通常的非破坏性的错误操作不会影响到CSM,但是要注 3. 4. 5. 6. 7. 8.
1Q05
第三章: F28x Flash CCS插件
Code Composer Studio Plug-in 的特点: 完美的整合到CCS中,并且提供大量的TI在线帮助 开发特定的CCS Flash设备并且提供了多样的设定. 不需要关闭CCS和开关工具即可实现Flash烧写和设置 支持CCS2.2及以上版本
TI C2000 系列DSP FLASH 烧写解决方案
Rev. A
1Q05
综述
TI C2000系列DSP从硬件构架和开发环境上可以划分为 F28x,F240x,F240与F206几类.而Flash的烧写问题一直是 开发过程中,编程人员比较关注的问题. 本文从最后出现的F28x的Flash烧写方法开始,依次介绍这 三种DSP的Flash烧写的方法和步骤. 首先是详细介绍F28系列的烧写工具和方法 由于C2000系列DSP的烧写方法大同小异所以简要描述F240与 F206的烧写方法,并归纳和总结F240x烧写的一些经验 最后一部分以F2812为例介绍用户自定义的嵌入式Flash编程 (API)
1Q05
F28x Flash 流水线模式
Flash一般用于保护用户代码.为了改善代码执行性能, 采用了Flash流水线模式. 通过FOPT寄存器中的ENPIPE位控制流水线模式使能 该模式独立于CPU流水线 该模式下使用了预取机能,减少了Flash对整个代码执 行过程的影响. 改善了FLASH代码执行效率.
1Q05
F28x Flash的电源模式
DSP报错信息

Diagnostic: Run diagnostic utility.
I/O Port = 240
Board Name: F2812 SEEDXDS510PLUS Emulator
Cpu Name: TMS320C2800_0
Abort: Close Code Composer Studio.
Retry: Try to connect to the target again.
Error 0x80000200/-1037
Fatal Error during: OCS,
PTI_ERR_EMU_CLOSE Error Occured at 0x00000000
Sequence ID: 0
Error Code: -1037
Error Class: 0x80000200
SC_ERR_CTL_BUSY <-114>
The controller's commands are taking too long to complete.
This often implies one of the following errors:
1. The cable is disconnected near the controller.
Retry: Try to connect to the target again.
Cancel: Remain disconnected from the target
Diagnostic: Run diagnostic utility.
上电连接
烧写Flash后的DSP程序运行不正常的情况分析

这段时间一直在调试DSP6713的Flash烧写,现在对Flash的烧写也算心中了如。
那天,非常Happy的发现将闪烁LED烧写到Flash成功了,然后,就以为一切都OK了……那天,成功烧写了一个300KB以上的程序,又认为,这次应该OK了……那天,写了个Timer中断程序,烧写到Flash,却死机了……那天,在RAM上运行很流畅的一个算法(算法中调用了CCS的atan函数),在烧写到Flash 后算法却死机了……那天,我开始思考:是什么情况导致RAM中跑得很Happy的程序烧写到Flash就运行得如此的不堪——众多的囧相。
“且行且珍惜”,珍惜这些次发现Bug的机会,因此,我要总结:在RAM中能正常运行,而烧写到Flash后无法正常运行的一些情况讨论。
中断向量表包含了所有中断的入口,在烧写Flash的时候,有两种方式可以保证中断能正常工作。
具体可参见TMS320C6713烧写Flash的通用方法的第5小节。
很多情况下,当出现数组越界时,在RAM中的程序都能正常运行,但在烧写Flash后运行就会出现死机或程序跑飞的现象。
比如定义一个数组,你使用x[5]=10这样的语句在RAM程序中是某些时候能正确运行的,在PC上应该也可以。
但将这种程序烧写到Flash之后运行,DSP果断和你说拜拜!因此,请谨慎地检查程序代码中的数组越界和指针操作。
在DSP程序中,坚决不使用C库函数中的malloc函数。
如果需要动态分配内存的操作,可以自己写一个,或使用uCOS II或DSP/BIOS 等嵌入式操作系统。
也不知道是什么原因,也可能是我对atan函数的使用方法不正确造成的吧。
在我的一个最初的程序中,我是直接这样计算atan(x)的,在RAM中以及在PC中都多次测试过没有任何问题。
烧写Flash之后,也不是死机,但程序运行到atan这个函数的时候会卡上很长一段时间,再接着往下运行。
难道是math.h中的atan运算效率太低?但为什么RAM中就能运行呢?这个还不清楚。
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”源文件出现了错误。
DSP2008-03学习问题

2008-3-41.C语言条件编译指令是#ifndef ABC_H#define ABC_H…#endif而汇编的条件编译伪指令是.if .elseif .else .endif那么汇编指令要起到如上面C语言指令的作用应该如何写呢?可以让头文件在多个文件中包含而不重复定义。
.bss LF2406_H, 1.if (LF2406_H != 1)编译错误,条件要怎么写?SPLK #1,LF2406_H….endif这样写是否可行?但这有个问题,未初始化变量的初值要是刚等于1。
则头文件的定义就没有编译。
2008-3-12CCS编译器在两个不同的文件里重复包含不会引起重定义错误。
2008-3-51.烧写时出错:Error: Read status value 0x0001 from symbol PRG_statusFlash algorithm failed during clear operation换了一个芯片后烧写正常,运行正常。
之前有一次点在试CSS功能时,不小心点了一次加密,还没执行完,就马上点了解密。
大概就是这样烧坏了。
太脆弱了吧。
再也不敢试加密的了。
CMD文件要避开FLASH的40H~44H区间。
不是有解密的功能吗,为什么写了一次就会烧坏?2.FLASH烧写中的操作Clear 清0,所有的FLASH变成0Erase 擦除,所有的FLASH变成0FFFFH以上两个操作就算选择0000H~0FFFH区,40H~43H区的值也会被改变,但不会被加密。
3.关于编译完自动下载,在Option菜单的Customize中设置了,如下图:但编译连接后就是不会自动下载?2008-3-71.求W = 5X + 10Y – 3Z.dataX .WORD 2F96HY .WORD 18F5HZ .WORD 053AHW .usect “sum”, 2.textSTART: MAR *,AR2 ;设当前ARLAR AR2, #X ;#X相当于C中的&XLT * ;X装载TREGMPY #5 ;计算5XLAR AR2, #YLTP * ;装载Y到TREG,并把5X送入ACCMAY #10 ;LAR AR2, #ZLTA * ;装载Z到TREG,并ACC+10Y->ACCMPY #3SPAC ;ACC-3Z->ACCLAR AR2, #WSACL *+ ;保存结果SACH *因为乘法结果存在RREG,而加减法是在ACC中进行运算的,所以DSP可以有乘且累加、装载TREG且累加等指令。
dsp编译错误与解决方法(精)

4 W ARNING: entry point other than _c_int00 specified
解决,在“TMS320C6000优化汇编手册”第五章“链接C/C++代
令人生厌的multiple definition of
我把所有的全局变量写在一个global.h里然后其他文件都include了它于是出现了multiple definition of .....编译器gcc后来在网上搜到了很多类似的错误大家各有各的烦心事。我的代码结构
can't open file '/.obj' for input是什么原因引起的?
cmd文件中有不合法的符号比如“//”等
1 fatal error: #error NO CHIP DEFINED详细的出错信息:
"...." -g -q -fr"e:/project_documents/dsp_project/dsp_mp3/Debug" -d"_DEBUG" -@"Debug.lkf" ...c"
\main.obj
>> error: symbol referencing errors
提示找不到符号,一般是出现在用c调用汇编函数的时候,比较大的可能性是汇编程序里面
的标号写错了(特别是前面少了一个下划线,或者是忘记将标号定义成全局的了(在文件开
头用".global标号"的形式可以定义不过我碰到另外一种情况,是由于存在同名的文件.比如说我的工程里面,有dot.c和dot.asm两个文件,分别定义了dot_c和dot_asm两个函数,这个时候就会有其中一个函数提示找不到了,经过检查,原来CCS在编译的时候,会根据文件名(不含扩展名生成同名的目标文件(扩展名为obj,而我前面的两个文件,文件名相同而扩展名不同,那么在编译的时候,就会有一个生成的目标文件被另外一个覆盖的问题(取决于编译的顺序.知道了原因就好解决了,只要这两个文件的文件名不要相同就好了.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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.我也遇到这样的问题,同样郁闷。
一个以前跑过的好好的程序,因为改了仿真器的配置,就出现了楼主所述问题,反复尝试,都是如楼主所述。
后来我是通过以下方法解决的:打开Setup CCStudio v3.3-选择F2407 XDS510Emulator-设置F2407 XDS510 Emulator的属性-再设置TMS320C24xx_0的属性5我以前也遇到过,用如下的方法解决的:首先,"degug"--"reset DSP";然后, 电路上硬件复位,即reset引脚处的复位。
6.error: Data verification failed at address 0xxxxxx前一段时间,Load Program时总是出错:data verification failed at address 0x81021FF4,Please verify target memory and memory map有时多下载几次却又可以了,这个问题困扰了我好几天,后来才知道是DSP板子上的SDRAM坏了。
从网上搜到的别人对这个错误的原因的解释:1. The RAM chip is damaged. In this case, the board has to be replaced.2. The access to the external memory is secure if CSM (code security module) is enabled. To unlock CSM if not password protected, go to the GEL menu in Code Composer Studio under:"GEL->Code Security Module->Unlock_CSM"This will give you access to the external RAM, and allow CCS to load your code. As a workaround, use the Internal_memory_map option to load the executable code into the internal RAM.7.:在调试硬件时,程序无法下载到存储器中,出现错误,data verification failed at address 0x40,please verify target memory and答:1. 确定CMD文件没有问题,到底是Flash的CMD还是Ram的?2. 用TI的历程尝试,判断是否是硬件问题。
8.仿真器在线仿真正常,写入片子后工作不正常的问题1、复位电路是否正常2、晶振是否正常3、最小系统电路是否正确4、是否片子坏了总结:1.程序肯定是对的。
2.硬件方面 rom和FLASH是否损坏,其次检查配置,电源、引脚配置3.软件CCS的设置上4.人为因素:烧写方法,cmd修改,密保单元是否跳过。
在TI DSP开发板中烧写Flash程序实现在FLASH存储器烧写程序一般有以下三种方法:一是通过编程器下载烧写;二是通过开发商提供的专门软件工具+在线仿真器烧写;三是自己编程通过DSP烧写。
个人使用的是合众达电子SEED-VPM642开发板,在最新版本例程中提供了专用的烧写软件SeedConvertTool.exe;但为了实现通用的FLASHBURN烧写,我进行了一些尝试以便了解程序烧录过程及运行情况。
实现Bootloader自引导功能,除了需要生成可执行文件(.out),还需要进行如下步骤:1、合理配置工程文件(.pjt):需要添加一个boot.asm文件(做搬移时一些初始化和跳转工作),另外工程中.cmd文件也需要为bootloader保留空间。
2、将添加了boot.asm和修改cmd后重新生成的.out文件转化为.hex文件,这时需要一个转换.cmd文件(这个.cmd文件与工程文件中.cmd完全不同,前者是为了指明flash的属性(大小,数据宽度,起始地址和产生文件名)以实现转换.out文件为flash兼容的.hex文件,不能混淆)。
3、最后通过Flashburn工具将.hex文件写入Flash,这时需要转换.cmd文件、.hex文件和FBTC642.out文件。
介绍下各烧录中用到的文件(Flashburn、FBTC.out、hex6x.exe,.cdd和.cmd文件)作用:1、FBTC.out文件:负责对flash的操作,比如flash的擦除、读、写等。
这里主要看个人板子上flash的型号,因为不同型号的flash,它们的操作命令不一样。
这样你就必须对FBTC工程进行修改,然后重新编译生成.out文件。
如DM642开发板使用的FBTC文件在安装ccs的根目录下(boards\evmdm642\flashburn\FBTC642)。
2、hex6x.exe:将用户工程生成的.out文件转换为二进制文件的工具,这样Flashburn就可以将.out文件以二进制方式烧进flash中。
3、Flashburn:TI的第三方软件公司 Software Design Sloutions 为TI的DSP用户编写的Flash烧写软件,给软件以CCS为基础,通过运行仿真程序FBTC,将用户程序写入Flash中。
4、.cdd文件:保存Flashburn的设置的。
5、.cmd文件:指明flash属性(大小,数据宽度,起始地址和产生文件名),按照flash 要求实现将.out文件到二进制文件的转换。
具体步骤:1。
用户程序中添加boot.asm文件,修改.cmd文件中的MEMORY和SECTION部分(DSP/BIOS环境中直接通过配置CDB或者TCF文件中的System->MEM->ISRAM即可;非DSP/BIOS在cmd文件中添加一个名为BOOT的section,位置为0x000,长度为0x400),在连接仿真器环境下编译生成可执行的.out格式的COFF文件。
2。
使用HEx6.exe工具,将工程文件生成的.out文件转换成为HEX的ascii格式的二进制文件。
a.编写一个.cmd文件用于设置hex6x.exe的参数如果例程中存在,则可用记事本打开如下:SeedH264loopback.out-a-memwidth 8-boot-bootorg 0x90000400-bootsection .boot_load 0x90000000ROMS{FLASH: org = 0x90000000, len = 0x400000, romwidth = 8, files ={SeedH264Loopback.hex}}b.生成二进制文件:两种方法:i)将.cmd文件和.out文件放在同一目录下,双击convert.bat。
具体操作是将三个文件复制到一起分别是:hex6x.exe和.cmd以及.bat在编辑修改其中的内容(改文件名),最后运行批处理文件即可;ii)通过windows命令窗口键入命令进行转换。
将.out文件,cmd文件,和hex6x.exe文件放在同一个文件夹内。
如C:\DSP_BURN。
在dos窗口中键入cd C:\DSP_BURN将路径改为“C:DSP_BURN>”,再键入“hex6x.exe XX.cmd”结果生成“XX.hex”文件在DOS下进入程序保存的目录,直接运行(hex6x.exe)如D:\ti\myprojects\a_video_process_XY>hex6x hex6x.cmd文件得到二进制文件(可以从DOS状态看到),此时就得到了seedvpm642_vedioloop_ahex.hex(文件名可能不同)用于烧写的文件。
注意:hex6x.exe的版本,如果版本太低,在转换过程中会出现问题。
二、改写FBTC工程,这个CCS工程编译而成的文件主要是对flash的操作,其作用相当于一个搬运工具,将hex文件由PC搬入Flash中。
这里要注意自己的CCS版本和flash 的型号,编译完成会得到一个FBTC642.out文件。
对于不同的DSP系统板,TBTC工程主要修改DM642teb.h、FBCmd.c、FBTC_DM642.c和FBurnCmd.c等文件。
三、打开开发板上电,启动ccs软件,加载gel文件并连接(connect)硬件仿真器。
四、打开FlashBurn软件,重新对主界面中“Conversion Cmd”、“File to burn”、“Fbtc program file”的三个文件的路径重新设置,分别点击“Browser”按钮,找到事先创建的相应目录下的三个文件“.cmd”、“.hex”、“FBTC642.out”;然后保存关闭cdd文件。