HD21425 发表于 2013-8-31 21:00

DSP程序在RAM中正常运行,FLASH烧写不行

我目前在调试板子的RS232通讯,用的控制芯片是DSP2812,程序在线调试也就是RAM调试时没有问题,通讯正常,但是当我烧写flash后,同样的程序通讯就不正常了,期间任何错误都没有弹出,提示都是成功的,请问有可能是哪些方面的原因导致的? 求大神们指导

zhangmangui 发表于 2013-8-31 23:16

这个问题很常见的    你烧写进去之后是通讯失败还是直接没有反应
我曾经遇到的问题是   烧写后上电第一次通讯失败   复位一下就正常工作了
如果烧写后直接没有反应   你可以将flash中的代码搬移到RAM中运行
https://bbs.21ic.com/icview-556044-1-1.html
看看我的分享

zhangmangui 发表于 2013-8-31 23:16

本帖最后由 zhangmangui 于 2013-8-31 23:23 编辑

这个问题很常见的    你烧写进去之后是通讯失败还是直接没有反应
我曾经遇到的问题是   烧写后上电第一次通讯失败   复位一下就正常工作了
如果烧写后直接没有反应   你可以将flash中的代码搬移到RAM中运行
https://bbs.21ic.com/icview-556044-1-1.html
看看我的分享

wufawutian8高 发表于 2013-9-1 21:13

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

wufawutian8高 发表于 2013-9-1 21:13

zhangmangui 发表于 2013-8-31 23:16 static/image/common/back.gif
这个问题很常见的    你烧写进去之后是通讯失败还是直接没有反应
我曾经遇到的问题是   烧写后上电第一次 ...

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

zhangmangui 发表于 2013-9-1 21:44

wufawutian8高 发表于 2013-9-1 21:13 static/image/common/back.gif
楼上的兄弟 问题解决了吗   我的是DSP 28335 。RAM运行正常,烧写到flash之后 ,我再程序当中加了一个方 ...

你按照我3楼分享的链接将flash中的调到ram中运行看看结果
串口不成功   复位一下   在串口通信   不知道是否合理

HD21425 发表于 2013-9-2 07:51

我的是FLASH下载成功以后,程序应该在运行,因为相关的LED灯是亮的,只是通讯不正常。
此外三楼说的把FLASH程序在RAM中运行,也试过,还是不行。谢谢大家帮忙。

wufawutian8高 发表于 2013-9-2 09:23

zhangmangui 发表于 2013-9-1 21:44 static/image/common/back.gif
你按照我3楼分享的链接将flash中的调到ram中运行看看结果
串口不成功   复位一下   在串口通信   不知道 ...

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

wufawutian8高 发表于 2013-9-2 09:32

HD21425 发表于 2013-9-2 07:51 static/image/common/back.gif
我的是FLASH下载成功以后,程序应该在运行,因为相关的LED灯是亮的,只是通讯不正常。
此外三楼说的把FLASH ...

问题解决了吗你的串口是干什么用的?

HD21425 发表于 2013-9-2 13:56

没有解决,SCI外接RS232,用于跟上位机通讯

zhangmangui 发表于 2013-9-2 14:35

HD21425 发表于 2013-9-2 13:56 static/image/common/back.gif
没有解决,SCI外接RS232,用于跟上位机通讯

还没解决啊   

HD21425 发表于 2013-9-2 19:11

zhangmangui 发表于 2013-9-2 14:35 static/image/common/back.gif
还没解决啊

没有解决啊,求大神指导呢

wufawutian8高 发表于 2013-9-2 20:05

HD21425 发表于 2013-9-2 07:51 static/image/common/back.gif
我的是FLASH下载成功以后,程序应该在运行,因为相关的LED灯是亮的,只是通讯不正常。
此外三楼说的把FLASH ...

奇怪了 我的也是和上位机通讯 也是用的SCI难道有可能是是出现了同样的原因我的还出现了 数据都是QNAN的情况 不知道什么原因

HD21425 发表于 2013-9-2 21:15

wufawutian8高 发表于 2013-9-2 20:05 static/image/common/back.gif
奇怪了 我的也是和上位机通讯 也是用的SCI难道有可能是是出现了同样的原因我的还出现了 数据都是QNAN ...

难道是共性问题,我想了好久也没想通,因为没有任何的错误提示,无从下手的感觉!

wufawutian8高 发表于 2013-9-3 10:50

HD21425 发表于 2013-9-2 21:15 static/image/common/back.gif
难道是共性问题,我想了好久也没想通,因为没有任何的错误提示,无从下手的感觉! ...

我刚发现我的定义的发送函数竟然没有执行 不知道什么原因 难道和CMD文件有关 ?
/*****************************/
/*定义发送函数               */
/*****************************/
void scib_xmit(int a)
{
      while (ScibRegs.SCIFFTX.bit.TXFFST != 0) {}
      ScibRegs.SCITXBUF=a;
}
/*****************************/这个在烧写的程序中根本就不执行什么原因?

wufawutian8高 发表于 2013-9-3 11:02

zhangmangui 发表于 2013-9-2 14:35 static/image/common/back.gif
还没解决啊

我刚发现我的定义的发送函数竟然没有执行 不知道什么原因 难道和CMD文件有关 ?
/*****************************/
/*定义发送函数               */
/*****************************/
void scib_xmit(int a)
{
      while (ScibRegs.SCIFFTX.bit.TXFFST != 0) {}
      ScibRegs.SCITXBUF=a;
}
/*****************************/这个在烧写的程序中根本就不执行什么原因?

HD21425 发表于 2013-9-3 11:09

wufawutian8高 发表于 2013-9-3 10:50 static/image/common/back.gif
我刚发现我的定义的发送函数竟然没有执行 不知道什么原因 难道和CMD文件有关 ?
/********************** ...

你好像是使用的FIFO模式,而且选择了使用查询方式发送数据,我一般都是用中断方式发送数据。针对你的问题:你是说不执行整个中断函数呢? 还是没有执行中断里面的语句? 如果是前者,那应该是没有被调用,应该是程序问题,跟CMD关系不大吧。
你是FLASH在线调试? 加断点观察?

zhangmangui 发表于 2013-9-3 11:31

wufawutian8高 发表于 2013-9-3 11:02 static/image/common/back.gif
我刚发现我的定义的发送函数竟然没有执行 不知道什么原因 难道和CMD文件有关 ?
/********************** ...

与CMD肯定没关系   你确定调用了就可以

wufawutian8高 发表于 2013-9-3 15:12

zhangmangui 发表于 2013-9-3 11:31 static/image/common/back.gif
与CMD肯定没关系   你确定调用了就可以

我的却用的是FIFO模式用的查询! 但是我的RAM 调试的时候 这个发送函数还是运行的就烧写进去之后 flash在线加断点发现就单独这个函数不运行不知道哪里出错了

/*****************************/
/*定义发送函数               */
/*****************************/
void scib_xmit(int a)
{
      while (ScibRegs.SCIFFTX.bit.TXFFST != 0) {}
      ScibRegs.SCITXBUF=a;
}
/*****************************/
就单独这个发送函数不运行了

wufawutian8高 发表于 2013-9-3 16:18

zhangmangui 发表于 2013-9-2 14:35 static/image/common/back.gif
还没解决啊

终于找到原因了   原来是我的CMD文件配置错误,档从RAM到flash的时候,换成F28335.CMD文件时候,可能是我的全局变量定义的数组比较大,所以编译的时候出现错误说 RAML4 的空间只有1000,而你的ebss段需要1490,所以我就自作聪明的吧 .ebss段改到FLASH B中去了! 所以出现我的变量都是 -1#QNAN,也就是无效的数,而我的串口发送程序需要一个和一个数 float a 建立关系,数 float a 一直是一个无效的数,那么这个函数也就不被调用了!
   后来查资料是这么说的    ” 未初始化的数据 .ebss存储单元可以在程序的执行过程中被改变和操作,与程序代码或者常量不同的是,未初始化的数据或者变量必须位于易失性的存储区之中,例如RAM“
看来CMD文件一般不要改啊,一不小心就给改错了!
页: [1] 2
查看完整版本: DSP程序在RAM中正常运行,FLASH烧写不行