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

[复制链接]
 楼主| 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可否再指教一二。
谢谢!
 楼主| lxl_0598 发表于 2010-6-2 22:58 | 显示全部楼层
大家帮帮忙啊
ayb_ice 发表于 2010-6-3 08:13 | 显示全部楼层
最好的方法还是一步一步调试
 楼主| lxl_0598 发表于 2010-6-3 08:54 | 显示全部楼层
没有仿真器 一步一步调试 很难啊,还有没有其他的办**
ayb_ice 发表于 2010-6-3 09:06 | 显示全部楼层
还有一个方法
先改回压缩模式,将新加的程序部分<变量,函数...>改成显示声明即可
 楼主| lxl_0598 发表于 2010-6-3 09:30 | 显示全部楼层
显示声明
是什么意思,可否举个例子?
是先声明,在定义是吗?
比如
void Send(unsigned char x);
......
.....
void Send(unsigned char x)
{
//code
.........
..........
}

是这样的吗?
谢谢
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);
  }
 楼主| 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 感谢楼主把问题拿出来和大家交流。并且有始 ...

查看全部评分

 楼主| lxl_0598 发表于 2010-6-7 19:58 | 显示全部楼层
哎 还有其他事情要继续纠结:(
 楼主| lxl_0598 发表于 2010-6-7 20:03 | 显示全部楼层
哎 别人的娃啊 不好养。

一直在维护前人写的程序。
aihe 发表于 2010-6-7 21:27 | 显示全部楼层
别说,人家维护你的程序可能也觉得困难
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

16

主题

225

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部
个人签名:门里的一只小虫......

16

主题

225

帖子

1

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