打印

求助,关于LPC单片机的一个奇怪的问题

[复制链接]
1977|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lxl_0598|  楼主 | 2010-5-31 22:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
事情是这样的,公司有一款产品用的是P89LPC931 RAM512 byte FLASH 8K,现在要求在原有基础上增加些功能,因为FLASH用完了,所有改用P89LPC936 RAM一样大小 FLASH 16K,加了第一个功能后验证OK,加第二功能后原来的功能受到影响发生变化,(没有逻辑上的错误),但是当改变KEIL中CODE的编译模式时由LARGE 改为COMPACT模式时原先的功能可以正常使用,但新增加的功能仍有问题,很是郁闷,有经验的兄弟们出来指教下。 都郁闷好几天了:dizzy:

相关帖子

沙发
lxl_0598|  楼主 | 2010-5-31 22:34 | 只看该作者
对了由于没有仿真器,所以才这么郁闷,不知道程序往哪里跑啊.

使用特权

评论回复
板凳
ayb_ice| | 2010-6-1 09:03 | 只看该作者
现象已经找到
你就用压缩模式吧
这种情况可能是变量引起的
比如以前某个变量默认是PDATA,某些地方使用了显示强制指针变换,现在变量默认XDATA,结果显示强制指针变换
还是PDATA,那当然出错...

使用特权

评论回复
地板
lxl_0598|  楼主 | 2010-6-2 22:05 | 只看该作者
前两天出差了,今晚才回来,使用COMPACT模式,仍然存在问题啊,就是新增加的功能无法实现。
ayb_ice可否再指教一二。
谢谢!

使用特权

评论回复
5
lxl_0598|  楼主 | 2010-6-2 22:58 | 只看该作者
大家帮帮忙啊

使用特权

评论回复
6
ayb_ice| | 2010-6-3 08:13 | 只看该作者
最好的方法还是一步一步调试

使用特权

评论回复
7
lxl_0598|  楼主 | 2010-6-3 08:54 | 只看该作者
没有仿真器 一步一步调试 很难啊,还有没有其他的办**

使用特权

评论回复
8
ayb_ice| | 2010-6-3 09:06 | 只看该作者
还有一个方法
先改回压缩模式,将新加的程序部分<变量,函数...>改成显示声明即可

使用特权

评论回复
9
lxl_0598|  楼主 | 2010-6-3 09:30 | 只看该作者
显示声明
是什么意思,可否举个例子?
是先声明,在定义是吗?
比如
void Send(unsigned char x);
......
.....
void Send(unsigned char x)
{
//code
.........
..........
}

是这样的吗?
谢谢

使用特权

评论回复
10
ayb_ice| | 2010-6-3 09:59 | 只看该作者
#pragma small         /* Default to small model */

extern int calc (char i, int b) large reentrant;
extern int func (int i, float f) large;
extern void *tcp (char xdata *xp, int ndx) compact;


int mtest (int i, int y)            /* Small model */
  {
  return (i * y + y * i + func(-1, 4.75));
  }


int large_func (int i, int k) large /* Large model */
  {
  return (mtest (i, k) + 2);
  }

使用特权

评论回复
11
lxl_0598|  楼主 | 2010-6-7 19:57 | 只看该作者
问题已经解决了。
是这样的,程序中用到了LPC900单片机的IAP功能,原先的程序把一些变量存在了LPC931地址的末端,1FFF处; 新的程序>8K,所以程序在运行过程当中,1FFF处被改写,导致了程序变化; COMPACT编译模式,与LARGE编译模式在1FFF处的内容不同,某种巧合下,COMPACT模式下烧写的程序看似正常,LARGE模式下烧写的程序不正常,实际上两种编译模式都不正常,只是故障表现不同而已。
把IAP功能中用到的地址放到LPC936(16K)的末端,程序正常运行。

纠结了好几天,这件事总算搞定。

另外谢谢ayb_ice

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
救火车 + 2 感谢楼主把问题拿出来和大家交流。并且有始 ...
12
lxl_0598|  楼主 | 2010-6-7 19:58 | 只看该作者
哎 还有其他事情要继续纠结:(

使用特权

评论回复
13
lxl_0598|  楼主 | 2010-6-7 20:03 | 只看该作者
哎 别人的娃啊 不好养。

一直在维护前人写的程序。

使用特权

评论回复
14
aihe| | 2010-6-7 21:27 | 只看该作者
别说,人家维护你的程序可能也觉得困难

使用特权

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

本版积分规则

个人签名:门里的一只小虫......

16

主题

225

帖子

1

粉丝