打印

每次运行程序都会跑飞

[复制链接]
2005|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dengdc|  楼主 | 2016-8-18 22:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在用TMS320F28335做项目,编写程序时一直都将程序以及数据分配到0x8000~0xFFFF(SARAM)片区,以往的调试过程中也没遇到什么问题,但是由于这次编写的程序量比较大,这个片区已经存放不下了,因此,前两天我把数据存放到0x3F8000~0x3FBFFF(SARAM)片区,但是CMD文件修改好以后,每次运行程序都会跑飞

相关帖子

沙发
zhanghqi| | 2016-8-18 22:47 | 只看该作者
然后呢?你是怎么应对这个的呢

使用特权

评论回复
板凳
dengdc|  楼主 | 2016-8-18 22:48 | 只看该作者
后来我又做了一个测试程序,这个程序内容很少,但是发现一个奇怪的现象,只要包含main.h这个头文件,程序就会跑飞。

使用特权

评论回复
地板
dengdc|  楼主 | 2016-8-18 22:49 | 只看该作者
这个头文件中包含的内容是定义了一些比较大的数组,在调试过程中观察内存数据,发现这些数组中的数据竟然不是初始定义的数值

使用特权

评论回复
5
yszong| | 2016-8-18 22:51 | 只看该作者
在程序中没有对这些数组进行任何操作?

使用特权

评论回复
6
dengdc|  楼主 | 2016-8-18 22:52 | 只看该作者
嗯,而是与相应的0x008000区域的数值一样

使用特权

评论回复
7
wuhany| | 2016-8-18 22:53 | 只看该作者
请问楼上这个是为什么吗?我不是很懂啊

使用特权

评论回复
8
dengdc|  楼主 | 2016-8-18 22:55 | 只看该作者
举例来说,假如数组Data_A实际分配的地址可能是0x3F8100~0x3F8200,运行程序并把Data_A拖到watch窗口中观察,这个数组里的数据数值与地址为0x008100~0x008200的saram区域的数值相同。

使用特权

评论回复
9
lizye| | 2016-8-18 22:56 | 只看该作者
楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因

使用特权

评论回复
10
shimx| | 2016-8-18 22:56 | 只看该作者
如果确实嫌内存小,那么就需要外扩内存

使用特权

评论回复
11
jiaxw| | 2016-8-18 22:57 | 只看该作者
,不过外扩的内存读写速度会比片内内存慢很多。

使用特权

评论回复
12
spark周| | 2016-8-18 22:59 | 只看该作者
一部分一部分调可以,放在FLASH中调也可以,放在外部RAM中调也可以。

使用特权

评论回复
13
liliang9554| | 2016-8-18 22:59 | 只看该作者

FLASH的烧写寿命有50000多次,可以放在FLASH中调,只不过电脑要快一点,仿真器要好一点

使用特权

评论回复
14
午夜粪车| | 2016-8-18 23:00 | 只看该作者
嗯,否则每次烧写FLASH都要几十秒也蛮浪费时间的。

使用特权

评论回复
15
zhaoxqi| | 2016-8-18 23:00 | 只看该作者
放在外部RAM中程序会运行的比较慢,把初始化程序,不太用到的数据放到外部RAM,内部RAM中放中断程序,这种有实时性要求的程序

使用特权

评论回复
16
dengdc|  楼主 | 2016-8-18 23:01 | 只看该作者
嗯,预料中的结果,先结贴吧,多谢大家啦

使用特权

评论回复
17
Thorald| | 2016-8-19 10:32 | 只看该作者
不行就外扩内存

使用特权

评论回复
18
smilingangel| | 2016-8-19 22:57 | 只看该作者
这个一是设计合理的程序结构的,

使用特权

评论回复
19
smilingangel| | 2016-8-19 22:57 | 只看该作者
另一个就是注意程序当中的循环结构设计的,还有就是多学着优化程序的

使用特权

评论回复
20
zhangbo1985| | 2016-8-21 19:17 | 只看该作者
是不是死你的SARAM片区的发生了数据溢出导致的

使用特权

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

本版积分规则

892

主题

13885

帖子

7

粉丝