[ZLG-ARM] 着急!DebugInChipFlash就变成这个样子!

[复制链接]
3443|15
 楼主| GWY_ARM 发表于 2007-11-25 03:33 | 显示全部楼层 |阅读模式
&nbsp;&nbsp;我做的板子用LPC2214,外扩4MB&nbsp;FLASH和外扩256K&nbsp;SRAM。<br />使用EasyARM2200开发板(去年年中时候买的)附送光盘&lt&ltLPC2200&nbsp;Project&nbsp;module_new&gt&gt文件夹中的工程模版,uCOS2系统。<br /><br />&nbsp;&nbsp;在外部RAM运行一切正常,烧写到外部FLASH运行也一切正常,。可是DebugInChipFlash或RelInChip出现了如下情况:<br />(1)系统时钟好像快了大约4倍,体现在用OSTimeDly()函数延时控制LED闪烁上的观察;<br />(2)I2C总线采用中断方式,可总是死在“while(I2C_end&nbsp;==&nbsp;0);”<br />(3)UART0不停地往外发送数据,无论串口监控工具波特率设置为多少总是不断收到数据,多为0x00;<br />(4)可是别的部分正常,能正确通过UDP下发点阵字库写入外部FLASH并在LCD上正确显示,只是ping网络的时候返回时间比在外部RAM或外部FLASH运行时候快了大约4倍。<br /><br />比较怀疑是LPC2200工程模版的问题,可是又不方便换成LPC2100的模版,因为有外扩RAM。&nbsp;<br />所有程序已经全部在外部RAM调试完毕只差固化到片内FLASH这最后这一步了,求大家帮帮忙。
 楼主| GWY_ARM 发表于 2007-11-25 03:44 | 显示全部楼层

请大家帮忙想想解决办法

&nbsp;&nbsp;在片内FLASH运行不正常是不是LPC2200工程模版的问题,今晚是这周第四晚熬到3点半了,明早还得去公司无偿加班,,,
armecos 发表于 2007-11-25 09:31 | 显示全部楼层

把bin文件发给我,

注意是bin文件(不要发HEX文件),我帮你处理一下,看看能否正常运行。<br />如果能正常运行,你只要购买《ecos增值包》就可以解决固化到片内FLASH问题了。<br />asdjf@163.com<br />www.armecos.com<br /><br />我们以前解决过片外固化问题,想来片内固化也一样,先试试再说吧:<br /><br /><b>不能脱机运行问题的记录</b>
 楼主| GWY_ARM 发表于 2007-11-25 14:33 | 显示全部楼层

是不是LPC2200工程模版的问题?

&nbsp;&nbsp;楼上的老兄,先谢谢你!由于开发时间的紧迫,至少这个项目不可能改用你的《ecos增值包》。<br /><br />&nbsp;&nbsp;现在只差程序固化到片内FLASH这最后的问题,我希望能直接得到答案。在论坛里看到还有别的人遇到类似的问题,可是都没有得到好的解决办法。<br /><br />&nbsp;&nbsp;如果真的是LPC2200工程模版的问题,我想周立功公司的人肯定可以解决的,说不定LPC2200工程模版现在已经有升级版本,因为前些时候我在深圳高交会得知致远电子推出MiniARM系列工控模块的程序非常稳定,而且致远电子的人说他们的老板就是周立功。
armecos 发表于 2007-11-25 14:46 | 显示全部楼层

这个我也不清楚,

要试过再说,因为我用GNU工具开发,所以没有遇到这个问题,不过我们肯定可以正确固化到flash里运行。《ecos增值包》只是一个第三方的方案,用户可以多一种选择。
 楼主| GWY_ARM 发表于 2007-11-25 23:18 | 显示全部楼层

现在比较怀疑mem_c.scf文件设置不当

&nbsp;&nbsp;我是把LPC2200工程模板中的mem_c.scf文件修改成这个样子的,不知道是否正确:<br />ROM_LOAD&nbsp;0x00000000<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;ROM_EXEC&nbsp;0x00000000<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Startup.o&nbsp;(vectors,&nbsp;+First)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;(+RO)<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;IRAM&nbsp;0x40000040<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Startup.o&nbsp;(MyStacks)<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;STACKS_BOTTOM&nbsp;+0&nbsp;UNINIT<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Startup.o&nbsp;(StackBottom)<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;STACKS&nbsp;0x40004000&nbsp;UNINIT<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Startup.o&nbsp;(Stacks)<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;ERAM&nbsp;0x81000000<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;(+RW,+ZI)<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;HEAP&nbsp;+0&nbsp;UNINIT<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Startup.o&nbsp;(Heap)<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;HEAP_BOTTOM&nbsp;0x81040000&nbsp;UNINIT<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Startup.o&nbsp;(HeapTop)<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br />请周工帮助看一下,,,
kukucat 发表于 2007-11-26 08:14 | 显示全部楼层

顶你

  
yongtree 发表于 2007-11-26 12:57 | 显示全部楼层

模板出问题的可能性不大

烧一个光盘上的例子程序试试,<br />你所说的速度快,是不是之前外部总线速率没有配置。模板里总线速度好像都是最低配置。时钟频率不该差别那么大吧
lpf336 发表于 2007-11-26 13:02 | 显示全部楼层

bank0 是flash还是ram?

  
 楼主| GWY_ARM 发表于 2007-11-26 15:34 | 显示全部楼层

问题找到了根源,可是还是未能解决。

&nbsp;&nbsp;谢谢大家的支持!我的外部RAM和外部FLASH地址是可以跳线调换的,最终应用目的是程序固化到内部FLASH,bank0为外部FLASH(不存放代码,仅存数据),bank1为外部RAM。<br /><br />&nbsp;&nbsp;我上午打了电话到致远电子,技术支持人员说模板不会有问题,建议我把程序简化然后再测试一下。我照着做了,发现当我把Eint0中断初始化函数注释掉时就运行正常了!<br /><br />&nbsp;&nbsp;我的程序使用了6个IRQ中断:Timer0中断、Timer1中断、Eint0中断、Uart0中断、Uart1中断、I2C中断。各个中断的优先级无冲突,并且各个中断都是在TaskStart任务中初始化的,为什么把Eint0中断注释掉就正常了呢?可是在外部RAM或外部FLASH运行时是全部正常的啊。<br /><br />&nbsp;&nbsp;我试过把Eint0中断初始化函数调用位置移到main函数中,故障依旧!<br /><br />&nbsp;&nbsp;我的Eint0中断初始化函数是这样写的:<br /><br />void&nbsp;ReadersInit(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;//EXINT0中断初始化<br />&nbsp;&nbsp;&nbsp;&nbsp;PINSEL1&nbsp;&nbsp;|=&nbsp;MBIT0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置管脚连接,P0.16设置为EINT0<br />&nbsp;&nbsp;&nbsp;&nbsp;EXTMODE&nbsp;&nbsp;|=&nbsp;MBIT0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置EINT0中断为边沿触发模式<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectCntl3&nbsp;=&nbsp;(0x20&nbsp;|&nbsp;0x0E);//&nbsp;EINT0中断通道优先级为3,并且属于向量IRQ<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectAddr3&nbsp;=&nbsp;(int)IRQ_Eint0;//&nbsp;设置EINT0中断服务程序地址向量&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;EXTINT&nbsp;=&nbsp;MBIT0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;清除EINT0中断标志<br />&nbsp;&nbsp;&nbsp;&nbsp;VICIntEnable&nbsp;|=&nbsp;MBIT14;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;使能EINT0中断<br />}
 楼主| GWY_ARM 发表于 2007-11-26 15:41 | 显示全部楼层

zlg的技术支持人员怎么还不出现啊

&nbsp;&nbsp;论坛的技术支持人员怎么还不出现啊???难道今天也放假吗?可是电话技术支持人员今天是在正常上班的啊!即使没能力解决问题也应该表个态啊!
wlq_9 发表于 2007-11-26 16:13 | 显示全部楼层

外部中断

的BUG.看errdata.设置EXTMODE的时候,会修改到VPBDIV.<br />你不是第一个碰到的了,还有就是外部中断设置成特定的值时,也会不正常,真不知道怎么设计的.
 楼主| GWY_ARM 发表于 2007-11-26 16:39 | 显示全部楼层

先谢谢楼上老兄的热心指导

&nbsp;&nbsp;感谢楼上老兄的热心指导,可我还是不明白,您的意思是不是说不可以在这个初始化函数中设置EXTMODE以免修改了VPBDIV?那么EXTMODE应该在哪里修改呢?另外,您所说的“外部中断设置成特定的值时,也会不正常”这句话我没能理解。<br />&nbsp;&nbsp;麻烦您进一步指导我该如何修改这段代码,这段代码是参考&lt&lt实验教程一&gt&gt105页的,现在你说有bug我真的无从下手了。
 楼主| GWY_ARM 发表于 2007-11-26 16:53 | 显示全部楼层

请求wlq_9兄,指导下我该如何修改初始化代码,,,

  
lyl831015 发表于 2007-11-26 19:03 | 显示全部楼层

勘误表

你可以到网上下载2214的勘误表看一下。外部中断自身是存在BUG。
 楼主| GWY_ARM 发表于 2007-11-26 19:08 | 显示全部楼层

问题解决了,再次谢谢wlq_9兄!

&nbsp;&nbsp;原来是芯片的BUG,在得到提醒之前没料到会是这个原因,因为开发板附带的书籍没有提及到这个BUG,惊讶的是连书籍中的例子程序也没有处理这个BUG!难怪把我买的7本zlg书籍翻了个遍、把模版程序不同版本逐行比对也找不出个所以来。<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;另外,很感谢致远电子的电话技术支持人员,非常的热心和耐心,与论坛技术支持人员摆的冷敖姿势形成鲜明的对比!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

26

帖子

0

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