[ZLG-ARM] lpc2131运行程序不稳定

[复制链接]
 楼主| 发表于 2008-3-13 11:26 | 显示全部楼层 |阅读模式
&nbsp;&nbsp;&nbsp;&nbsp;我使用的是EasyARM2131开发板,ARM&nbsp;Executable&nbsp;Image&nbsp;for&nbsp;lpc2131模板。晶振连接在振荡模式。<br />&nbsp;&nbsp;&nbsp;&nbsp;开始我在开发版上接24.576MHz的晶振时,程序执行时非常不稳定,有的段可以说是乱七八糟。百思不得其解。后来我把晶振换为11.0592MHz,没想到稳定了许多,但问题还是没有完全解决。比如这里&nbsp;if(timer)&nbsp;b++;(注:已经确定tiner==1)但后面的语句(&nbsp;b++;)就是没有得到执行。奇怪,真奇怪!小弟入道尚浅,技术不精,恳请各位前辈指点迷津。这到底是什么问题,何方神圣作的怪?
 楼主| 发表于 2008-3-13 11:35 | 显示全部楼层

等待您的指点。。。

自己先定一个。。。
发表于 2008-3-13 13:43 | 显示全部楼层

LPC2131

kkddyy&nbsp;您好:<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;对于LPC213x芯片来说,一般输入时钟被限制为10~25MHz内。您用我们工程模板的话,在config.h中,有一个系统晶振数值,默认为11.0592MHz,这个与开发板是配套的,系统其他地方的时钟都是基于此设置。所以,您改换晶振后,会出现程序错误。<br />&nbsp;&nbsp;&nbsp;&nbsp;在模板中,系统时钟默认是晶振频率的4倍,而该芯片最大工作频率为60MHz,由于您前期更换晶振,导致芯片在严重超频下工作,可能内部已有些损坏,在运行跳转语句时就容易出错。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;建议您可以更换一个芯片,再试。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;by&nbsp;zlgarm_zhanghuping
发表于 2008-3-13 14:17 | 显示全部楼层

代码没有运行问题

kkddyy&nbsp;您好:<br /><br />b++;可能被编译器优化了。您可以在定义b时加&nbsp;volatile。如:&nbsp;<br />volatile&nbsp;uint8&nbsp;b&nbsp;=&nbsp;0;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;On&nbsp;duty:&nbsp;zlgarm_Zhangxiaomeng
 楼主| 发表于 2008-3-14 00:54 | 显示全部楼层

还是不行

芯片换了,程序也改了。但还是不行!这究竟是什么原因?有没有谁碰过类似的问题没有?
发表于 2008-3-14 08:08 | 显示全部楼层

估计是优化的原因

你可以再加上一句:“x&nbsp;=&nbsp;b;”估计那个++语句就生效了。
 楼主| 发表于 2008-3-14 11:18 | 显示全部楼层

情况很糟糕,后果很严重!o(∩_∩)o...

昨天照着3楼的意思把芯片换了,还是不行啊!真奇怪了!现在同样一个程序,我在RAM上仿真运行时,一切OK。但是下载到片上Flash去运行时,程序运行乱七八糟,最后要么取数据终止要么取指令终止。<br />&nbsp;&nbsp;&nbsp;&nbsp;请问:这到底是什么问题呢?难道是那里的设置有问题?&nbsp;(注:ARM&nbsp;Executable&nbsp;Image&nbsp;for&nbsp;lpc2131模板,&nbsp;晶振:11.0592MHz)&nbsp;还是硬件的问题呢?&nbsp;&nbsp;不会只在下一个人碰见这样郁闷的问题吧?&nbsp;这接下来工作根本没法继续了啊!&nbsp;各位帮忙讨论讨论,在下不胜感激!!!THANKS
发表于 2008-3-14 12:08 | 显示全部楼层

我们有解决方案,

可以使你的程序正常,不过我们使用的GNU开发工具,但99%把握也能使你的keil程序也正常,就是程序在片上片外flash里都运行正常,前提是你能保证你的程序在RAM里运行正常。<br /><br /><b>《ecos增值包》</b>
发表于 2008-3-14 20:34 | 显示全部楼层

降低频率试试看。

  
发表于 2008-3-16 15:28 | 显示全部楼层

在ram中行,在flahs中不行

是不是remap不正确
发表于 2008-3-16 19:06 | 显示全部楼层

为什么不仔细看下4楼的话

  
 楼主| 发表于 2008-3-17 14:36 | 显示全部楼层

多谢各位的关心!问题找出来了。

是存储器加速模块设置的问题。周工模板的系统时钟高于40MHz时,man定时寄存器设为MAMTIM=3。我当时想,既然在RAM上运行可以,在FLASH就不行,肯能就是因为FLASH的速度跟不上的问题。我就试改着MAMTIM=7,结果真的就OK了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

5

帖子

0

粉丝
快速回复 返回顶部 返回列表