每次运行程序都会跑飞

[复制链接]
2258|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 | 显示全部楼层
这个头文件中包含的内容是定义了一些比较大的数组,在调试过程中观察内存数据,发现这些数组中的数据竟然不是初始定义的数值
yszong 发表于 2016-8-18 22:51 | 显示全部楼层
在程序中没有对这些数组进行任何操作?
 楼主| dengdc 发表于 2016-8-18 22:52 | 显示全部楼层
嗯,而是与相应的0x008000区域的数值一样
wuhany 发表于 2016-8-18 22:53 | 显示全部楼层
请问楼上这个是为什么吗?我不是很懂啊
 楼主| dengdc 发表于 2016-8-18 22:55 | 显示全部楼层
举例来说,假如数组Data_A实际分配的地址可能是0x3F8100~0x3F8200,运行程序并把Data_A拖到watch窗口中观察,这个数组里的数据数值与地址为0x008100~0x008200的saram区域的数值相同。
lizye 发表于 2016-8-18 22:56 | 显示全部楼层
楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因
shimx 发表于 2016-8-18 22:56 | 显示全部楼层
如果确实嫌内存小,那么就需要外扩内存
jiaxw 发表于 2016-8-18 22:57 | 显示全部楼层
,不过外扩的内存读写速度会比片内内存慢很多。
spark周 发表于 2016-8-18 22:59 | 显示全部楼层
一部分一部分调可以,放在FLASH中调也可以,放在外部RAM中调也可以。
liliang9554 发表于 2016-8-18 22:59 | 显示全部楼层

FLASH的烧写寿命有50000多次,可以放在FLASH中调,只不过电脑要快一点,仿真器要好一点
午夜粪车 发表于 2016-8-18 23:00 | 显示全部楼层
嗯,否则每次烧写FLASH都要几十秒也蛮浪费时间的。
zhaoxqi 发表于 2016-8-18 23:00 | 显示全部楼层
放在外部RAM中程序会运行的比较慢,把初始化程序,不太用到的数据放到外部RAM,内部RAM中放中断程序,这种有实时性要求的程序
 楼主| dengdc 发表于 2016-8-18 23:01 | 显示全部楼层
嗯,预料中的结果,先结贴吧,多谢大家啦
Thorald 发表于 2016-8-19 10:32 | 显示全部楼层
不行就外扩内存
smilingangel 发表于 2016-8-19 22:57 | 显示全部楼层
这个一是设计合理的程序结构的,
smilingangel 发表于 2016-8-19 22:57 | 显示全部楼层
另一个就是注意程序当中的循环结构设计的,还有就是多学着优化程序的
zhangbo1985 发表于 2016-8-21 19:17 | 显示全部楼层
是不是死你的SARAM片区的发生了数据溢出导致的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

892

主题

13885

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部