打印

PICC18的编译器编译速度很慢

[复制链接]
4196|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
startt|  楼主 | 2013-4-23 21:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
原先使用的是V9.50的。一切都正常。更新了编译器V9.80(已)以后,同样的程序,编译速度非常的慢。而且慢的不是一丁点。有时候根本编译一半没动。就是在提示warning后,就停在那,等了十几分钟后一直不动。
请问该如何解决
沙发
dogglove| | 2013-4-24 09:44 | 只看该作者
没有碰到过,能否用其他计算机安装后再试试

使用特权

评论回复
板凳
baoshi_libo| | 2013-4-24 12:23 | 只看该作者
在用9.80 没发现编译慢的情况

使用特权

评论回复
地板
yewuyi| | 2013-4-24 13:45 | 只看该作者
可能和计算机其它什么程序冲突了,关闭掉反病毒软件等试试。

使用特权

评论回复
5
startt|  楼主 | 2013-4-24 15:54 | 只看该作者
yewuyi 发表于 2013-4-24 13:45
可能和计算机其它什么程序冲突了,关闭掉反病毒软件等试试。

谢谢!现在很麻烦。发觉用LITE版本就不会有问题。用PRO版本就会有问题。没头绪啊,但是用LITE版本编译出来的程序有问题,定时时间都不对。现在把原来的V9.50也删除了。旧程序现在无法编译,很头痛。

使用特权

评论回复
6
yewuyi| | 2013-4-24 17:22 | 只看该作者
编译后的代码执行有问题,排除编译器BUG的情况下,多数都是自己的代码编写能力较低造成的。

定时时间不准确,不知道你的定时是如何做的?如果是通过软件计算指令执行周期这样的方式的话,因为中断的作用,不准确是很正常的,开定时器中断。

使用特权

评论回复
7
startt|  楼主 | 2013-4-24 22:06 | 只看该作者
yewuyi 发表于 2013-4-24 17:22
编译后的代码执行有问题,排除编译器BUG的情况下,多数都是自己的代码编写能力较低造成的。

定时时间不准 ...


用LITE编译后不止时间不准,按键啥的都没反应了。不是说用LITE版本的编译功能都是一样的吗,我看了PICC的介绍也是这样的。因为时间比较急,也没具体分析。。请大家再帮我分析下原因谢谢!
用LITE编译后的一些信息如下:
Build E:\work\M203\M203 for device 18F8627
Using driver C:\Program Files\HI-TECH Software\PICC-18\9.80\bin\picc18.exe
HI-TECH C Compiler for PIC18 MCUs (Lite Mode)  V9.80
Copyright (C) 2011 Microchip Technology Inc.
Serial number: HCPIC18P-12345 (PRO)
Advisory[1233] Employing 18F8627 errata work-arounds:
Advisory[1234]  * Corrupted fast interrupt shadow registers
Warning [1413] E:\work\M203\M203\display.c; 303. "ROM" is positioned at address 0x0 and has had its address taken; pointer comparisons may be invalid

Running this compiler in PRO mode, with Omniscient Code Generation enabled,
often produces code which is 60% smaller and at least 400% faster than in
Lite mode. The HI-TECH C PRO compiler output for this code could be
64723 bytes smaller and run 4 times faster.
See http://www.microchip.com for more information.
Loaded E:\work\GI\pic\Debug\GI__Pump_V1.0(20130306)\GI__Pump_V1.0(20130306).cof.
********** Build successful! **********

从上面的编译信息也只是提醒LITE版本编译只是在代码优化方面,编译速度方面有差别而已,编译出来程序应该不会被阉割的不是的吗
以下是用PRO版本编译的一些信息:
Build E:\work\U203\pic\U203 for device 18F8627
Using driver C:\Program Files\HI-TECH Software\PICC-18\9.80\bin\picc18.exe
HI-TECH C Compiler for PIC18 MCUs (PRO Mode)  V9.80
Copyright (C) 2011 Microchip Technology Inc.
Serial number: HCPIC18P-12345 (PRO)
Advisory[1233] Employing 18F8627 errata work-arounds:
Advisory[1234]  * Corrupted fast interrupt shadow registers
Warning [1413] E:\work\M203\M203\display.c; 303. "ROM" is positioned at address 0x0 and has had its address taken; pointer comparisons may be invalid
编译到此处后,就不动了。难道是因为我程序的问题吗。旧的V9.50就可以正常使用啊。
还有,编译时提到的Warning [1413] E:\work\M203\M203\display.c; 303. "ROM" is positioned at address 0x0 and has had its address taken; pointer comparisons may be invalid
。我现在也还是没找出来是为什么。
程序相关部分是这样的:
const *display_data;  // 定义显示数据
display_data="Yes";//
请问一下这样编写是不是不规范呢。还重新翻了C语言的书,也还是没发现错在哪里啊。
请指点下,谢谢


使用特权

评论回复
8
yewuyi| | 2013-4-25 08:51 | 只看该作者
你在哪本书教你这些写的呢?难道你是在根据葵花宝典编写这样的代码?

const *display_data;  // 定义显示数据
display_data="Yes";//

使用特权

评论回复
9
startt|  楼主 | 2013-4-25 10:07 | 只看该作者
yewuyi 发表于 2013-4-25 08:51
你在哪本书教你这些写的呢?难道你是在根据葵花宝典编写这样的代码?

const *display_data;  // 定义显示 ...

是这样,刚刚写错了
const uchar *display_data;  // 定义显示数据
display_data="Yes";//
这样有错吗。请指点下,谢谢

使用特权

评论回复
10
yewuyi| | 2013-4-25 10:31 | 只看该作者
请对照书法规则自己检查,这个不是别人帮你检查的。

千万别依靠编译器的AUTO类型。

使用特权

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

本版积分规则

3

主题

41

帖子

1

粉丝