打印
[ZLG-ARM]

lpc2131运行程序不稳定

[复制链接]
1726|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kkddyy|  楼主 | 2008-3-13 11:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    我使用的是EasyARM2131开发板,ARM Executable Image for lpc2131模板。晶振连接在振荡模式。
    开始我在开发版上接24.576MHz的晶振时,程序执行时非常不稳定,有的段可以说是乱七八糟。百思不得其解。后来我把晶振换为11.0592MHz,没想到稳定了许多,但问题还是没有完全解决。比如这里 if(timer) b++;(注:已经确定tiner==1)但后面的语句( b++;)就是没有得到执行。奇怪,真奇怪!小弟入道尚浅,技术不精,恳请各位前辈指点迷津。这到底是什么问题,何方神圣作的怪?

相关帖子

沙发
kkddyy|  楼主 | 2008-3-13 11:35 | 只看该作者

等待您的指点。。。

自己先定一个。。。

使用特权

评论回复
板凳
zlgarm| | 2008-3-13 13:43 | 只看该作者

LPC2131

kkddyy 您好:

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

使用特权

评论回复
地板
zlgarm| | 2008-3-13 14:17 | 只看该作者

代码没有运行问题

kkddyy 您好:

b++;可能被编译器优化了。您可以在定义b时加 volatile。如: 
volatile uint8 b = 0;

                                                                                                                      On duty: zlgarm_Zhangxiaomeng

使用特权

评论回复
5
kkddyy|  楼主 | 2008-3-14 00:54 | 只看该作者

还是不行

芯片换了,程序也改了。但还是不行!这究竟是什么原因?有没有谁碰过类似的问题没有?

使用特权

评论回复
6
tubie| | 2008-3-14 08:08 | 只看该作者

估计是优化的原因

你可以再加上一句:“x = b;”估计那个++语句就生效了。

使用特权

评论回复
7
kkddyy|  楼主 | 2008-3-14 11:18 | 只看该作者

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

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

使用特权

评论回复
8
armecos| | 2008-3-14 12:08 | 只看该作者

我们有解决方案,

可以使你的程序正常,不过我们使用的GNU开发工具,但99%把握也能使你的keil程序也正常,就是程序在片上片外flash里都运行正常,前提是你能保证你的程序在RAM里运行正常。

《ecos增值包》

使用特权

评论回复
9
tubie| | 2008-3-14 20:34 | 只看该作者

降低频率试试看。

使用特权

评论回复
10
zheng79| | 2008-3-16 15:28 | 只看该作者

在ram中行,在flahs中不行

是不是remap不正确

使用特权

评论回复
11
wlsui| | 2008-3-16 19:06 | 只看该作者

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

使用特权

评论回复
12
kkddyy|  楼主 | 2008-3-17 14:36 | 只看该作者

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

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

使用特权

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

本版积分规则

1

主题

5

帖子

0

粉丝