hong7817 发表于 2012-11-23 20:10

_IQNtoF _IQtoF 调用出错 DSP2812

在做一个项目时,将程序下载到FLASH时出现错误,提示如下
http://www.deyisupport.com/resized-image.ashx/__size/550x0/__key/communityserver-discussions-components-files/56/1157._2A677D540D54_.jpg
警告文本信息:
"
Warning: This program contains initialized RAM data.
It may run successfully under Code Composer Studio
but not as a standalone system because of this. If
your Flash program requires initialized data in RAM,
you will need to write Flash code to initialize RAM memory.
Erase/Program/Verify Operation succeeded
**** End Erase/Program/Verify Operation. ***
首先我查了CMD文件, 没问题,排查了好久, 最后查到只要将_IQ19toF这句注释掉就能下载无提示并且拔掉仿真器后能运行,如果不注释掉,下载就会出现警告提示,拔掉仿真器后重启DSP无**常运行.
测试语句如下:
tempiq19 = _IQ19(1.9);
iqtoftemp = _IQ19toF(tempiq19);//注释掉这一句一切正常.IQmath其他函数运行正常,包括IIR滤波,就这一句加进去DSP就无法运行,仿真器连着时能调试运行.
在程序中就用了这两句,完整的如下:
_iq19   tempiq19 ;
float      iqtoftemp ;
tempiq19 = _IQ19(1.9);

iqtoftemp = _IQ19toF(tempiq19);//只要注释掉这一句一切正常
这两句程序并不需要初始化数据,并且程序在FLASH中,
也查了CMD文件,自己看看是没什么问题

开发环境:WIN7CCS3.3DSP2812

aresc 发表于 2012-11-23 22:34

那个注释不是写的很清楚吗?

程序包含已初始化的RAM数据, 在CCS的环境下可以运行,但作为独立系统不能正常运行.
当你从FLASH里运行程序时,你需要在程序里完成对RAM数据的初始化.

也就是CCS工具会对那个RAM进行初始化,但如果在FLASH里运行,你必须自己对那个RAM进行初始化.

hong7817 发表于 2012-11-24 17:36

我看清楚了那个警告信息,但是请看以下四个语句,初始化的数据并不存在RAM里,程序已经写了很多,只要注释掉第四句,一切没问题;第四句存在,就无法从FLASH启动。问题就是这么奇怪,我查CMD文件也查了好几遍了。
_iq19   tempiq19 ;
float      iqtoftemp ;
tempiq19 = _IQ19(1.9);
iqtoftemp = _IQ19toF(tempiq19);

hong7817 发表于 2012-11-24 17:36

那个注释不是写的很清楚吗?

程序包含已初始化的RAM数据, 在CCS的环境下可以运行,但作为独立系统不能正常运行.
当你从FLASH里运行程序时,你需要在程序里完成对RAM数据的初始化.

也就是CCS工具会对那个RAM进行初始化 ...
aresc 发表于 2012-11-23 22:34 https://bbs.21ic.com/images/common/back.gif我看清楚了那个警告信息,但是请看以下四个语句,初始化的数据并不存在RAM里,程序已经写了很多,只要注释掉第四句,一切没问题;第四句存在,就无法从FLASH启动。问题就是这么奇怪,我查CMD文件也查了好几遍了。
_iq19   tempiq19 ;
float      iqtoftemp ;
tempiq19 = _IQ19(1.9);
iqtoftemp = _IQ19toF(tempiq19);

aresc 发表于 2012-11-25 14:45

1. 看看_IQ19toF是怎么用的?比如包含的头文件等等啥的.
2. 也许是其他地方的错误,该错误引起了_IQ19toF的出错.

hong7817 发表于 2012-11-26 11:53

5# aresc 麻烦这位兄弟详细情况看下面链接,谢谢
http://www.deyisupport.com/question_answer/f/56/p/15965/54400.aspx#54400

aresc 发表于 2012-11-26 13:08

本帖最后由 aresc 于 2012-11-26 13:26 编辑

请参考sprc990文档中第13页的NOTE,估计就是这个原因.

当用CCS时, IQmathTablesRam的表会被CCS自己Load到那个内存. 但从FLASH运行时,要自己把这个表写到同一个内存了.

hong7817 发表于 2012-11-27 19:37

7# aresc 非常感谢你的解答,问题已找到。
其实一出这个提示,我就把段IQMATH定义到了FLASH中,但我忘了我程序中还有把DATA放在了段IQMATH中#pragma DATA_SECTION(dbuffer,"IQmath")引起了错误;这就导致了正确的解决方法一开始就被我否定了,导致后来屡次试用其他不正确的方法。
解决方法是:IQmath            : > FLASHA      PAGE = 0
我也看了sprc990文档中的NOTE,但2812其实用不到IQmathTablesRam段,刚开始我的CMD文件中根本就没有IQmathTablesRam这个段的。当然这个方法我也试了,将其定义至FLASH中,由于2812没有用到,所以把IQmathTablesRam定义到哪里都不影响。
再次感谢你的热心解答,没有你的帮助,也许我早就放弃了,谢谢你!

aresc 发表于 2012-11-27 20:07

搞定就好!其实我也怀疑IQmath,但你在那个网页说的:

原来的程序有很多,包括有很多IQmath函数,只要加进这一句就出问题,没有这一句一切正常.

我以为是执行其他的IQmath函数没问题. 应该是都有问题吧?

hong7817 发表于 2012-11-28 09:14

9# aresc 是部分会出问题。
我另一个中断程序里有不少IQMATH函数,都没出错,注释掉我贴子中所说的那句,但我中断程序里一直有的,并且中断一直是间断地运行,就是不出错

tangjian8911 发表于 2013-8-23 14:49

都是高手!:lol

3jinglinmu 发表于 2015-3-28 01:26

hong7817 发表于 2012-11-28 09:14
9# aresc 是部分会出问题。
我另一个中断程序里有不少IQMATH函数,都没出错,注释掉我贴子中所说的那句, ...

您好,看到您一个IQmath的帖子,我把我的问题向您请教下,我用的是28035,IQmath的计算都在中断中,RAM调试时正常,但是烧写后会导致完全不能出中断,因为我在进中断将GPIO20置1,出中断时清零。检查发现会一直是高电平,而带一句IQmath计算的IQmpy之类都会导致这个问题,请教您下

3jinglinmu 发表于 2015-3-28 01:26

aresc 发表于 2012-11-27 20:07
搞定就好!其实我也怀疑IQmath,但你在那个网页说的:

原来的程序有很多,包括有很多IQmath函数,只要加进这一 ...

您好,看到您一个IQmath的帖子,我把我的问题向您请教下,我用的是28035,IQmath的计算都在中断中,RAM调试时正常,但是烧写后会导致完全不能出中断,因为我在进中断将GPIO20置1,出中断时清零。检查发现会一直是高电平,而带一句IQmath计算的IQmpy之类都会导致这个问题,请教您下

hong7817 发表于 2016-1-21 12:45

3jinglinmu 发表于 2015-3-28 01:26
您好,看到您一个IQmath的帖子,我把我的问题向您请教下,我用的是28035,IQmath的计算都在中断中,RAM调 ...

IQMATH 部分有问题,你得检查一下
页: [1]
查看完整版本: _IQNtoF _IQtoF 调用出错 DSP2812