电子产品世界 » 论坛首页 » 嵌入式开发 » DSP系统 » RAM运行正常 flash不是很正常 有的变量出现-1# QNAN 何解 ?


共12条 1/2 1 2 跳转至

RAM运行正常 flash不是很正常 有的变量出现-1# QNAN 何解 ?

菜鸟
2013-09-02 09:27:35    评分

我的是DSP 28335 。RAM运行正常,烧写到flash之后 ,我再程序当中加了一个方波的程序,烧写完后在示波器上可以测出方波,但是我的串口程序部分和上位机通信不成功,(我的方波程序运行就代表我的串口程序正在运行,这个事没有异议的),还有有的变量是 -1#QNAN,哪位大神能给解释下是什么原因吗?

我的程序开始的时候  就已经把让程序搬移到RAM中运行了  就是从flash搬到 RAM 了 ?  我的问题就是两个
(1)为什么我的串口部分和上位机通讯的程序在运行 ,上位机却没有反应?
(2)为什么我flash在线调试的时候 发现我的很多变量的值都是 -1#QNAN,上网说是程序计算出来无效值,但是我的RAM中很正常啊 ,这与在flash中运行有关吗?还是与配置有关?还是别的原因?




关键词: 烧写 RAM flash 串口 -1#QNAN    

菜鸟
2013-09-02 09:31:43    评分
2楼
先自己顶一下

菜鸟
2013-09-02 09:31:44    评分
3楼
先自己顶一下

高工
2013-09-02 13:06:08    评分
4楼
#QNAN是无效的数,一般是除以0之类的操作才会导致啊

高工
2013-09-02 13:14:55    评分
5楼
看门狗关掉了吗

菜鸟
2013-09-02 20:12:09    评分
6楼
我的程序当中  这些书都是 float 32  并且几乎没有做除于0的计算  最重要的是 我的这个程序是和RAM中的程序一模一样的  要是程序有错误  RAM调试的时候什么事情都没有啊

菜鸟
2013-09-02 20:12:33    评分
7楼
看门狗在 初始化的时候 已经给关了 

菜鸟
2013-09-03 10:53:16    评分
8楼
我刚发现我的定义的发送函数竟然没有执行 不知道什么原因 难道和CMD文件有关 ?
/*****************************/
/*定义发送函数               */
/*****************************/
void scib_xmit(int a)
{
      while (ScibRegs.SCIFFTX.bit.TXFFST != 0) {}
      ScibRegs.SCITXBUF=a;
}

/*****************************/  这个在烧写的程序中根本就不执行  什么原因?

但是在RAM调试的时候  都是正常执行的  加个断点可以运行到这里,在烧写后发现这段根本就不运行!


菜鸟
2013-09-03 16:17:23    评分
9楼

终于找到原因了  跟大家分享一下 原来是我的CMD文件配置错误,档从RAM到flash的时候,换成F28335.CMD文件时候,可能是我的全局变量定义的数组比较大,所以编译的时候出现错误说 RAML4 的空间只有1000,而你的ebss段需要1490,所以我就自作聪明的吧 .ebss段改到FLASH B中去了! 所以出现我的变量都是 -1#QNAN,也就是无效的数,而我的串口发送程序需要一个和一个数 float a 建立关系,数 float a 一直是一个无效的数,那么这个函数也就不被调用了!

   后来查资料是这么说的    ” 未初始化的数据 .ebss存储单元可以在程序的执行过程中被改变和操作,与程序代码或者常量不同的是,未初始化的数据或者变量必须位于易失性的存储区之中,例如RAM

  看来CMD文件一般不要改啊,没文化太可怕,一不小心就给改错了!


高工
2013-09-03 17:22:17    评分
10楼
cmd文件很关键啊,多谢分享

共12条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]