打印

_IQNtoF _IQtoF 调用出错 DSP2812

[复制链接]
10969|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hong7817|  楼主 | 2012-11-23 20:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在做一个项目时,将程序下载到FLASH时出现错误,提示如下

警告文本信息:
"
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文件,自己看看是没什么问题

开发环境:WIN7  CCS3.3  DSP2812

相关帖子

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

使用特权

评论回复
5
aresc| | 2012-11-25 14:45 | 只看该作者
1. 看看_IQ19toF是怎么用的?比如包含的头文件等等啥的.
2. 也许是其他地方的错误,该错误引起了_IQ19toF的出错.

使用特权

评论回复
6
hong7817|  楼主 | 2012-11-26 11:53 | 只看该作者
5# aresc 麻烦这位兄弟详细情况看下面链接,谢谢
http://www.deyisupport.com/question_answer/f/56/p/15965/54400.aspx#54400

使用特权

评论回复
7
aresc| | 2012-11-26 13:08 | 只看该作者
本帖最后由 aresc 于 2012-11-26 13:26 编辑

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

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

使用特权

评论回复
8
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定义到哪里都不影响。
再次感谢你的热心解答,没有你的帮助,也许我早就放弃了,谢谢你!

使用特权

评论回复
9
aresc| | 2012-11-27 20:07 | 只看该作者
搞定就好!其实我也怀疑IQmath,但你在那个网页说的:

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

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

使用特权

评论回复
评论
hong7817 2012-12-12 09:05 回复TA
是的 
10
hong7817|  楼主 | 2012-11-28 09:14 | 只看该作者
9# aresc 是部分会出问题。
我另一个中断程序里有不少IQMATH函数,都没出错,注释掉我贴子中所说的那句,但我中断程序里一直有的,并且中断一直是间断地运行,就是不出错

使用特权

评论回复
11
tangjian8911| | 2013-8-23 14:49 | 只看该作者
都是高手!:lol

使用特权

评论回复
12
3jinglinmu| | 2015-3-28 01:26 | 只看该作者
hong7817 发表于 2012-11-28 09:14
9# aresc 是部分会出问题。
我另一个中断程序里有不少IQMATH函数,都没出错,注释掉我贴子中所说的那句, ...

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

使用特权

评论回复
13
3jinglinmu| | 2015-3-28 01:26 | 只看该作者
aresc 发表于 2012-11-27 20:07
搞定就好!其实我也怀疑IQmath,但你在那个网页说的:

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

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

使用特权

评论回复
14
hong7817|  楼主 | 2016-1-21 12:45 | 只看该作者
3jinglinmu 发表于 2015-3-28 01:26
您好,看到您一个IQmath的帖子,我把我的问题向您请教下,我用的是28035,IQmath的计算都在中断中,RAM调 ...

IQMATH 部分有问题,你得检查一下

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

108

帖子

2

粉丝